본문 바로가기
전공과목/데이터베이스

[데이터베이스] DB 정규화(Normalization) 개념과 1NF~3NF, BCNF 단계별 완전 정리

by 아임코딩 2026. 8. 16.
반응형

컴퓨터공학과 데이터베이스(DB) 중간·기말고사나 정보처리기사 실기 시험에서 서술형 및 분해 문제로 무조건 출제되는 핵심 주제가 있습니다. 바로 데이터베이스 정규화(Normalization)입니다.

"테이블을 왜 굳이 여러 개로 분해해서 관리할까?"

"이상 현상(Anomaly)은 무엇이고, 1NF, 2NF, 3NF, BCNF는 각각 어떤 조건으로 구분할까?"

정규화의 기본 목적부터 이상 현상 3가지, 그리고 1정규형부터 BCNF까지의 핵심 조건과 암기법을 깔끔하게 정리해 드립니다!

1. 데이터베이스 정규화(Normalization)란?

정규화(Normalization)란 관계형 데이터베이스(RDBMS) 설계 시, 데이터의 중복을 최소화하고 무결성(Integrity)을 유지하기 위해 불필요한 테이블을 분해하는 과정을 말합니다.

잘못 설계된 데이터베이스 테이블은 데이터 저장 효율성을 떨어뜨릴 뿐만 아니라 이상 현상(Anomaly)을 유발합니다.

관계형 데이터베이스의 효율적 구조 설계를 위한 정규화. 출처: krasnopolski / Getty Images

⚠️ 정규화를 하지 않았을 때 발생하는 3가지 이상 현상 (Anomaly)

시험에서 각 이상 현상의 정의를 쓰라는 문제가 빈번하게 출제됩니다!

  • 삽입 이상 (Insertion Anomaly): 데이터를 저장할 때, 불필요한 정보까지 함께 입력해야만 데이터 삽입이 가능한 현상
  • 삭제 이상 (Deletion Anomaly): 튜플 삭제 시, 삭제하고 싶지 않은 유용한 정보까지 함께 삭제되는 현상
  • 갱신 이상 (Update Anomaly): 데이터 수정 시 일부 튜플만 수정되어 데이터의 불일치(Inconsistency)가 발생하는 현상

2. 단계별 정규화 과정 (1NF $\rightarrow$ BCNF)

정규화는 이전 단계의 정규형 조건 만족을 전제로 다음 단계로 나아갑니다.

1️⃣ 제1정규형 (1NF: First Normal Form)

  • 핵심 조건: 테이블의 모든 속성이 원자값(Atomic Value)으로만 구성되어야 합니다.
  • 해결 방법: 하나의 컬럼에 여러 개의 값이 들어가 있거나 반복되는 그룹이 있다면, 별도의 튜플로 분리하여 각 셀이 단 하나의 값만 갖도록 만듭니다.

2️⃣ 제2정규형 (2NF: Second Normal Form)

  • 핵심 조건: 1NF를 만족하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속(Full Functional Dependency)이어야 합니다.
  • 해결 방법: 복합 기본키(2개 이상의 컬럼이 기본키인 경우)의 일부분에만 종속되는 부분 함수 종속(Partial Functional Dependency)을 제거하여 테이블을 분리합니다.

3️⃣ 제3정규형 (3NF: Third Normal Form)

  • 핵심 조건: 2NF를 만족하고, 기본키가 아닌 일반 속성 간의 이행적 함수 종속(Transitive Functional Dependency)이 없어야 합니다.
  • 개념 ($A \rightarrow B \rightarrow C$): 기본키 $A$$B$를 결정하고, $B$$C$를 결정할 때 $A \rightarrow C$가 성립하는 경우를 이행적 종속이라 합니다.
  • 해결 방법: $B \rightarrow C$ 관계를 별도의 테이블로 분리합니다.

4️⃣ 보이스-코드 정규형 (BCNF: Boyce-Codd Normal Form)

  • 핵심 조건: 3NF를 만족하고, 모든 결정자(Determinant)가 후보키(Candidate Key)이어야 합니다.
  • 개념: 강한 3정규형이라고도 불리며, 기본키가 아닌 속성이 기본키의 일부분을 결정하는 경우 발생합니다.
  • 해결 방법: 후보키가 아닌 결정자 관계를 별도의 테이블로 분리합니다.

3. 한눈에 끝내는 정규화 암기 법칙 (★시험 필수 암기)

시험 직전 한 문장으로 끝내는 정규화 핵심 요약입니다!

정규형 주요 키워드 및 조건 제약을 제거해야 하는 대상
1NF 도메인이 원자값 다중값 (Non-atomic values)
2NF 완전 함수 종속 부분 함수 종속성 제거
3NF 이행적 종속 제거 이행적 함수 종속성 제거
BCNF 결정자가 후보키 후보키가 아닌 결정자 제거

💡 쉽게 외우는 공식: 도 - 부 - 이 - 결

  • 메인이 원자값 (1NF)
  • 분 함수 종속 제거 (2NF)
  • 행적 함수 종속 제거 (3NF)
  • 정자이면서 후보키가 아닌 것 제거 (BCNF)

4. 반정규화(De-normalization)란?

정규화를 진행할수록 테이블이 잘게 쪼개져 데이터 무결성은 높아지지만, 조회(SELECT) 시 다수의 조인(JOIN)이 발생하여 성능이 저하될 수 있습니다.

  • 반정규화: 시스템의 성능 향상 및 개발 편의성을 위해 정규화된 데이터 모델을 의도적으로 통합, 중복, 분할하는 작업
  • 적용 시점: 데이터 조회 성능이 극도로 중요하거나, 조인 비용이 너무 커서 성능 병목이 발생할 때 제한적으로 적용.

5. 시험 단골 출제 유형 체크

  1. Q. 제1정규형(1NF)부터 BCNF까지의 순서와 각각의 핵심 제거 대상은?
  2. 👉 1NF(도메인 원자값) $\rightarrow$ 2NF(부분 함수 종속 제거) $\rightarrow$ 3NF(이행적 함수 종속 제거) $\rightarrow$ BCNF(후보키가 아닌 결정자 제거)
  3. Q. 기본키 $A$에 대해 $A \rightarrow B$이고 $B \rightarrow C$일 때 $A \rightarrow C$가 성립하는 종속 관계를 무엇이라 하는가?
  4. 👉 이행적 함수 종속(Transitive Functional Dependency)이며, 이를 제거하는 단계는 제3정규형(3NF)입니다.
  5. Q. 튜플 삭제 시 삭제하지 않으려는 다른 정보까지 함께 지워지는 현상은?
  6. 👉 삭제 이상(Deletion Anomaly)입니다.
반응형