Normalization
정규화
- 데이터 중복을 최소화하여 DB 성능 향상, 데이터 정합성 유지 등을 목적으로 수행하는 작업들을 지칭한다.
- 순차적으로 아랫 단계의 정규형부터 윗 단계의 정규형까지 만족시켜가며
Anomaly(의도치 않은 이상현상)를 예방하는 것을 목적으로 한다.
- 정규화는 필수적이진 않지만,
기본적으로 정규화를 수행하여 Anomaly를 최소화한 후, 성능 도모를 위해 반정규화를 수행하는 것이 일반적이다.
* Summary of Normalization
1NF | - 모든 속성들이 원자값으로만 구성되어 있는 형태 |
2NF | - 일반 속성들에 부분 종속이 제거되어 있는 형태 |
3NF | - 일반 속성들에 이행 종속이 제거되어 있는 형태 |
BCNF |
1NF (First Normal Form; 제1정규형)
- 모든 Attribute(속성)에 Atomic Value(원자값)만을 허용하는 Relation은 1NF이다.
* 1NF 위배 시 문제점
- Multivalued Attribute(다중값 속성)는 복잡성을 증가시키고, 데이터 구조를 불안정하게 한다.
* 1NF 구성 방법
- 다중값 속성을 가진 엔터티를 분할하여 다중값들 하나하나가 한 Instance로 구성되게 한다.
2NF (Second Normal Form; 제2정규형)
- General Attribute(일반 속성)가 Primary Identifier(주식별자) "전체"에 종속적인 Relation은 2NF이다.
* 2NF 위배 시 문제점
- 주식별자 "전체"에 종속되는 것이 아닌, "Partial" Dependency(부분 종속)가 존재할 경우(2NF 위배),
데이터 중복이 발생해 성능을 저해하고 데이터 정합성을 침해하게 된다.
* 2NF 구성 방법
- 부분 종속이 이루어지고 있는 속성들을 별도의 엔터티로 분리하여 부분 종속을 해결한다.
3NF (Third Normal Form; 제3정규형)
- General Attribute(일반 속성) 간에 서로 종속적이지 않은 Relation은 3NF이다.
- Transitive Dependency(이행적 종속)가 존재하지 않은 Relation은 3NF이다.
* 3NF 위배 시 문제점
- 이행적 종속이 존재하는 릴레이션에서 종속에 연관된 속성값이 변경될 경우,
종속에 연관된 다른 속성들의 값까지 모두 수정해야 하는 오버헤드가 발생하게 된다.
- 데이터 중복이 발생해 성능을 저해하고, 데이터 정합성을 침해하게 된다.
* 3NF 구성 방법
- 이행정 종속에 연관된 속성들을 별도의 엔터티로 분류하여 이행적 종속을 해결한다.
BCNF (Boyce-Codd Normal Form; 보이스-코드 정규형)
Reference: Database Management Systems 3E
(Raghu Ramakrishnan, Johannes Gehrke 저, McGrawHill, 2003)
Reference: The Guide for SQL Professional
(Kdata 한국데이터산업진흥원 저, Kdata 한국데이터산업진흥원, 2020)