- 데이터베이스를 설계할 때 가장 중요한 목표 중 하나는 '불필요한 데이터 중복을 최소화'하는 것
- 중복된 데이터는 삽입, 삭제, 수정 시 이상 현상(Anomaly)을 일으킬 수 있으며, 데이터의 일관성을 해치는 주범임
- 이러한 문제를 해결하기 위한 체계적인 프로세스가 바로 정규화(Normalization)
1. 정규화의 초석: 함수 종속성(Functional Dependency) 파헤치기
- 정규화를 이해하기 위해서는 먼저 함수 종속성(Functional Dependency, FD)의 개념을 확실히 알아야 함
- 간단히 말해, 어떤 속성(Attribute)의 집합이 다른 속성의 값을 유일하게 결정할 때 "함수 종속성이 있다"고 말함
- 표기: α → β (α가 β를 함수적으로 결정)
- 의미: 릴레이션 내의 두 튜플(행)이 α 속성에서 동일한 값을 가지면, β 속성에서도 반드시 동일한 값을 가져야 함
- 예시: 학번 → 이름은 함수 종속성이 성립하지만, 동명이인이 있을 수 있으므로 이름 → 학번은 성립하지 않음
함수 종속성의 종류와 확장
1) 자명한 함수 종속성 (Trivial FD)
- 종속 관계가 너무나 명확해서 항상 성립하는 함수 종속성을 의미
- 만약 β가 α의 부분집합이라면 (β ⊆ α), α → β는 자명한 FD
- 예시:{이름, 나이} → {이름}
2) 함수 종속성 집합의 폐포 (Closure of a Set of FDs, F+)
- 주어진 함수 종속성 집합 F로부터 논리적으로 유추할 수 있는 모든 함수 종속성의 집합을 '폐포'라고 하며, F+로 표기
- 예를 들어, A→B이고 B→C라면, 우리는 A→C라는 새로운 FD를 유추할 수 있음
- 이러한 유추 규칙을 체계적으로 정리한 것이 암스트롱의 공리(Armstrong's Axioms)임
- 재귀 규칙 (Reflexivity): β ⊆ α 이면, α → β이다.
- 부가 규칙 (Augmentation): α → β 이면, γα → γβ이다.
- 이행 규칙 (Transitivity): α → β 이고 β → γ 이면, α → γ이다.
3) 속성 집합의 폐포 (Attribute Set Closure, α+)
- 주어진 속성 집합 α에 의해 함수적으로 결정되는 모든 속성들의 집합을 의미하며, α+로 표기
- α+는 다음과 같은 중요한 용도로 사용
- 슈퍼키 테스트: 특정 속성 집합 α의 폐포(α+)가 릴레이션의 모든 속성을 포함하면, α는 슈퍼키임
- 함수 종속성 테스트: α → β가 성립하는지 확인하려면, α+를 계산하여 β가 α+에 포함되는지 확인
2. 좋은 분해(Decomposition)의 조건
- 정규화는 중복을 줄이기 위해 테이블을 분해하는 과정
- 이때, 분해는 다음의 목표를 만족해야함
- 무손실 조인 분해 (Lossless-Join Decomposition):
- 분해된 릴레이션을 다시 조인(Join)했을 때 원래의 데이터가 그대로 복원되어야 함
- 정보의 손실이 없어야 하는 것은 필수 조건임 - 중복 제거 (No Redundancy):
- 정규화의 본질적인 목표로, 가급적 중복이 없도록 분해해야 함
- 종속성 보존 (Dependency Preservation):
- 원래 릴레이션이 가지고 있던 함수 종속성들이 분해된 릴레이션들에서도 모두 확인 가능해야 함
- 이 중 무손실 조인은 가장 중요한 조건임
- 릴레이션 R을 R1, R2로 분해할 때, 무손실 조인을 만족하기 위한 충분조건은 다음과 같음
- R1 ∩ R2 → R1 또는 R1 ∩ R2 → R2가 F+에 속해야 함
- 쉽게 말해, 두 릴레이션의 공통 속성이 둘 중 한쪽 릴레이션의 슈퍼키 역할을 해야 한다는 것
3. 정규형(Normal Forms): BCNF와 3NF
1) BCNF (Boyce-Codd Normal Form)
BCNF는 함수 종속성을 기반으로 발견할 수 있는 모든 중복을 제거하는 것을 목표로 하는 강력한 정규형
- α → β가 자명한 함수 종속성이다 (즉, β ⊆ α).
-
α가 릴레이션 R의 **슈퍼키(Superkey)**이다.
- BCNF 조건: 릴레이션 R의 모든 함수 종속성 α → β에 대해, 아래 둘 중 하나를 반드시 만족해야 함
- 만약 BCNF를 위반하는 α → β가 존재한다면, 해당 릴레이션은 다음과 같이 분해
- (α ∪ β)를 하나의 릴레이션으로 분리
- (R - (β - α))를 나머지 릴레이션으로 분리
- BCNF는 데이터 중복을 효과적으로 제거
- 하지만, 분해 과정에서 원래의 함수 종속성을 모두 보존하지 못하는 경우가 발생할 수 있다는 단점
2) 3NF (Third Normal Form)
- 3NF는 BCNF보다 약간 완화된 조건을 가진 정규형
- 무손실 조인과 종속성 보존을 항상 보장하는 분해가 가능하다는 장점
-
α → β가 자명한 함수 종속성임
-
α가 릴레이션 R의 슈퍼키임
-
β - α에 속하는 각 속성 A가 R의 어떤 후보 키(Candidate Key)에 포함되어 있음
- 3NF 조건: 릴레이션 R의 모든 함수 종속성 α → β에 대해, 아래 셋 중 하나를 반드시 만족해야 함
- BCNF와의 가장 큰 차이점은 3번 조건임
- 이 조건 덕분에 BCNF에서는 허용되지 않던 일부 종속성이 3NF에서는 허용될 수 있임
- 이로 인해 약간의 데이터 중복이 남을 수는 있지만 , 모든 함수 종속성을 보존할 수 있다는 실용적인 이점을 얻게 됨
4. BCNF vs. 3NF: 핵심 비교

| 구분 | BCNF | 3NF |
| 중복성 | 데이터 중복을 완벽히 제거 (FD 기반) |
일부 데이터 중복이 존재할 수 있음 |
| 무손실 조인 | 항상 가능 |
항상 가능 |
| 종속성 보존 | 보장하지 못할 수 있음 |
항상 보장 가능 |
- BCNF는 중복 제거라는 이상에 가장 가깝지만 종속성 보존을 희생할 수 있음
- 3NF는 약간의 중복을 감수하는 대신 무손실 조인과 종속성 보존을 모두 만족시키는 실용적인 타협점임
- 데이터베이스 설계 시 이 두 정규형의 장단점을 이해하고 상황에 맞는 적절한 정규형을 선택하는 것이 중요
'DATABASE DESIGN' 카테고리의 다른 글
| [데이터베이스 설계] 쿼리 처리(Query Processing) - 비용 측정부터 선택 연산(A1-A3) (0) | 2025.09.24 |
|---|---|
| [데이터베이스 설계] 함수 종속성 이론과 스키마 분해 (0) | 2025.09.22 |
| [데이터베이스 설계] 데이터베이스의 정규화(Normalization)란? ( 1 ) (0) | 2025.09.15 |
| [데이터베이스 설계] E-R 모델(관계 표현과 스키마 변환) (1) | 2025.09.10 |
| [데이터베이스 설계] ER 다이어그램이란? (0) | 2025.09.08 |