Database

[DB] 관계형 데이터 모델링

pa_songsong 2021. 2. 13. 21:43

졸업 프로젝트를 진행하면서 데이터베이스를 공부하고 관계형 데이터 모델링을 좀 더 배우기 위해 강의를 수강하였다.

 

해당 강의는 아래와 같다.

www.youtube.com/watch?v=1d38YZKCM88&list=PLuHgQVnccGMDF6rHsY9qMuJMd295Yk4sa&index=1

 

수업에서 배운 내용을 간략하게 정리하였다.

 

- 모델링 : 어떤 목적을 가지고 진짜를 모방한 것

- 좋은 모델 : 목적에 부합하는 모방

- 데이터 모델링 : 현실의 복잡성을 컴퓨터에 담을 수 있는 방법론

 

- 데이터 모델링 과정 : 업무 파악 -> 개념적 모델링 -> 논리적 데이터 모델링 -> 물리적 데이터 모델링

 

1. 업무 파악

- 기획서 : ovenapp 사용 -> 새로운 프로젝트로 기획서 작성

 

2. 개념적 데이터 모델링

- ERD (Entity Relationship Diagram) : Entity 들의 관계를 나타낸 도표

- Entity -> Table , Attribute -> Column , Relation -> PK(Primary Key) , FK(Foreign key)

- Identifier : Entitiy의 속성 중 대표 뽑기

- Identifier의 역할 : 원하는 대상 타겟팅

- Identifier의 특징 : 중복 x

 

- Candidate Key (후보키) : Identifier가 될 수 있는 후보들 , Primary Key 가 될 수 있다.

- Primary Key (기본키) : 후보키 중 선택된 식별자 

- Alternate Key (대체키) : 기본키 아닌 다른 식별자들

- Composite Key (중복키) : 두개 식별자로 식별할 수 있는 식별자

- Foreign Key (외래키) : 외래에 있는 테이블과 연결할 때 사용하는 열쇠

 

- Cardinality (기수) : 1:1, 1:N, N:M

위에서부터 1:1, 1:N, N:M

- Optionality : 

1:1

1:N 은 ERD를 오버랩한 상태

 

※참고 : Entity Relationship Diagram Helper (erd.yah.ac/)

 

3. 논리적 데이터 모델링

- Normalization (정규화) : 정제되지 않은 데이터를 관계형 베이스에 어울리는 표로 만들어 주는 것.

- 제 1 정규화 (First Normal Form) : Atomic columns (원자적)

- 제 2 정규화 (Second Normal Form) : No partial dependencies (부분적 종속 x)

- 제 3 정규화 (Third Normal Form) : No transitive dependencies (이행적 종속 x)

 

4. 물리적 데이터 모델링

쿼리 성능 평가하고 병목 발생 지점 해결 방법에 아래와 같은 방법이 있다.

- index : 행에 대한 읽기 성능 향상, 대신 쓰기 성능 하락 -> 빠른 속도로 읽을 수 있음

- application에서 캐시 시도 -> 입력에 따른 실행결과 저장해 두었다가 나중에 동일 입력 들어올 경우 저장해둔 결과 사용해 DB에 부하주지 않는것.

위 두개를 시도했음에도 안될 경우 denormalization (역정규화 OR 반정규화) 사용

- denormalization : 정규화를 통해서 만든 이상적인 표를 성능이나 개발의 편의성을 위해 구조를 바꾸는 것

 

'Database' 카테고리의 다른 글

[DB] API에 아무 값도 안들어올 경우 해결  (0) 2021.07.16