1. 정의
Normalization
관계형 데이터 모델에서 데이터의 중복성을 제거하여 이상 현상(Anomaly)을 방지하고, 데이터의 일관성과 정확성을 유지하기 위해 무손실 분해하는 과정을 말한다.
💡 이상 (Anomaly)
정규화를 거치지 않은 데이터베이스 내에 데이터들이 불필요하게 중복되어 릴레이션 조작 시 발생하는 예기치 않은 현상을 말한다.
삽입 이상(Insertion Anomaly), 삭제 이상(Deletion Anomaly), 갱신 이상(Update Anomaly)이 있다.
2. 목적
- 중복 데이터를 최소화하여 테이블 불일치 위험을 최소화한다.
- 수정, 삭제 시 이상 현상을 방지함으로써 데이터 구조의 일관성을 최대화한다.
- 데이터 삽입 시 릴레이션의 재구성에 대한 필요성을 줄인다.
- 효과적인 검색 알고리즘을 생성할 수 있다.
3. 정규화 단계

1) 제 1정규화 (1NF)
" 테이블 내의 속성값은 원자값을 가지고 있어야 한다. "
1NF는 다음을 만족해야 한다.
- 각 컬럼이 하나의 속성만을 가져야 한다.
- 하나의 컬럼은 같은 종류나 타입(type)의 값을 가져야 한다.
- 각 컬럼이 유일한(unique) 이름을 가져야 한다.
- 칼럼의 순서가 상관없어야 한다.
2) 제 2정규화 (2NF)
" 부분 함수 종속을 제거한다. (완전 함수 종속 관계)"
2NF는 다음을 만족해야 한다.
- 제 1정규형을 만족해야 한다.
- 모든 컬럼이 부분적 종속이 없어야 한다. 즉, 모든 컬럼이 완전 함수 종속을 만족해야 한다.
💡 부분 함수 종속 (Partial Functional Dependency)
기본키 중에 특정 컬럼에만 종속되는 것을 말한다.
💡 완전 함수 종속 (Full Functional Dependency)
기본키의 부분집합이 결정자가 되어선 안 된다는 것이다.
예시

(학생번호, 과목) 복합키가 기본키라고 하자.
이때 특정 과목의 지도교수는 과목명만 알면 알 수 있다. 즉, 지도교수 컬럼이 (학생번호, 과목)에 종속되지 않고 (과목)에만 종속적이다.
제 2 정규화를 통해 다음과 같이 분리해야 한다.

3) 제 3정규화 (3NF)
" 이행 함수 종속을 제거한다. "
3NF는 다음을 만족해야 한다.
- 제 2정규형을 만족해야 한다.
- 기본키를 제외한 속성들간의 이행 종속성 (Transitive Dependency)이 없어야 한다.
💡 이행 함수 종속 (Transitive Functional Dependency)
A → B, B → C 일 때 A → C 를 만족하면 이행 함수 종속이라고 한다.
예시

ID → 등급, 등급 → 할인율, ID → 할인율 을 만족한다. 즉 이행 함수 종속이 존재한다.
제 3 정규화를 통해 다음과 같이 분리해야 한다.

4) 보이스-코드 정규화 (BCNF)
" 결정자가 후보키가 아닌 함수 종속을 제거한다. "
BCNF는 다음을 만족해야 한다.
- 제 3정규형을 만족해야 한다.
- 모든 결정자가 후보키 집합에 속해야 한다.
예시

위의 테이블은 (학생번호, 과목)이 기본키로 지도교수를 알 수 있다. 그러나 지도교수를 알면 과목을 알 수 있으므로, 지도교수 → 과목 이 종속적이다.
즉, 후보키 집합에 속하지 않은 결정자가 존재하므로 BCNF를 만족하지 않는다.
BCNF를 만족하기 위해서는 다음과 같이 분리하면 된다.

5) 제 4정규화 (4NF)
" 다치 종속을 제거한다. "
4NF는 다음을 만족해야 한다.
- BCNF를 만족해야 한다.
- 다중값 종속(다치 종속)이 없어야 한다.
💡 다치 종속 (Multi-valued Dependency)
같은 테이블 내의 독립적인 두 개 이상의 컬럼이 또 다른 컬럼에 종속되는 것을 말한다.
즉, A → B 인 의존성에서 단일 값 A와 다중 값 B가 존재한다면 다치 종속이라고 할 수 있다. 이러한 종속을 A ↠ B 로 표기한다. (다치 종속은 이중 화살표(double arrow) ↠ 로 표기한다.)다치 종속은 최소 2개의 컬럼이 다른 컬럼에 종속되어야 하기 때문에 최소 3개의 컬럼이 필요하다.
예시

위의 테이블은 Person ↠ Mobile 과 Person ↠ Food_Likes 두 가지 의존성을 가지므로 다치 종속이 존재한다.
제 4정규화를 통해 다음과 같이 분리할 수 있다.

6) 제 5정규화 (5NF)
" 조인 종속을 제거한다. "
5NF는 다음을 만족해야 한다.
- 4NF를 만족해야 한다.
- 더 이상 비손실 분해를 할 수 없어야 한다.
💡 조인 종속 (Joint dependency)
하나의 릴레이션을 여러개의 릴레이션으로 분해하였다가, 다시 조인했을 때 데이터 손실이 없고 필요없는 데이터가 생기는 것을 말한다. 조인 종속성은 다치 종속의 개념을 더 일반화한 것이다.
예제
위의 4NF 테이블에 대해 조인 연산을 수행하면 다음과 같은 결과가 나온다.

위의 결과를 보면 제 4정규화를 수행하기 전 데이터와 다른 것을 알 수 있다.
데이터 손실은 없지만 필요없는 데이터가 추가적으로 생겼으므로 5NF를 만족하지 않는다.
제 5정규화를 통해 다음과 같이 분리할 수 있다.

🔖 참고
- https://bazingzinga.blogspot.com/2019/02/10.html
- https://code-lab1.tistory.com/48
- https://www.geeksforgeeks.org/difference-between-4nf-and-5nf/
Difference between 4NF and 5NF - GeeksforGeeks
Your All-in-One Learning Portal: GeeksforGeeks is a comprehensive educational platform that empowers learners across domains-spanning computer science and programming, school education, upskilling, commerce, software tools, competitive exams, and more.
www.geeksforgeeks.org
출처: https://velog.io/@wisdom-one/%EC%A0%95%EA%B7%9C%ED%99%94Normalization
'정보관리(데이터베이스, DB) > DB' 카테고리의 다른 글
| 생성형 AI를 활용한 데이터 모델링 (0) | 2025.09.06 |
|---|---|
| DB 설계 (0) | 2025.09.06 |
| [DB 안티패턴] 대용량 데이터를 위한 테이블 분리 (0) | 2025.09.03 |
| 데이터 웨어하우스(DW, Data Warehouse)의 소프트웨어/하드웨어 아키텍처 (0) | 2025.09.01 |
| 대용량 데이터 처리위한 DB구성 임시DB 운영계DB 정보계DB (0) | 2025.09.01 |