본문 바로가기

CS/데이터베이스

정규화

Anomaly

1. 갱신 이상

Id Name Age Subject
1 홍길동 20 수학
2 홍길동 20 과학
Update School Set Age = 23 Where Id = 2

 

위와 같은 상황에서 ID 2번의 나이를 23로 바꾸면 홍길동의 나이가 20살인지 25살인지 알 수 없게 된다.

2. 삽입 이상

Id Name Age Subject
1 홍길동 20 수학
2 홍길동 20 과학
3 고길동 30 NULL

새로운 학생이 추가될 경우, 수강하는 과목이 없더라도 무엇이든 넣어야 삽입이 가능하다.

3. 삭제 이상

Id Name Age Subject
1 홍길동 20 수학
2 고길동 30 과학

홍길동을 삭제하면 수학이라는 과목의 정보도 같이 사라지게 된다.


정규화

위와 같은 이상 현상 및 데이터 중복을 최소화 하기 위해 일련의 normal forms(NF)에 따라 Relation DB를 구성하는 과정을 정규화라 한다.

Normal Forms
: 정규화가 되기 위해 준수해야 하는 규칙

 

정규화는 다음과 같은 단계로 구성되어 있다.

1NF > 2NF > 3NF > BCNF > 4NF > 5NF > 6NF

 

FD와 Key만으로 정의되는 NF는 BCNF까지이며, 앞 단계를 만족해야 다음 단계로 넘어갈 수 있다.

 

1NF

테이블의 컬럼이 원자 값을 갖도록 분리

ID 구매자 공연ID 사이트 등급 공연 제목 러닝 타임 좌석 가격
1 짱구 A1 인터파크 VIP 레베카 175분 A 150,000
2 짱구 B1 인터파크 VIP 프랑켄슈타인 180분 A 150,000
3 맹구 C1 인터파크 FAMILY 웃는 남자 180분 B 100,000
4 유리 D1 예스24 플레티넘 지킬앤하이드 170분 B 100,000
5 철수 D2 예스24 로얄 지킬앤하이드 170분 C 50,000
6 철수 A2 예스24 로얄 레베카 175분 C 50,000

2NF

non-prime attribute는 모든 key에 대해 완전 함수 종속을 만족하도록 테이블을 분해

완전 함수 종속
: 기본키의 부분집합이 결정자가 되어선 안된다는 것
ID 구매자 공연ID 사이트 등급 공연 제목 러닝 타임 좌석
1 짱구 A1 인터파크 VIP 레베카 175분 A
2 짱구 B1 인터파크 VIP 프랑켄슈타인 180분 A
3 맹구 C1 인터파크 FAMILY 웃는 남자 180분 B
4 유리 D1 예스24 플레티넘 지킬앤하이드 170분 B
5 철수 D2 예스24 로얄 지킬앤하이드 170분 C
6 철수 A2 예스24 로얄 레베카 175분 C
좌석 가격
A 150,000
B 100,000
C 50,000

 

 

 

3NF

이행적 종속 관계가 없도록 테이블을 분해

이행적 종속 관계
: A → B, B→C 인 경우 A → C가 성립되는 것

 

러닝 타임은 공연 제목에 종속되어 있고, 공연 제목은 공연 ID에 종속되어 있다. (공연 ID > 공연 제목 > 러닝 타임)

때문에 공연 ID만으로도 러닝 타임을 알 수 있는데, 이를 이행적 종속 관계라고 한다.

ID 구매자 공연ID 사이트 등급 공연 제목 좌석
1 짱구 A1 인터파크 VIP 레베카 A
2 짱구 B1 인터파크 VIP 프랑켄슈타인 A
3 맹구 C1 인터파크 FAMILY 웃는 남자 B
4 유리 D1 예스24 플레티넘 지킬앤하이드 B
5 철수 D2 예스24 로얄 지킬앤하이드 C
6 철수 A2 예스24 로얄 레베카 C
공연 제목 러닝 타임
레베카 175분
프랑켄슈타인 180분
웃는 남자 180분
지킬앤하이드 170분

 

좌석 가격
A 150,000
B 100,000
C 50,000

BCNF

모든 결정자가 후보키가 되도록 테이블을 분해하는 것

ID 구매자 공연ID 등급 공연 제목 좌석
1 짱구 A1 VIP 레베카 A
2 짱구 B1 VIP 프랑켄슈타인 A
3 맹구 C1 FAMILY 웃는 남자 B
4 유리 D1 플레티넘 지킬앤하이드 B
5 철수 D2 로얄 지킬앤하이드 C
6 철수 A2 로얄 레베카 C
등급 사이트
VIP 인터파크
FAMILY 인터파크
WELCOME 인터파크
플레티넘 YES24
골드 YES24
로얄 YES24 
공연 제목 러닝 타임
레베카 175분
프랑켄슈타인 180분
웃는 남자 180분
지킬앤하이드 170분
좌석 가격
A 150,000
B 100,000
C 50,000

 


정규화의 장단점

: 입력, 수정, 삭제 성능을 향상 시키지만 조회 시 Join을 유발하여 성능 저하가 발생 할 수도 있다.

 

반정규화 :: De-Nomalization

정규화 된 엔티티, 속성, 관계에 대해 시스템의 성능 향상과 개발/운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링 기법

'CS > 데이터베이스' 카테고리의 다른 글

데이터베이스  (0) 2025.06.12