CS Fundamentals

데이터베이스 정규화에 대해서 설명해주세요

이상 현상이 왜 발생하는지, 어떻게 테이블을 분리해야 하는지, 정규화와 성능 사이에서 어떻게 균형을 잡는지 — 함수 종속 다이어그램과 인터랙티브 시각화로 완전 정복합니다.

2026년 3월 15일 · 약 13분 읽기

Q. "데이터베이스 정규화가 무엇인지 설명하고, 1NF부터 BCNF까지 각 단계와 역정규화 트레이드오프도 말씀해주세요."

예상 꼬리질문

답변 가이드

"정규화는 이상 현상(삽입·삭제·갱신 이상)을 제거하기 위해 테이블을 분리하는 과정입니다. 이상 현상은 하나의 큰 테이블에 여러 종류의 정보를 함께 저장할 때 발생합니다."

"정규화 단계는 1NF(원자값) → 2NF(부분 종속 제거) → 3NF(이행 종속 제거) → BCNF(결정자=후보키)로 진행됩니다. 각 단계는 이전 단계를 만족해야 하며, 함수 종속 관계를 기반으로 판단합니다."

"정규화 수준이 높아질수록 데이터 일관성은 높아지지만 JOIN 증가로 읽기 성능이 저하됩니다. OLTP는 3NF, OLAP/읽기 집중 시스템은 역정규화를 고려합니다."

왜 테이블을 쪼개야 할까요? 하나의 큰 테이블에 모든 정보를 담으면 처음엔 편리해 보이지만, 데이터를 수정·삭제·삽입할 때 의도치 않은 부작용이 발생합니다. 이것이 이상 현상(Anomaly)입니다.

정규화는 이 이상 현상을 제거하기 위한 체계적인 방법론입니다. 이론의 핵심은 함수 종속입니다. 어떤 컬럼이 어떤 컬럼을 결정하는지 파악하는 것이 정규화의 출발점입니다.


1. 이상 현상 — 비정규화의 대가

꼬리질문: "이상 현상(Anomaly)이 무엇이고, 왜 발생하나요?"

비정규화 테이블에서는 세 가지 이상 현상이 발생합니다. 삽입 이상은 불필요한 데이터 없이 삽입할 수 없는 경우, 삭제 이상은 하나의 사실을 삭제하면 다른 사실도 함께 삭제되는 경우, 갱신 이상은 일부 행만 수정되어 데이터가 불일치하는 경우입니다.

이 모든 문제의 근본 원인은 서로 다른 종류의 정보가 하나의 테이블에 혼재하기 때문입니다. 정규화는 이를 의미 단위로 분리합니다.

비정규화 테이블에서 각 이상 현상을 직접 체험해 보세요.

학생ID학생명강의ID강의명교수ID교수명교수실
S1김철수C1DBP1이교수301호
S1김철수C2알고리즘P2박교수402호
S2이영희C1DBP1이교수301호

2. 정규화 단계 — 1NF, 2NF, 3NF

꼬리질문: "1NF, 2NF, 3NF의 조건을 각각 설명해주세요"

1NF(제1정규형): 각 컬럼에 원자값만 저장합니다. 반복 그룹(여러 값을 쉼표로 구분한 컬럼 등)을 제거합니다.

2NF(제2정규형): 기본키의 일부에만 종속된 컬럼(부분 함수 종속)을 별도 테이블로 분리합니다. 기본키가 단일 컬럼이면 자동으로 2NF를 만족합니다.

3NF(제3정규형): 기본키가 아닌 컬럼이 다른 비키 컬럼에 종속된 경우(이행 함수 종속)를 제거합니다. 강의ID → 교수ID → 교수실에서 교수 정보를 별도 테이블로 분리합니다.

각 정규화 단계에서 테이블이 어떻게 분리되는지 직접 확인해 보세요.

비정규화: 모든 컬럼이 하나의 테이블에 혼재. 다중값, 부분 종속, 이행 종속이 존재.
수강
학생ID(PK)
학생명
강의ID(PK)
강의명
교수ID
교수명
교수실
수강신청일
기본키(PK)분리 대상새 테이블로 이동

3. 함수 종속 다이어그램 — BCNF까지

꼬리질문: "BCNF가 3NF보다 엄격한 이유가 뭔가요?"

BCNF(보이스-코드 정규형)는 3NF보다 엄격합니다. "모든 결정자는 후보키여야 한다"는 조건을 추가합니다. 3NF를 만족하지만 BCNF를 위반하는 경우는 다중 후보키가 존재할 때 발생합니다.

함수 종속 다이어그램으로 어떤 종속이 어느 단계에서 제거되는지 확인해 보세요. 정규화의 핵심은 결국 함수 종속 관계를 파악하는 것입니다.

각 단계에서 제거되는 함수 종속을 다이어그램으로 확인해 보세요.

(학생ID, 강의ID)수강신청일
완전 함수 종속
학생ID학생명
부분 종속 → 2NF 위반
강의ID강의명
부분 종속 → 2NF 위반
강의ID교수ID
완전 함수 종속
교수ID교수명
이행 종속 → 3NF 위반
교수ID교수실
이행 종속 → 3NF 위반
담당교수강의ID
BCNF 위반 (결정자≠후보키)
완전 종속부분 종속이행 종속BCNF 위반

4. 정규화 vs 역정규화 — 트레이드오프

꼬리질문: "정규화와 역정규화 중 어느 것을 선택해야 하나요?"

정규화가 항상 정답은 아닙니다. 정규화 수준이 높아질수록 JOIN이 많아지고 읽기 성능이 저하됩니다. 역정규화(Denormalization)는 의도적으로 중복을 허용해 읽기 성능을 높이는 기법입니다.

OLTP(온라인 트랜잭션 처리)는 쓰기/갱신이 빈번하므로 3NF 수준을 권장합니다. OLAP(분석)이나 읽기 집중 서비스는 역정규화를 적극 활용합니다.

정규화 수준에 따른 성능 트레이드오프를 직접 비교해 보세요.

역정규화완전 정규화
3NFOLTP 권장 (균형 잡힌 선택)
데이터 일관성80%
중복 최소화 → 갱신 이상 없음
갱신 성능79%
한 곳만 수정하면 됨
읽기 성능51%
JOIN 증가 → 조회 비용 상승
저장 공간 효율83%
중복 최소 → 공간 효율 최대

면접 체크리스트

이 항목들을 자신 있게 설명할 수 있다면 데이터베이스 정규화 질문은 준비 완료입니다.

  • - 이상 현상 3종: 삽입·삭제·갱신 이상 — 비정규화 테이블의 대가
  • - 정규화 4단계: 1NF(원자값) → 2NF(부분종속 제거) → 3NF(이행종속 제거) → BCNF(결정자=후보키)
  • - 함수 종속: 정규화의 이론적 기반, 어떤 컬럼이 어떤 컬럼을 결정하는지 파악
  • - BCNF vs 3NF: 모든 결정자가 후보키여야 한다는 추가 조건
  • - 역정규화: 성능을 위해 의도적 중복 허용 — OLAP, 읽기 집중 시스템에서 활용

참고 자료


의견을 들려주세요

서비스 개선에 큰 도움이 됩니다. 익명으로 자유롭게 남겨주세요.

0 / 1000