topic★★★★★난이도 · 약 20분
정규화 — 1NF·2NF·3NF
이상(Anomaly) 제거를 위한 테이블 분해 과정. 함수 종속 판별이 핵심.
#DB#정규화#함수종속
왜 배우는가
정규화 단계 판별 문제가 매회 1문항 이상 출제된다. 1NF(원자값) → 2NF(부분 종속 제거) → 3NF(이행 종속 제거) 흐름을 예제와 함께 확실히 잡자.
이상(Anomaly)이란 데이터 중복으로 인해 삽입·갱신·삭제 시 문제가 발생하는 현상이다. 정규화는 이 이상을 체계적으로 제거한다.
| 정규형 | 제거 대상 | 한 줄 요약 |
|---|---|---|
| 1NF | 반복 그룹 | 모든 속성이 원자값 |
| 2NF | 부분 함수 종속 | 비키 속성 → 복합키 전체에 종속 |
| 3NF | 이행 함수 종속 | 비키 → 비키 종속 제거 |
| BCNF | 비후보키 결정자 | 모든 결정자가 후보키 |
예제: 테이블(학번, 과목, 이름, 성적)에서 기본키가 (학번, 과목)일 때, `학번 → 이름`은 부분 함수 종속이다. 이를 분해하면 2NF가 된다.
암기법 — 도·부·이·결 (도메인, 부분, 이행, 결정자) = 1NF / 2NF / 3NF / BCNF에서 제거하는 것.
반정규화(Denormalization): 성능 향상을 위해 정규화된 테이블을 의도적으로 합치거나 중복을 허용하는 기법. 조인 횟수를 줄여 읽기 성능을 높인다.
실기 드릴 5문항
edit실기 드릴 · 단답형
복합키의 일부에만 종속되는 비키 속성을 제거하면 어느 정규형이 되는가?
check_circle실기 드릴 · OX
1NF를 만족하려면 모든 속성 값이 원자값이어야 한다.
space_bar실기 드릴 · 빈칸 채우기
A → B, B → C일 때 A → C는 (___) 함수 종속이며, 이를 제거하면 (___)가 된다.
edit실기 드릴 · 단답형
테이블 (학번, 과목, 이름, 학과, 성적) 기본키 (학번, 과목). 이 스키마의 정규형 단계는?
edit실기 드릴 · 단답형
테이블 (학번, 이름, 학과, 학과장) — 학과 → 학과장 종속일 때 정규형 단계와 분해 결과는?