Database
Chapter 09. 정규화
JinWooHong Dev
2019. 11. 20. 13:58
1. 정규화의 개념과 이상 현상
1-1. 정규화의 개념
- 함수 종속성을 이용하여, 릴레이션을 연관성이 있는 속성들로만 구성되도록 분해해 이상 현상이 발생하지 않는 바람직한 릴레이션으로 만들어나가는 과정이다.
1-2. 이상 현상의 종류
- 삽입 이상 : 새 데이어를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제
- 갱신 이상 : 중복 투플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제
- 삭제 이상 : 투플을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제
1-3. 정규화의 필요성
- 관련 없는 속성들을 하나의 릴레이션에 모아두고 있어 이벤트참여 릴레이션에 여러 이상 현상이 발생한다. 이상 현상이 발생하지 않도록 하려면, 관련 있는 속성들로만 릴레이션을 구성해야 되는데 이를 위해 필요한 것이 정규화다.
2. 함수 종속
X -> Y ( X는 결정자, Y는 종속자)
- X가 Y를 함수적으로 결정한다.
- Y가 X에 함수적으로 종속되어 있다.
함수 종속 관계를 판단할 때 현재 시점에 릴레이션에 포함된 속성 값만으로 판단하면 안 된다는 것이다.
3. 기본 정규형과 정규화 과정
3-1. 정규형(Normal Form)이란?
- 릴레이션이 정규화된 정도이며 크게 기본 정규형과 고급 정규형으로 나뉜다.
- 기본 정규형에는 제1정규형, 제2정규형, 제3정규형, 보이스/코드 정규형이 있다.
- 고급 정규형에는 제4정규형, 제5정규형이 있다.
3-2. 제1 정규형
- 릴레이션에 속한 모든 속성의 도메인이 원자 값(Atomic Value)으로만 구성되어 있으면 제 1 정규형에 속한다.
3-3. 제2 정규형
- 릴레이션이 제1 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속되면 제2 정규형에 속한다.
3-4. 제3 정규형
- 릴레이션이 제2 정규형에 속하고 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않으면 제3 정규형에 속한다.
3-5. 보이스/코드 정규형
- 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키이면 보이스/코드 정규형에 속한다.
3-6. 제4 정규형과 제5 정규형
- 고급 정규형으로 분류되는 제4 정규형은 릴레이션이 보이스/코드 정규형을 만족하면서, 함수 종속이 아닌 다치 종속(MVD : Multi Valued Dependency)을 제거해야 만족할 수 있다. 그리고 제5 정규형은 릴레이션이 제4 정규형을 만족하면서 후보키를 통하지 않는 조인 종속(Join Dependency)을 제거해야 만족할 수 있다.
3-7. 정규화 과정 정리