CS Fundamentals
데이터베이스 정규화에 대해서 설명해주세요
이상 현상이 왜 발생하는지, 어떻게 테이블을 분리해야 하는지, 정규화와 성능 사이에서 어떻게 균형을 잡는지 — 함수 종속 다이어그램과 인터랙티브 시각화로 완전 정복합니다.
2026년 3월 15일 · 약 13분 읽기
Q. "데이터베이스 정규화가 무엇인지 설명하고, 1NF부터 BCNF까지 각 단계와 역정규화 트레이드오프도 말씀해주세요."
예상 꼬리질문
답변 가이드
"정규화는 이상 현상(삽입·삭제·갱신 이상)을 제거하기 위해 테이블을 분리하는 과정입니다. 이상 현상은 하나의 큰 테이블에 여러 종류의 정보를 함께 저장할 때 발생합니다."
"정규화 단계는 1NF(원자값) → 2NF(부분 종속 제거) → 3NF(이행 종속 제거) → BCNF(결정자=후보키)로 진행됩니다. 각 단계는 이전 단계를 만족해야 하며, 함수 종속 관계를 기반으로 판단합니다."
"정규화 수준이 높아질수록 데이터 일관성은 높아지지만 JOIN 증가로 읽기 성능이 저하됩니다. OLTP는 3NF, OLAP/읽기 집중 시스템은 역정규화를 고려합니다."
왜 테이블을 쪼개야 할까요? 하나의 큰 테이블에 모든 정보를 담으면 처음엔 편리해 보이지만, 데이터를 수정·삭제·삽입할 때 의도치 않은 부작용이 발생합니다. 이것이 이상 현상(Anomaly)입니다.
정규화는 이 이상 현상을 제거하기 위한 체계적인 방법론입니다. 이론의 핵심은 함수 종속입니다. 어떤 컬럼이 어떤 컬럼을 결정하는지 파악하는 것이 정규화의 출발점입니다.
1. 이상 현상 — 비정규화의 대가
꼬리질문: "이상 현상(Anomaly)이 무엇이고, 왜 발생하나요?"
비정규화 테이블에서는 세 가지 이상 현상이 발생합니다. 삽입 이상은 불필요한 데이터 없이 삽입할 수 없는 경우, 삭제 이상은 하나의 사실을 삭제하면 다른 사실도 함께 삭제되는 경우, 갱신 이상은 일부 행만 수정되어 데이터가 불일치하는 경우입니다.
이 모든 문제의 근본 원인은 서로 다른 종류의 정보가 하나의 테이블에 혼재하기 때문입니다. 정규화는 이를 의미 단위로 분리합니다.
비정규화 테이블에서 각 이상 현상을 직접 체험해 보세요.
| 학생ID | 학생명 | 강의ID | 강의명 | 교수ID | 교수명 | 교수실 |
|---|---|---|---|---|---|---|
| S1 | 김철수 | C1 | DB | P1 | 이교수 | 301호 |
| S1 | 김철수 | C2 | 알고리즘 | P2 | 박교수 | 402호 |
| S2 | 이영희 | C1 | DB | P1 | 이교수 | 301호 |
2. 정규화 단계 — 1NF, 2NF, 3NF
꼬리질문: "1NF, 2NF, 3NF의 조건을 각각 설명해주세요"
1NF(제1정규형): 각 컬럼에 원자값만 저장합니다. 반복 그룹(여러 값을 쉼표로 구분한 컬럼 등)을 제거합니다.
2NF(제2정규형): 기본키의 일부에만 종속된 컬럼(부분 함수 종속)을 별도 테이블로 분리합니다. 기본키가 단일 컬럼이면 자동으로 2NF를 만족합니다.
3NF(제3정규형): 기본키가 아닌 컬럼이 다른 비키 컬럼에 종속된 경우(이행 함수 종속)를 제거합니다. 강의ID → 교수ID → 교수실에서 교수 정보를 별도 테이블로 분리합니다.
각 정규화 단계에서 테이블이 어떻게 분리되는지 직접 확인해 보세요.
3. 함수 종속 다이어그램 — BCNF까지
꼬리질문: "BCNF가 3NF보다 엄격한 이유가 뭔가요?"
BCNF(보이스-코드 정규형)는 3NF보다 엄격합니다. "모든 결정자는 후보키여야 한다"는 조건을 추가합니다. 3NF를 만족하지만 BCNF를 위반하는 경우는 다중 후보키가 존재할 때 발생합니다.
함수 종속 다이어그램으로 어떤 종속이 어느 단계에서 제거되는지 확인해 보세요. 정규화의 핵심은 결국 함수 종속 관계를 파악하는 것입니다.
각 단계에서 제거되는 함수 종속을 다이어그램으로 확인해 보세요.
4. 정규화 vs 역정규화 — 트레이드오프
꼬리질문: "정규화와 역정규화 중 어느 것을 선택해야 하나요?"
정규화가 항상 정답은 아닙니다. 정규화 수준이 높아질수록 JOIN이 많아지고 읽기 성능이 저하됩니다. 역정규화(Denormalization)는 의도적으로 중복을 허용해 읽기 성능을 높이는 기법입니다.
OLTP(온라인 트랜잭션 처리)는 쓰기/갱신이 빈번하므로 3NF 수준을 권장합니다. OLAP(분석)이나 읽기 집중 서비스는 역정규화를 적극 활용합니다.
정규화 수준에 따른 성능 트레이드오프를 직접 비교해 보세요.
면접 체크리스트
이 항목들을 자신 있게 설명할 수 있다면 데이터베이스 정규화 질문은 준비 완료입니다.
- - 이상 현상 3종: 삽입·삭제·갱신 이상 — 비정규화 테이블의 대가
- - 정규화 4단계: 1NF(원자값) → 2NF(부분종속 제거) → 3NF(이행종속 제거) → BCNF(결정자=후보키)
- - 함수 종속: 정규화의 이론적 기반, 어떤 컬럼이 어떤 컬럼을 결정하는지 파악
- - BCNF vs 3NF: 모든 결정자가 후보키여야 한다는 추가 조건
- - 역정규화: 성능을 위해 의도적 중복 허용 — OLAP, 읽기 집중 시스템에서 활용
참고 자료
- Baeldung — Database Normalization — 1NF부터 BCNF까지 정규화 단계를 예제와 함께 설명하는 영문 튜토리얼
- GeeksforGeeks — Normal Forms in DBMS — 각 정규형의 조건과 예제를 명확하게 설명하는 참고 자료
- Wikipedia — Database normalization — 정규화의 역사와 각 정규형의 공식적 정의
의견을 들려주세요
서비스 개선에 큰 도움이 됩니다. 익명으로 자유롭게 남겨주세요.