数据库BCNF违规

ant*_*kbd 1 relational-database bcnf

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

R(ABCDEF)

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

我已经得出了候选键AB and BC.

鉴于所有FD都包含至少部分候选键,因此该关系在BCNF中是正确的吗?

多谢你们!

Mik*_*ll' 6

你得到了正确的密钥:AB和BC.

鉴于所有FD都包含至少部分候选键,因此该关系在BCNF中是正确的吗?

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

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

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

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