【问题标题】:Lossless join decomposition property - only one lossless decomposition for a BCNF decomposition无损连接分解属性 - BCNF 分解只有一个无损分解
【发布时间】:2018-12-13 20:36:53
【问题描述】:
在课堂上,导师发表了以下声明:
There is only one(or none) lossless BCNF decomposition for a relation,
and two BCNF decompositions are lossless for a given R iff they are logically equal
我试图用反证法来证明,假设有两个 BCNF 分解,并找到矛盾,但找不到任何矛盾。
有没有直观的解释为什么这是正确的?
【问题讨论】:
标签:
sql
database
decomposition
【解决方案1】:
严格来说,导师的说法是错误的。
想象一下任何分解,其中分解后的模式之一是 (K,D1,D2),具有唯一的 FD {K}->{D1,D2}。那是 BCNF。
但是可以进一步分解为 (K,D1) 与唯一的 FD {K}->{D1} 和 (K,D2) 与唯一的 FD {K}->{D2}。这也是 BCNF(甚至是 6NF)。
这意味着您有两个不同的可能分解,它们都是 BCNF。
(自然而然地认为,在此类课程中,进一步分解是没有意义的,它们只是被忽略了,因为“无论如何,没有人会考虑它们”或诸如此类的东西,但这不是很有科学意识.)