졸업 프로젝트를 진행하면서 데이터베이스를 공부하고 관계형 데이터 모델링을 좀 더 배우기 위해 강의를 수강하였다.
해당 강의는 아래와 같다.
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

- 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 |
|---|