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