릴레이션 R(A, B, C, D)에 대한 함수 종속집합이 아래와 같을 때 3정규형으로 분해
| AB→D, B→CD, A→B |
제3정규형(3NF)으로 분해하기 위해서는 먼저 후보키(Candidate Key)를 찾고, 이행적 함수 종속(Transitive Dependency)을 제거해야 합니다.
1. 주어진 함수 종속성(FD) 분석
- AB → D
- B → CD (즉, B → C 이고 B → D)
- A → B
2. 후보키(Candidate Key) 도출
- A가 주어지면 A → B에 의해 B를 알 수 있습니다.
- B를 알면 B → CD에 의해 C와 D를 알 수 있습니다.
- 따라서 A 하나만으로 모든 속성(A, B, C, D)을 결정할 수 있으므로, A가 후보키가 됩니다. (A → B → C, D)
3. 제3정규형(3NF) 위반 확인
- 3NF의 조건: 결정자(화살표 왼쪽)가 후보키가 아니면서 일반 속성을 결정하는 경우(이행적 함수 종속)를 없애야 합니다.
- 여기서 B → C, D 관계를 봅니다.
- B는 후보키(A)가 아닙니다.
- 하지만 B가 C, D를 결정하고 있습니다. (이행적 종속: A → B → C,D)
- 따라서 이 부분이 3NF를 위반하고 있으므로 분해해야 합니다.
4. 3NF로 분해 (무손실 분해)
- 3NF 위반의 원인인 B → C,D를 별도의 릴레이션으로 분리합니다.
- R2(B, C, D)
- 원래 릴레이션에서 C, D를 제거하고, 결정자 B만 남겨 키인 A와 연결합니다.
- R1(A, B)
따라서 올바르게 분해된 결과는 R1(A, B), R2(B, C, D)가 됩니다.
이때 AB → D는 B → D에 의해 논리적으로 포함(흡수)되어 해결된 것입니다.
상세한 논리 과정은 다음과 같습니다.
1. 함수 종속성의 포함 관계 (암스트롱의 공리)
문제에서 주어진 조건들을 다시 살펴보겠습니다.
- (조건 2) B → CD ▶ 이것은 B → D 와 B → C로 쪼개질 수 있습니다.
여기서 B → D 라는 조건이 이미 존재한다는 점이 핵심입니다.
- B 하나만으로도 D를 결정할 수 있다면, B 옆에 A가 붙은 AB 상황에서도 당연히 D를 결정할 수 있습니다.
- 이것을 데이터베이스 이론(암스트롱의 공리)에서는 첨가 규칙(Augmentation Rule)이라고 합니다.
- 만약 B → D 이면, XB → D 도 성립한다. (여기서 X는 A)
2. 정규화 과정에서의 처리
정규화를 수행할 때는 "최소한의 결정자"를 기준으로 분해합니다.
- D를 결정하는 데 있어서 A와 B가 모두 필요한가? (AB → D)
- 아니면 B만 있어도 되는가? (B → D)
문제의 조건(B → CD)에 의해 B만 있어도 D가 결정되므로, AB → D라는 조건은 B → D에 의해 커버(Cover)되는 덜 강력한 조건이 됩니다. 즉, 중복된 정보로 간주합니다.
3. 결론
따라서 정규화 결과인 R2(B, C, D) 릴레이션 안에 B → D 관계가 이미 살아있으므로, AB → D의 제약조건도 논리적으로 완벽하게 만족(보존)하고 있는 상태가 됩니다.
따라서 별도로 AB → D를 위한 릴레이션을 만들 필요가 없습니다.
'DB' 카테고리의 다른 글
| 순환관계가 변경에 유연한 이유 (0) | 2026.02.11 |
|---|---|
| Trigger (0) | 2026.02.11 |
| [빅데이터] HDFS(Hadoop Distributed File System) (0) | 2026.02.09 |
| [병행제어] 다중 단위 로킹(Multi-Granularity Locking, MGL) (0) | 2026.02.09 |
| [함수종속] 최소 집합(Minimal Cover) (0) | 2026.02.08 |