정규화 Normalization
개념적설계의 결과 > E-R다이어그램
E-R다이어그램 >> 스키마설계
- 이상현상이 발생하지 않도록, 릴레이션을 관련있는 속성들로만 구성하기 위해 릴레이션을 분해하는 과정이다.
- 속성들 간의 관련성
- 함수 종속성을 이용하여, 릴레이션을 연관성이 있는 속성들로만 구성되도록 분해하여 이상현상이 발생하지않는 릴레이션으로 만들어가는 과정이다.
부분 함수 종속이 되는게 좋지않다.
기본적으로 3정규형으로 만든다.
실무에서는 4,5차는 고려하지 않는다.
제 1정규형 (1NF) (First Normal Form)
- 릴레이션의 모든 속성이 더는 분해되지 않는 원자값만 가지면 제 1 정규형을 만족한다.
- 제 1 정규형을 만족하는 관계 데이터 베이스 릴레이션
- 부분 함수 종속 때문에 이상현상 발생
- 부분 함수 종속이 제거되도록 릴레이션 분해 > 제 2 정규형
1NF 이상현상 발생이유
: 기본키인 {고객아이디, 이벤트번호} 에
완전 함수 종속되지 못하고 일부분인 고객아이디에 종속되는 등급과 할인율 속성이 존재하기 때문이다.
문제해결 방법
--> 부분 함수 종족이 제거되도록 이벤트 참여 릴레이션을 분해한다. (분해된 릴레이션은 제 2정규형에 속하게 된다.)
제 2정규형 (2NF)
- 릴레이션이 제 1 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속되면 제 2 정규형을 만족함.
- 이행적 함수 종속이 존재하기 때문에 이상현상 발생.
- 이행적 함수 종속이 제거되도록 릴레이션 분해 > 제 3 정규형
2NF 이상현상 발생이유
: 이행적 함수 종속이 존재하기 때문이다.
X -> Y 와 Y -> Z가 존재하면 X -> Z가 성립한다. (Z가 X에 이행적으로 함수종속)
문제해결 방법
--> 이행적 함수 종속이 제거되도록 고객 릴레이션을 분해한다.
(분해된 릴레이션은 제 3정규형에 속하게 된다.)
제 3정규형 (3NF)
- 릴레이션이 제 2 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속되지 않으면 제 3 정규형을 만족함.
- 후보키가 아닌 결정자가 존재할 수 있고 이 때문에 이상현상이 발생할 수 있음.
- 후보키가 아닌 결정자가 제거되도록 릴레이션 분해 > 보이스/코드 정규형
보이스/코드 정규형 (BCNF)
- 하나의 릴레이션에 여러 개의 후보키가 존재하는 경우, 제 3 정규형까지 모두 만족해도 이상 현상이 발생할 수 있음.
- 보이스/코드 정규형은 제 3 정규형에 속하지만, 제 3 정규형에 속하는 모든 릴레이션이 보이스/코드 정규형에 속하는 것은 아님.
보이스/코드 정규형에 만족하지 않은 경우
정규화 된 BCNF 함수 종속 관계
제 4 정규형 (4NF)
릴레이션이 보이스/코드 정규형을 만족하면서, 함수 종속이 아닌 다치 종속을 제거하면 제 4 정규형이다.
제 5 정규형 (5NF)
릴레이션이 제 4 정규형을 만족하면서, 후보키를 통하지 않는 조인 종속을 제거하면 제 5 정규형에 속한다.
모든 릴레이션이 제 5 정규형에 속해야만 바람직한 것은 아니다.
일반적으로 제 3 정규형이나 보이스/코드 정규형에 속하도록 릴레이션을 분해하여 데이터 중복을 줄이고 이상 현상을 해결하는 경우가 많다.
예를들어 정규화된 릴레이션(많은 조인 발생)검색보다 반정규화 릴레이션 검색 속도가 더 빠르다.
✏️ 정처기 식 외우기
정규화 (두부이걸다조)
비정규 Relation
도 메인이 원자값
제 1 정규형
부 분 함수적 종속제거
제 2 정규형
이 행적 함수 종속제거
제 3 정규형
결 정자이면서 후보키가 아닌 것 제거
BCNF
다 치 종속 제거
제 4 정규형
조 인 종속성 이용
제 5 정규형