관계형 데이터베이스의 설계에서
중복을 최소화하게 데이터를 구조화하는 프로세스를
정규화(Normalization)라고 한다.
데이터베이스 정규화의 목표는
이상이 있는 관계를 재구성하여
작고 잘 조직된 관계를 생성하는 것에 있다.
일반적으로 정규화란 크고, 제대로 조직되지 않은 테이블들과 관계들을
작고 잘 조직된 테이블과 관계들로 나누는 것을 포함한다.
정규화의 목적은
하나의 테이블에서의 데이터의 삽입, 삭제, 변경이
정의된 관계들로 인하여
데이터베이스의 나머지 부분들로
전파되게 하는 것이다.
1NF - 1차 정규형
릴레이션에 속한 모든 도메인이 원자값만으로 되어 있는 정규형
릴레이션의 모든 속성값이 원자값으로만 되어 있는 정규형
2NF - 2차 정규형
릴레이션 R이 1NF고,
기본키가 아닌 모든 속성이 기본키에 대해
완전 함수적 종속을 만족하는 정규형
(부분적 함수 종속 제거)
3NF - 3차 정규형
릴레이션 R이 2NF이고,
기본키가 아닌 모든 속성이 기본키에 대해
이행적 종속을 만족하지 않는 정규형
(A-B이고, B->C일 때 A->C를 만족하지 않음)
(이행적 함수 종속 제거)
BCNF - BCNF 정규형
릴레이션 R에서 결정자가 모두 후보키인 정규형
모든 BCNF가 종속성을 보존하는 것은 아님
(결정자이면서 후보키가 아닌 것 제거)
- 결정자 : 속성 간의 종속성을 규명할 때
기준이 되는 값
4NF - 4차 정규형
릴레이션 R에 다치 종속 A -> B가 성립하는 경우,
R의 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
5NF - 5차 정규형
릴레이션 R의 모든 조인 종속이
R의 후보키를 통해서만 성립되는 정규형