공간정보아카데미

[dbmodeling-Normalization] 데이터모델링 정규화 실습

minjava 2025. 9. 9. 20:25

데이터 모델링 정규화

- 관계형 스키마를 더 좋은 구조로 정제해 나가는 과정이다. 속성 간 관계분석을 기반으로 일정한 조건을 만족하는 형태로 엔티티를 분해하는 과정이다.

 

제 1 정규화 Atomic Columns

- 복수의 속성 값을 갖는 속성을 분리하는 것 (중복과 반복을 없앰)

- 컬럼은 원자성을 가지며, 모든 속성은 값이 하나이다.

- 하나의 속성이 하나의 값을 가질 수 있도록 분해 (튜플 증가) -> 여러개의 속성 값을 갖는 속성을 다른 관계로 분해 (새로운 엔티티)

 

제 2 정규화 No partial dependencies (부분 종속성)

- 부분 함수적 종속관계를 제거하는 것

- 모든 속성은 반드시 주식별자 속성에 종속되어야 한다,

- 복합키가 구성되었을 때 부분적으로 종속된 속성을 분해 (새로운 엔티티 생성)

 

제 3 정규화 No transitive dependencies

- 이행 함수적 종속을 제거 (이행 규칙 : X->Y이고 Y->Z이면 X->Z 이다.)

- 주식별자를 제외한 나머지 속성들은 상호종속관계여서는 안됨.

- 식별자 외 속성들 간 종속이 존재하지 않도록 관계를 분해

 

보이스코드 정규화 Boyce-Codd NF

- BCNF는 제 3정규형 보다 강함.

- 즉, BCNF를 만족한다면 제3정규형도 만족 / 제3정규형만 만족하면 BCNF를 만족할지 살펴봐야됨.

- 모든 결정자는 주식별자가 되어야 함.

- 기본키가 둘 이상의 속성으로 구성된 합성키이고, 합성키가 둘 이상 존재하는 경우 이상현상을 방지하기 위해 고안

- 결정자 중 후보키를 제거하도록 테이블을 분해


정규화 예시

1차 정규화

2차 정규화

3차 정규화

 

 


1차 정규화

2차 정규화

3차 정규화