CS
[SQLD] 정규화(Normalization)
2026년 02월 11일 04:18
SQLD 1과목 – 정규화(Normalization)
정규화란?
정규화(Normalization) 는
데이터베이스 설계 과정에서 데이터 중복을 제거하고 이상현상을 방지하기 위해
테이블을 구조적으로 분해하는 과정이다.
👉 목적은 데이터 무결성 유지 + 일관성 확보
- 논리 데이터 모델링 단계에서 수행
- 실무에서는 일반적으로 제 3정규화(3NF)까지 적용
정규화의 목적
- 데이터 중복 최소화
- 삽입 / 수정 / 삭제 이상 제거
- 데이터 일관성 유지
- 저장 공간 효율성 확보
이상현상
| 종류 | 설명 |
|---|---|
| 삽입 이상 | 필요 없는 데이터를 함께 입력해야 하는 문제 |
| 갱신 이상 | 중복 데이터 중 일부만 수정되어 불일치 발생 |
| 삭제 이상 | 특정 데이터 삭제 시 원치 않는 정보까지 함께 삭제 |
👉 핵심 원인: 데이터 중복
정규화 단계 ⭐⭐⭐
① 제 1 정규화 (1NF)
정의
- 모든 속성은 원자값(Atomic Value) 을 가져야 한다.
- 하나의 속성에는 하나의 값만 저장
예시

👉 구매상품에 "샴푸, 린스" 같이 여러 값 저장 ❌
👉 각각의 행으로 분리 ⭕
② 제 2 정규화 (2NF)
정의
- 1NF 만족
- 부분 함수 종속 제거
부분 함수 종속이란?
- 기본키가 복합키일 때
- 기본키의 일부에만 종속되는 경우
예:
PK = (학번 + 강의명)
강의실은 강의명에만 종속 → 부분 종속 발생
예시

👉 복합키 + 일부 속성 종속 → 분리
③ 제 3 정규화 (3NF)
정의
- 2NF 만족
- 이행 함수 종속 제거
이행 종속이란?
A → B , B → C
이면 A → C 관계 성립
즉, 기본키가 아닌 속성이 또 다른 일반 속성을 결정하는 경우
예시 1

고객번호(기본키) → 상품명, 상품명 → 가격
👉 가격은 기본키에 직접 종속되지 않음
👉 상품 테이블로 분리
예시 2

학번 → 전공, 전공 → 담당교수
👉 이행 종속 발생
👉 전공-교수 테이블 분리
④ BCNF (Boyce-Codd Normal Form)
정의
- 모든 함수 종속 X → Y 에서
- 결정자 X는 반드시 후보키
3NF보다 강화된 형태
⑤ 제 4 정규화 (4NF)
정의
- 다중값 종속 제거
- 하나의 엔터티에 서로 독립적인 다중값 속성이 존재할 경우 분해
⑥ 제 5 정규화 (5NF)
정의
- 조인 종속 제거
- 조인으로 인해 불필요한 중복이 발생하는 경우 분해
정규화 단계 요약
| 단계 | 제거 대상 |
|---|---|
| 1NF | 원자성 위반 |
| 2NF | 부분 함수 종속 |
| 3NF | 이행 함수 종속 |
| BCNF | 후보키 아닌 결정자 |
| 4NF | 다중값 종속 |
| 5NF | 조인 종속 |
