데이터베이스 정규화
Database Normalization
정규화는 함수 종속성 등 데이터 간 종속 관계를 분석하여 릴레이션을 무손실 분해함으로써 데이터 중복을 최소화하고 삽입·삭제·갱신 이상현상을 제거하는 논리 데이터 모델링 과정이다.
핵심 키워드
이상현상(삽입·삭제·갱신 Anomaly)함수 종속(Functional Dependency)부분 함수 종속(2NF)이행 함수 종속(3NF)BCNF(결정자 = 후보키)다치 종속(MVD, 4NF)조인 종속(JD, 5NF)무손실 분해(Lossless Decomposition)반정규화(Denormalization)
암기: "도부이결다조": 도메인 원자값(1NF)·부분 함수 종속 제거(2NF)·이행 종속 제거(3NF)·결정자는 후보키(BCNF)·다치 종속 제거(4NF)·조인 종속 해소(5NF)
구성도
정리
1. 개요
- 정의: 종속성 분석을 통해 릴레이션을 분해하여 중복과 이상현상을 제거하는 과정
- 목적: 데이터 중복 최소화, 무결성 유지, 이상현상 제거, 데이터 구조 안정성·확장성 확보
- 이상현상(Anomaly)
- 삽입 이상: 불필요한 데이터 없이는 원하는 데이터 삽입 불가
- 삭제 이상: 한 데이터 삭제 시 유지해야 할 다른 정보까지 손실
- 갱신 이상: 중복 데이터 일부만 수정되어 불일치 발생
2. 구성/원리 (정규형 단계)
| 정규형 | 조건 | 제거 대상 |
|---|---|---|
| 1NF | 모든 속성 값이 원자값(Atomic) | 반복 그룹·다중값 속성 |
| 2NF | 1NF + 기본키 전체에 완전 함수 종속 | 부분 함수 종속 |
| 3NF | 2NF + 기본키가 아닌 속성 간 종속 없음 | 이행 함수 종속 (A→B, B→C) |
| BCNF | 모든 결정자가 후보키 | 후보키 아닌 결정자 |
| 4NF | BCNF + 비자명한 다치 종속 없음 | 다치 종속 (A→→B) |
| 5NF | 모든 조인 종속이 후보키에 의해 함축 | 조인 종속 |
- 원리
- 분해는 무손실 조인(Lossless Join) 과 가능하면 종속성 보존을 만족해야 함
- 1NF~BCNF: 함수 종속 기반 / 4NF: 다치 종속 / 5NF: 조인 종속 기반
- 3NF는 종속성 보존 분해가 항상 가능하나, BCNF는 종속성 보존을 보장하지 못할 수 있음
3. 비교: 정규화 vs 반정규화
| 항목 | 정규화 | 반정규화 |
|---|---|---|
| 목적 | 무결성·중복 제거 | 조회 성능 향상 |
| 방법 | 릴레이션 분해 | 테이블 병합·분할, 중복 컬럼·파생 컬럼, 요약 테이블 |
| 장점 | 이상현상 제거, 저장 효율, 유연한 구조 | 조인 감소, 응답 속도 개선 |
| 단점 | 조인 증가로 조회 성능 저하 가능 | 데이터 불일치 위험, 동기화 부담 |
| 적용 | OLTP 논리 설계 | 성능 요구 영역, DW·리포팅 |
4. 고려사항·최신 동향
- 고려사항
- 실무에서는 통상 3NF 또는 BCNF까지 수행 후 성능 요건에 따라 선택적 반정규화
- 반정규화 전 인덱스·클러스터링·파티셔닝·캐시 등 대안 우선 검토
- 반정규화 시 트리거·배치 등 정합성 유지 방안 명시
- 최신 동향
- DW·분석 환경은 스타·스노우플레이크 스키마 등 차원 모델링(의도적 비정규화) 사용
- NoSQL은 쿼리 패턴 중심 모델링으로 중복·임베딩을 허용
- 레이크하우스에서도 메달리온 계층별로 정규화 수준을 달리 적용
함께 볼 토픽
v1 · 2026. 10. 19. 갱신 · 틀린 내용을 발견하면 알려 주세요.