Skip to main content
Korean only
This page is available in Korean only. An English version will be added later.

정규화 (Normalization)

I. 개요​

  • 정의: 관계형 DB에서 데이터 중복을 줄이고 이상현상(Anomaly)을 제거하기 위해, 함수 종속성을 기준으로 릴레이션을 작고 잘 구조화된 단위로 분해하는 과정.
  • 배경 / 필요성: 한 테이블에 모든 데이터를 몰아넣으면 중복 저장, 갱신 누락, 삽입·삭제 시 부작용이 발생한다.

II. 이상현상 (Anomaly)​

종류설명
삽입 이상불필요한 데이터까지 있어야 삽입 가능
갱신 이상중복된 값 중 일부만 수정되어 불일치
삭제 이상한 데이터를 지울 때 필요한 정보까지 삭제

III. 정규화 단계​

단계조건제거 대상
1NF모든 속성이 원자값(더 못 나눔)반복 그룹·다중값
2NF1NF + 부분 함수 종속 제거기본키 일부에만 종속
3NF2NF + 이행 함수 종속 제거키가 아닌 속성에 종속
BCNF3NF + 모든 결정자가 후보키결정자이지만 후보키 아닌 경우

이후 4NF(다치 종속), 5NF(조인 종속)도 있으나 실무에선 보통 3NF~BCNF까지.

비정규 → 1NF(원자값) → 2NF(부분종속 제거)
→ 3NF(이행종속 제거) → BCNF(결정자=후보키)

IV. 특징 · 장단점​

구분내용
장점중복·이상현상 제거, 데이터 일관성, 저장공간 절약
단점테이블 분해 → 조인 증가 → 조회 성능 저하 가능
고려사항조회 많은 시스템은 성능과의 균형 필요

V. 비교 — 정규화 vs 반정규화​

구분정규화반정규화(Denormalization)
목적일관성·무결성조회 성능
중복최소화의도적 허용
조인많음줄임
적용OLTP(트랜잭션)OLAP·조회 위주, 대량 집계

VI. 적용 · 실무 관점​

  • 기본은 3NF까지 정규화 후, 성능 병목이 확인되면 선택적 반정규화(집계 컬럼, 이력 테이블 등).
  • 무결성 제약(PK·FK·UNIQUE)과 함께 설계해야 정규화 효과가 유지된다.

VII. 결론​

  • 정규화는 무결성을, 반정규화는 성능을 위한 것. 둘은 trade-off 관계.
  • "일단 정규화하고, 필요할 때 근거를 갖고 반정규화"가 원칙이다.