제1 정규형 (1NF):
각 테이블의 모든 속성 값은 원자적이어야 합니다. 즉, 더 이상 나눌 수 없는 단위여야 합니다.
중복된 데이터를 피하고, 각 열은 하나의 값만을 가지도록 합니다.
제2 정규형 (2NF):
1NF를 만족하면서, 부분적 종속을 제거해야 합니다.
기본키가 아닌 모든 속성이 기본키에 완전히 종속되어야 합니다.
제3 정규형 (3NF):
2NF를 만족하면서, 이행적 함수 종속을 제거해야 합니다.
어떤 비기본키 속성이 다른 비기본키 속성에 종속되면 안 됩니다.
보이스-코드 정규형 (BCNF):
3NF를 만족하면서, 모든 결정자가 후보키여야 합니다.
즉, 모든 함수 종속 관계에서 결정자는 후보키에 속해야 합니다.
제4 정규형 (4NF):
다치 종속을 제거합니다.
어떤 다치 종속 관계가 없도록 합니다.
제5 정규형 (5NF) 또는 프로젝션-조인 정규형 (PJNF):
다중값 종속 관계를 제거합니다.
데이터의 중복을 방지하기 위해 프로젝션(분해)과 조인을 사용하여 설계합니다.
정규화는 데이터베이스를 정리하고 깔끔하게 만드는 방법입니다.
제1 정규형 (1NF):
각 테이블의 모든 속성 값은 원자적이어야 한다.
제2 정규형 (2NF):
1NF를 만족하면서, 부분적 종속을 제거해야 합니다.
기본키가 아닌 모든 속성이 기본키에 완전히 종속되어야 합니다.
제3 정규형 (3NF):
2NF를 만족하면서, 이행적 함수 종속을 제거해야 합니다.
어떤 비기본키 속성이 다른 비기본키 속성에 종속되면 안 됩니다.
보이스-코드 정규형 (BCNF):
한 가지 정보로만 이루어진 열을 기준으로 데이터를 분리합니다. 중복을 최대한 줄입니다.
// 3NF를 만족하면서, 모든 결정자가 후보키여야 합니다.
즉, 모든 함수 종속 관계에서 결정자는 후보키에 속해야 합니다.
제4 정규형 (4NF):
다치 종속을 제거합니다.
어떤 다치 종속 관계가 없도록 합니다.
// 이상한 관계를 없애서 데이터가 깔끔하게 나뉘어지도록 합니다. 이렇게 하면 정보를 찾거나 업데이트하기가 더 편리해집니다.
제5 정규형 (5NF) 또는 프로젝션-조인 정규형 (PJNF):
다중값 종속 관계를 제거합니다.
데이터의 중복을 방지하기 위해 프로젝션(분해)과 조인을 사용하여 설계합니다.
하지만 너무 복잡하게 하면 오히려 데이터를 찾기가 어려워질 수 있습니다.
어느 정도의 정규화 수준을 선택하는 것도 중요한 판단입니다.