我一直在阅读许多关于如何区分 3NF/BCNF 中的关系的不同资料。到目前为止,这是我的理解......
我将以这种关系为例...
R = {A, B, C, D, E}
和
F = {A -> B, B C - > E, E D -> A}.
首先,我们必须找到关系的键。我用这个视频来帮助我做到这一点。我得到了
Keys = {ACD, BCD, CDE}
现在要确保R在BCNF中,我们必须确保每个函数依赖项的左侧F都是Keys. 我们立即知道情况并非如此,因为第一个 FD 是A -> B并且A不是键之一。所以它不在 BCNF 中。
现在要确保R在3NF中,我们必须确保 in 中的每个功能依赖项的左侧F是其中一个,Keys 或者每个功能依赖项的右侧是其中F之一的子集Keys。如果您查看每个 FD 的右侧,它们B是E和A。这些都是 a 的子集Key,因此这意味着它在 3NF 中。
所以这是关系存在3NF但不在. BCNF这种方法正确吗?它可靠吗?我错过了什么吗?