我对DB BCNF违规标准的特定方面感到困惑。这是一个例子:
R(ABCDEF)
FD是BC->D, C->AF, AB->CE
。
我已将候选键派生为AB and BC
。
如果所有FD都包含至少部分候选键,那么关系是在BCNF中的权利吗?
谢谢你们!
答案 0 :(得分:6)
您获得了正确的密钥:AB和BC。
鉴于所有FD至少包含,该关系在BCNF中是正确的 部分候选人密钥?
没有。非正式地,当且仅当每个FD中的箭头是候选键中的箭头时,关系才在BCNF中。换句话说,当且仅当每个功能依赖性的左侧是候选键时,关系在BCNF中。 C->AF
的左侧是C,但C不是候选键。所以R不在BCNF。
(来自OP的评论......)
还有一件事,如果我想找出R中的违规行为,应该 我选择一个CK并将所有FD与该CK进行比较,或者我应该 比较FD时使用所有的CK?
使用所有候选键。规范化始终考虑 all 候选键。