2

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

R(ABCDEF)

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

我已将候选键导出为AB and BC.

考虑到所有的 FD 都至少包含部分候选键,这种关系在 BCNF 中是正确的吗?

多谢你们!

4

1 回答 1

6

您派生了正确的密钥:AB 和 BC。

考虑到所有的 FD 都至少包含部分候选键,这种关系在 BCNF 中是正确的吗?

不。非正式地,当且仅当每个 FD 中的箭头是候选键外的箭头时,关系才属于 BCNF。换句话说,当且仅当每个函数依赖的左侧都是候选键时,关系才属于 BCNF。的左边C->AF是 C,但 C 不是候选键。所以 R 不在 BCNF 中。

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

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

使用所有候选键。规范化总是考虑所有候选键。

于 2014-10-23T02:41:48.713 回答