sud*_*fee 2 database 3nf candidate-key bcnf
我在理解如何确定关系是否在 BCNF、3NF 中以及通常识别关系的候选键时遇到问题。
考虑R = (A, B, C, D)与函数依赖关系:
AB -> C
C -> D
D -> A
Run Code Online (Sandbox Code Playgroud)
问题包括:
一种。列出 R
b的候选键。确定 R 是否在 BCNF 或 3NF 中。
解决方案解决
一种。R 的 3 个候选键是 AB、BC 和 BD。
湾 R 属于 3NF,但不属于 BCNF。
我已经阅读了 3NF 和 BCNF 有什么区别?并且在引用数据库模式中的非任意词时可以理解 3NF 和 BCNF 之间的区别。正如问题中给出的那样,在尝试确定具有减少关系的关系时,我最终迷失了方向。
有人能解释一下上面的候选键是如何确定的,为什么 R 在 3NF 而不是 BCNF?
你同时问了几个问题。
如何计算关系的键。一般来说,最简单的方法是计算每个属性组合的闭包,并确定哪些是超键。从这组超级键中,找到那些最小的:这些是候选键。
如何确定关系是否为 BCNF。
为此,您不需要钥匙。你需要做的就是测试每个非平凡的函数依赖,左边是关系的超键。
对于 FD,您如何确定这一点?只需计算 FD 左侧的闭合。如果结果是关系的所有属性,那么它就是一个超键。
FD 必须采用规范形式:右侧的一个属性。
对于每个非平凡的 FD,左手是超级键(如在 BCNF 中)或右手是键的一部分(任意键)。
这是一个非常不错的视频,解释的差异: