topic난이도 · 약 30

정규화 (1NF → BCNF)

함수 종속을 단계적으로 제거해 이상(Anomaly)을 없애는 테이블 분해 과정.

#DB#정규화#실기핵심
왜 배우는가

정규화는 데이터 중복과 이상 현상(삽입·갱신·삭제 이상)을 제거하기 위한 구조화된 방법론이다. 시험에서는 '다음 테이블의 정규형을 판단하시오', '어느 종속을 제거해야 2NF인가?' 등이 반복 출제된다.

정규화는 한 번에 일어나는 게 아니라 1NF → 2NF → 3NF → BCNF → 4NF → 5NF 순서로 단계별로 진행된다. 각 단계는 앞 단계의 조건을 만족하면서 특정 종류의 을 추가로 제거한다.

가장 중요한 세 가지만 기억하자. 1NF는 원자값 보장, 2NF 제거, 3NF 제거. 그 위에 가 '모든 결정자는 후보키여야 한다'를 얹는다.

암기법 — 도·부·이·결·다·조 (도메인, 부분 종속, 이행 종속, 결정자, 다치 종속, 조인 종속): 각각 1NF/2NF/3NF/BCNF/4NF/5NF에서 제거하는 것.

아래 시뮬레이터에서 실제 테이블이 각 단계에서 어떻게 분해되는지 직접 확인해 보자. '학생수강' 예제가 UNF부터 BCNF까지 단계별로 쪼개지는 과정을 담았다.

0. 비정규 (UNF)반복 그룹이 있는 원본

한 셀에 여러 값이 들어 있거나(다치 속성) 반복 그룹이 존재하는 상태. 관계형 DB에 넣을 수 없다.

→ 다음 단계에서 셀을 원자값으로 쪼갠다

학생수강 (UNF)PK: 학번
🔑 학번이름과목(복수)담당교수(복수)
S01홍길동DB, 네트워크김교수, 박교수
S02이순신DB, OS, 보안김교수, 이교수, 최교수
한 셀에 여러 값 (비원자값)
1 / 5
단계 버튼을 눌러 UNF → 1NF → 2NF → 3NF → BCNF 진행
정규형제거 대상한 줄 요약
1NF반복 그룹모든 속성이 원자값
2NF부분 함수 종속비키 속성은 복합키 전체에 종속
3NF이행 함수 종속비키→비키 종속 제거
BCNF비후보키 결정자모든 결정자가 후보키
4NF다치 종속독립된 다치 속성 분리
5NF조인 종속조인으로 재구성 가능

반정규화: 성능이 필요할 때는 정규화된 테이블을 일부러 합치거나 중복 컬럼을 둘 수 있다. 이것을 반정규화(Denormalization)라 하며, 조인 감소·요약 테이블·중복 컬럼·테이블 병합/분할이 대표적 기법이다.

실기 드릴 4문항
edit실기 드릴 · 단답형

한 속성의 값이 정해지면 다른 속성의 값이 유일하게 결정되는 관계를 무엇이라 하는가?

edit실기 드릴 · 단답형

복합키의 일부 속성에만 종속되는 비키 속성을 제거하는 정규형은?

check_circle실기 드릴 · OX

BCNF는 3NF보다 엄격한 조건이다.

description실기 드릴 · 약술형

정규화 과정에서 3NF와 BCNF의 차이를 2줄로 서술하시오.