【发布时间】:2014-10-23 01:21:27
【问题描述】:
我对 DB BCNF 违规标准的某个特定方面感到困惑。这是一个例子:
R(ABCDEF)
FD 是BC->D, C->AF, AB->CE。
我已将候选键派生为AB and BC。
如果所有的 FD 都包含至少部分候选键,那么关系在 BCNF 中正确吗?
谢谢大家!
【问题讨论】:
-
“我已经将候选键导出为
AB->CE or BC->D。” 这些是功能依赖项,而不是候选键。可能有多个候选键。你不能从中选择;您可以识别出所有个。 -
" . . . . . . . . . . . 关系仍然在 BCNF 中,因为所有的 FD 都至少包含候选键的 LHS 的一部分?" 不,它在 BCNF如果每个 FD 中的箭头是候选键中的箭头。在这种情况下,R 不在 BCNF 中,因为
C->AF中的箭头不是候选键中的箭头。 (C 不是 R 中的候选键。) -
嗨。感谢您的指正。我已经编辑了这个问题,但 CK 仍然是 AB 和 BC。那么,为了让 R 在 BCNF 中,所有 FD 的 LHS 必须至少包含一个 FULL 候选键(在这种情况下,AB 或 BC)?
-
还有一件事,如果我想找出 R 中的违规行为,我应该选择一个 CK 并将所有 FD 与该 CK 进行比较,还是在比较 FD 时使用所有 CK ?非常感谢!