"
관계형 데이터베이스의 설계에서
중복을 최소화하게
데이터를 구조화하는 프로세스를
정규화(Normalization)라고 한다.
"
- 위키백과 -
정규화 안하면
정규화되지 않은 데이터베이스의 중복된 데이터는 데이터의 수정에 큰 비용이 들게 할 뿐만 아니라, 데이터의 갱신 / 삽입 / 삭제가 제대로 이루어지지 않는 갱신 이상, 삽입 이상, 삭제 이상을 발생시킬 가능성이 있다.
용어
- 슈퍼 키 : 행을 특정할 수 있는 속성 집합
- 후보 키 : 더이상 줄일 수 없는 슈퍼 키
- 기본 키 : 후보 키 중 테이블의 대표로 선택된 키
정규화와 정규형
정규화된 데이터베이스는 특정 정규형을 만족하게 된다. Ex) 제1정규화가 된 데이터베이스는 제1정규형을 만족한다.
제1정규형(1NF 또는 최소형)
중복되는 항목이 없으며, 모든 행은 동일한 구조로 이루어져있으며, 행에는 순서가 없다.
제2정규형(2NF)
제1정규형을 만족, 모든 속성이 후보 키 일부가 아닌 전체에 따라서 결정된다.
제3정규형(3NF)
제2정규형을 만족, 모든 속성이 기본 키에 따라서 결정되며, 기본 키가 아닌 다른 후보 키에 의존하지 않는다.
BCNF정규형(보이스-코드 정규형)
전체 속성의 집합이 후보 키이다. (따라서 제3정규형을 만족한다.)