CS 기본/DB
ERD와 정규화 과정
LTSGOD
2023. 9. 28. 21:20
본 포스팅은 '면접을 위한 CS 전공지식 노트'를 기반으로 작성되었습니다.
ERD(Entity Realationship Diagram)
- 데이터베이스를 구축할 때 가장 기초적인 뼈대 역할
- 릴레이션 간의 관계들을 정의
- 시스템의 요구사항을 기반으로 작성
- ERD를 기반으로 DB구축
- 비정형 데이터를 충분히 표현할 수 없다는 단점
예시
정규화 과정
- 릴레이션 간의 잘못된 종속 관계로 인한 이상현상을 제거하기 위함.
- 릴레이션을 여러 개로 분리하는 과정
- 정규형 원칙을 기반으로 정규형을 만들어 가는 과정
- 정규형(NF, Normal Form)
- 1, 2, 3, 보이스/코드 정규형 존재
이상(anomaly) 현상
- 삽입 이상 : 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제
- 갱신 이상 : 중복 튜플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제
- 삭제 이상 : 튜플을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제
정규화 원칙
- 무손실 분해
- 데이터의 중복성 감소
- 분리의 원칙
제 1 정규형
- 릴레이션의 모드 도메인이 더 이상 분해될 수 없는 원자 값(atomic value)만으로 구성되어야 한다.
- 릴레이션의 속성 값 중에서 한개의 기본키에 대해 두개 이상의 값을 가지는 반복 집합이 있으면 안됨.
제 2 정규형
- 릴레이션이 제 1정규형이며 부분 함수 종속을 제거한 형태
- 부분 함수 종속 제거: 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속적인 것
제 3 정규형
- 제 2 정규형이고 기본키가 아닌 모든 속성에 대해서 이행적 함수 종속을 만족하지 않는 상태
이행적 함수 종속
보이스/코드 정규형(BCNF)
- 제 3정규형이고 결정자가 후보키가 아닌 함수 종속 관계를 제거하여 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키인 상태를 말함
요구사항
- 결정자가 후보키가 아니므로 분리해야함.
- 그러나 정규형으로 바꾼다고 성능이 100%좋아지는 것은 아님
- 따라서 서비스에 따라 정규화 또는 비정규화 과정을 진행해야함.