개발 블로그

Database 설계 본문

Experience/UMC

Database 설계

카메얀짱 2024. 11. 19. 02:24

✏️ 학습 목표

1. SQL, NoSQL에 대해 알아보기

2. 데이터베이스 설계를 어떻게 하는 것이 좋은지 이해하기

3. 로컬 DB를 설치해서 연결해보기


🐢 시작 전, 기초 지식 참고 자료

https://velog.io/@taeha7b/mysql-in-a-nutshell

 

MySQL 기초 문법 정리

MySQL 기초 문법 간략 정리

velog.io

https://inpa.tistory.com/entry/DB-%F0%9F%93%9A-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%AA%A8%EB%8D%B8%EB%A7%81-1N-%EA%B4%80%EA%B3%84-%F0%9F%93%88-ERD-%EB%8B%A4%EC%9D%B4%EC%96%B4%EA%B7%B8%EB%9E%A8

 

📋 데이터 모델링 개념 & ERD 다이어그램 작성 💯 총정리

데이터 모델링 이란? 데이터 모델링이란 정보시스템 구축의 대상이 되는 업무 내용을 분석하여 이해하고 약속된 표기법에 의해 표현하는걸 의미한다. 그리고 이렇게 분석된 모델을 가지고 실제

inpa.tistory.com

 

🐢 SQL과 NoSQL

- SQL

    Structured Query Language : 관계형 데이터베이스를 사용하는 시스템에서 데이터를 관리하는 데 사용되는 언어이다. 입출력 속도 보다 정확도와 입출력이 중요할 때 적합하며 데이터가 일관되고 테이블 간의 관계가 잘 정의된 구조화된 데이터에 좋다.

    ➡️ SQL 쪽의 데이터베이스 시스템: MySQL, PostgreSQL, Oracle Database

 

- NoSQL

    Not Only SQL : SQL을 사용하지 않는 DBMS들을 의미한다. NoSQL 쪽의 데이터베이스는 키 값, 다큐먼트, 그래프 등 다양한 데이터 구조를 지원하기에 데이터가 미리 정의된 스키마를 따르지 않고 데이터 요소 간의 관계가 잘 정의되어 있지 않은 반정형 또는 비정형 데이터에 적합하다.
    ➡️ NoSQL 쪽의 데이터베이스 시스템: MongoDB, Redis, neo4j, DynamoDB

 

🐢 본문 내용

    데이터베이스의 설계 결과물은 ERD이다.
    ➡️ ERD 툴 추천: StarUML, AQueryTool

    ➡️ ERD는 프로젝트 시작과 동시에 설계하는 것이 좋다. 세세한 내용은 언제든지 바뀔 수 있기 때문에 처음부터 완벽하게 만들 필요는 없다.

 

- 데이터베이스 설계 시 주의사항

1. 테이블 이름과 칼럼의 이름은 모두 소문자로 정한다.

2. 단어 구분은 밑줄로 해주는 것이 좋다. (예를 들면, num_id)

3. 기본키를 위해 각 엔티티 정보 중 유일한 값을 기본키로 설정하기 보다 index를 'id'라고 따로 두는 것이 편하다.

4. 위에서 기본키로 설정한 id의 타입은 int가 아닌 bigint로 한다. (추후 서비스 확장을 고려해서..)

 

- 데이터베이스 설계 시 주요 타입

1. text 타입: String과 같이 길이 제한이 없는 타입

2. datetime(n) 타입: (n)은 밀리초 소수점 n자리까지 구분한다는 의미

 

- Hard Delete

    기능 구현 시, 회원 탈퇴나 게시글 삭제 등의 지우는 연산을 HTTP Method 중 Delete로 바로 삭제를 해버리는 방법
    ➡️ 이 방법은 지양하는 것이 좋다. (예를 들면 회원 탈퇴를 철회하는 유저가 생길 수도 있다.)

 

    ➡️ 일단 비활성 상태로 두고, 일정 기간동안 비활성인 경우 자동 삭제가 되도록 설계하기!!

 

- 그렇다면 자동 삭제는 어떻게 하나요?

    batch라는 것을 이용한다.

    ➡️ batch: 정해진 시간에 자동으로 실행되는 프로세스

    ➡️ batch를 사용하여 자동 삭제하는 것을 soft delete라고 한다. (HTTP Method 중 Patch)

 

🌠 데이터베이스 관련 용어

    와이어 프레임: 웹 사이트의 골격이나 애플리케이션의 사용자 인터페이스(UI) 및 핵심 기능을 나타내는 단순한 선과 도형으로 구성된 다이어그램 또는 다이어그램의 집합

 

    RDB (Relational DataBase): 관계형 데이터 모델에 기초를 둔 데이터베이스 (관계형 데이터베이스)

    ➡️ 외래키로 서로의 연관 관계를 표시한다.

 

🐢 데이터베이스 접속 툴

- DataGrip

https://m.blog.naver.com/wideeyed/222141637159

 

[DataGrip] Database IDE(통합개발환경) 데이터그립 설치 및 실습

JetBrains에서 만든 데이터베이스 통합개발환경툴인 "DataGrip"을 설치하고 간단하게 실습해...

blog.naver.com