정규화 (1NF → BCNF)
함수 종속을 단계적으로 제거해 이상(Anomaly)을 없애는 테이블 분해 과정.
정규화는 데이터 중복과 이상 현상(삽입·갱신·삭제 이상)을 제거하기 위한 구조화된 방법론이다. 시험에서는 '다음 테이블의 정규형을 판단하시오', '어느 종속을 제거해야 2NF인가?' 등이 반복 출제된다.
정규화는 한 번에 일어나는 게 아니라 1NF → 2NF → 3NF → BCNF → 4NF → 5NF 순서로 단계별로 진행된다. 각 단계는 앞 단계의 조건을 만족하면서 특정 종류의 을 추가로 제거한다.
가장 중요한 세 가지만 기억하자. 1NF는 원자값 보장, 2NF는 제거, 3NF는 제거. 그 위에 가 '모든 결정자는 후보키여야 한다'를 얹는다.
암기법 — 도·부·이·결·다·조 (도메인, 부분 종속, 이행 종속, 결정자, 다치 종속, 조인 종속): 각각 1NF/2NF/3NF/BCNF/4NF/5NF에서 제거하는 것.
아래 시뮬레이터에서 실제 테이블이 각 단계에서 어떻게 분해되는지 직접 확인해 보자. '학생수강' 예제가 UNF부터 BCNF까지 단계별로 쪼개지는 과정을 담았다.
한 셀에 여러 값이 들어 있거나(다치 속성) 반복 그룹이 존재하는 상태. 관계형 DB에 넣을 수 없다.
→ 다음 단계에서 셀을 원자값으로 쪼갠다
| 🔑 학번 | 이름 | 과목(복수) | 담당교수(복수) |
|---|---|---|---|
| S01 | 홍길동 | DB, 네트워크 | 김교수, 박교수 |
| S02 | 이순신 | DB, OS, 보안 | 김교수, 이교수, 최교수 |
| 정규형 | 제거 대상 | 한 줄 요약 |
|---|---|---|
| 1NF | 반복 그룹 | 모든 속성이 원자값 |
| 2NF | 부분 함수 종속 | 비키 속성은 복합키 전체에 종속 |
| 3NF | 이행 함수 종속 | 비키→비키 종속 제거 |
| BCNF | 비후보키 결정자 | 모든 결정자가 후보키 |
| 4NF | 다치 종속 | 독립된 다치 속성 분리 |
| 5NF | 조인 종속 | 조인으로 재구성 가능 |
반정규화: 성능이 필요할 때는 정규화된 테이블을 일부러 합치거나 중복 컬럼을 둘 수 있다. 이것을 반정규화(Denormalization)라 하며, 조인 감소·요약 테이블·중복 컬럼·테이블 병합/분할이 대표적 기법이다.
한 속성의 값이 정해지면 다른 속성의 값이 유일하게 결정되는 관계를 무엇이라 하는가?
복합키의 일부 속성에만 종속되는 비키 속성을 제거하는 정규형은?
BCNF는 3NF보다 엄격한 조건이다.
정규화 과정에서 3NF와 BCNF의 차이를 2줄로 서술하시오.