데이터베이스
[데이터베이스] 정규화란? 정규화의 이유와 종류
Hyun-danpung2
2022. 10. 19. 09:44
728x90
반응형
정규화란?
정규화(Normalization)은 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스
정규화의 이유?
- 중복을 배제하여 삽입, 삭제, 갱신 이상의 발생을 방지
- 각 릴레이션에 중복된 종속성을 여러개의 릴레이션에 분할
- 어떠한 릴레이션이라도 데이터베이스 내에서 표현 가능하게 함
- 데이터 삽입 시 릴레이션을 재구성할 필요성 감소
- 효과적인 검색 알고리즘 생성 가능
※ 삽입, 삭제, 갱신 이상
- 삽입 이상(Insertion Anomaly): 데이터 삽입 시 의도와 다른 값들도 삽입됨
- 삭제 이상(Delete Anomaly): 데이터 삭제 시 의도와 다른 값들도 연쇄 삭제됨
- 갱신 이상(Update Anomaly): 속성값 갱신 시 일부 튜플만 갱신되어 모순 발생
정규화의 종류
1. 1NF(First Normal Form)
- 1NF를 만족하려면 도메인이 원자값이어야 한다.
유저번호 | 유저ID | 수강명 | 성취도 |
1 | 김 가 | JS, 프론트 | 90%, 10% |
2 | 이 가 | Java, 백 | 7%, 8% |
1NF를 만족하지 않는 릴레이션
유저번호 | 유저ID | 수강명 | 성취도 |
1 | 김 가 | JS | 90% |
1 | 김 가 | 프론트 | 10% |
2 | 이 가 | Java | 7% |
2 | 이 가 | 백 | 8% |
1NF를 만족하는 릴레이션
2. 2NF(Second Normal Form)
- 2NF를 만족하려면 1NF를 만족하면서 부분 함수의 종속성이 제거되어야 한다(완전 함수 종속이어야 한다)
유저번호 | 유저ID | 수강명 | 성취도 |
1 | 김 가 | JS | 90% |
1 | 김 가 | 프론트 | 10% |
2 | 이 가 | Java | 7% |
2 | 이 가 | 백 | 8% |
2NF를 만족하지 않는 릴레이션
유저번호 | 유저ID |
1 | 김 가 |
2 | 이 가 |
유저ID | 수강명 | 성취도 |
김 가 | JS | 90% |
김 가 | 프론트 | 10% |
이 가 | Java | 7% |
이 가 | 백 | 8% |
2NF를 만족하는 릴레이션
3. 3NF(Third Normal Form)
- 3NF를 만족하려면 2NF를 만족하면서 이행적 함수 종속(transitivity)이 제거되어야 한다.
유저 ID | 등급 | 할인율 |
김 가 | 플래티넘 | 30% |
이 가 | 다이아 | 50% |
백 가 | 마스터 | 70% |
3NF를 만족하지 않는 릴레이션
유저 ID | 등급 |
김 가 | 플래티넘 |
이 가 | 다이아 |
백 가 | 마스터 |
등급 | 할인율 |
플래티넘 | 30% |
다이아 | 50% |
마스터 | 70% |
3NF를 만족하는 릴레이션
4. BCNF(Boyce-Codd Normal Form)
- BCNF를 만족하려면 3NF를 만족하면서 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키인 상태여야 한다.
학번 | 과목 | 교수 |
100 | 데이터베이스 | 홍길동 |
100 | 자료구조 | 임꺽정 |
200 | 네트워크 | 장영실 |
300 | 인공지능 | 유관순 |
BCNF를 만족하지 않는 릴레이션
학번 | 과목코드 |
100 | DB01 |
100 | DS01 |
200 | NW01 |
300 | AI01 |
과목코드 | 과목 | 교수 |
DB01 | 데이터베이스 | 홍길동 |
DS01 | 자료구조 | 임꺽정 |
NW01 | 네트워크 | 장영실 |
AI01 | 인공지능 | 유관순 |
BCNF를 만족하는 릴레이션
3NF vs BCNF
3NF | BCNF |
BCNF에 비해 덜 엄격하다 | 3NF에 비해 엄격하다 |
3NF를 만족하면 1NF, 2NF를 만족하는 상태이다 | BCNF를 만족하면 1NF, 2NF, 3NF를 만족하는 상태이다. |
BCNF에 비해 중복성이 높다 | 3NF에 비해 중복성이 낮다 |
무손실 분해(lossless decomposition)가 BCNF에 비해 쉽다 | 무손실 분해(lossless decomposition)가 3NF에 비해 어렵다 |
Reference
면접을 위한 CS 전공지식 노트
https://www.geeksforgeeks.org/difference-between-3nf-and-bcnf-in-dbms/
728x90
반응형