数据库BCNF违规

时间:2014-10-23 01:21:27

标签: relational-database bcnf

我对DB BCNF违规标准的特定方面感到困惑。这是一个例子:

R(ABCDEF)

FD是BC->D, C->AF, AB->CE

我已将候选键派生为AB and BC

如果所有FD都包含至少部分候选键,那么关系是在BCNF中的权利吗?

谢谢你们!

1 个答案:

答案 0 :(得分:6)

您获得了正确的密钥:AB和BC。

  

鉴于所有FD至少包含,该关系在BCNF中是正确的   部分候选人密钥?

没有。非正式地,当且仅当每个FD中的箭头是候选键中的箭头时,关系才在BCNF中。换句话说,当且仅当每个功能依赖性的左侧是候选键时,关系在BCNF中。 C->AF的左侧是C,但C不是候选键。所以R不在BCNF。

(来自OP的评论......)

  

还有一件事,如果我想找出R中的违规行为,应该   我选择一个CK并将所有FD与该CK进行比较,或者我应该   比较FD时使用所有的CK?

使用所有候选键。规范化始终考虑 all 候选键。