데이터베이스

[데이터베이스] 정규화란? 정규화의 이유와 종류

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

https://ko.wikipedia.org/wiki/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4_%EC%A0%95%EA%B7%9C%ED%99%94

https://itwiki.kr/w/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4_%EC%A0%95%EA%B7%9C%ED%99%94

면접을 위한 CS 전공지식 노트

https://www.geeksforgeeks.org/difference-between-3nf-and-bcnf-in-dbms/

728x90
반응형