考虑一个模式 R(A, B, C, D) 和函数依赖 A ⟶ B 和 C ⟶ D。那么为什么将 R 分解为 R1(A, B) 和 R2(C, D) 不是无损分解? 你能用现实生活中的例子解释一下这里丢失了什么信息吗?
问问题
4016 次
2 回答
10
您当然需要在无损分解中概述的两个关系 R1(A,B) 和 R2(C,D),但是您丢失了关于哪些 A 值与哪些 C 值相关联的关键信息,这些信息存在于原始 R(A, B, C, D)。所以你还需要 R3(A, C) 来保留所有的原始信息。
关系R
A B C D
1 2 13 14
2 2 13 14
3 1 12 15
关系 R1
A B
1 2
2 2
3 1
关系 R2
C D
13 14
12 15
加入 R1 和 R2(笛卡尔积);标记为 ☜</p> 的虚假行
A B C D
1 2 13 14
1 2 12 15 ☜
2 2 13 14
2 2 12 15 ☜
1 3 13 14 ☜
3 1 12 15
由于此连接与 R 不同,因此建议的分解不是无损的。
关系 R3
A C
1 13
2 13
3 12
加入 R1、R2、R3
A B C D
1 2 13 14
2 2 13 14
3 1 12 15
由于此结果关系与原始 R 相同,因此分解为 R1、R2 和 R3 是无损的。
于 2012-11-02T22:19:29.083 回答
2
那么为什么将 R 分解为 R1(A, B) 和 R2(C, D) 不是无损分解呢?
因为现在 (A,B) 和 (C,D) 是不相关的,而事实并非如此。您还需要 A 和 C 之间的关系。
于 2012-11-02T22:21:15.663 回答