我不明白 Boyce-Codd 范式。我看了我的课本,但我不明白。假设关系 R = (A,B,C,D,E) 和 F={A->C, D->CB, AC->E}。你如何确定 R 是否在 BCNF 中?需要帮忙。谢谢!
问问题
1282 次
2 回答
2
为了确定一个关系是否是 BCNF,我们检查它的功能依赖关系。
如果对于每个 FD X→Y,则在 BCNF 中,我们要么有
- X→Y 是一个平凡的函数依赖 (Y ⊆ X)
- X 是模式 R 的超键。
FD是A→C,D→CB,AC→E。让我们从第一个 FD A→C 开始。
A→C 不是平凡的,因为 C ∉ A。例如,A→A 是平凡的依赖。
现在 A→C 是超级键吗?为了检查我们是否计算了 FD 左侧的闭包,在这种情况下是 A。闭包是 A 逻辑暗示的所有元素。 [A]+ = A ∪ C ∪ E = ACE 或者我们有 A→ACE。
ACE 不是超级键,因为它包含关系的所有属性。
所以这个关系不在 BCNF 中,因为 A→C 既不是平凡的也不是超级键。
还有其他违反 BCNF 的行为。[D]+ = BCD,它不是超级密钥或微不足道的。[AC]+ = ACE,它不是超级密钥或普通密钥。
希望这可以帮助!我认为一切都是正确的,但我现在正在为期末考试而学习,并尝试学习很多这些材料。
于 2013-12-09T08:14:10.177 回答
0
非正式地,您首先确定所有候选键。然后您查看功能依赖项中的箭头。
如果每个箭头都是候选键中的箭头,则它在 BCNF 中。
于 2013-12-06T18:02:10.640 回答