将关系规范化为第三范式

时间:2017-05-25 15:04:12

标签: relational-database database-normalization functional-dependencies

鉴于以下功能依赖性,对我来说有点混乱,因为第三范式表示R的非主要属性没有传递依赖于主键。所以我删除了功能依赖 C - >来自表的DE 并将其置于新的关系中,但所有这些属性也可以通过关系的主键来确定。我认为我无法从此表中删除 D E ,或者我应该删除,因为进一步的BCNF也无法帮助删除这些属性。问题是当我首先删除功能依赖还应该从第一个表中删除 D E 吗?enter image description here

1 个答案:

答案 0 :(得分:0)

要将关系置于给定的NF(正常形式)中,您应该遵循已建议该NF的算法。 (例如,给定一些FD,根据阿姆斯特朗的公理,还有很多其他的东西;你需要处理它们。例如,在可能的情况下“保留”FD有一定的好处,并且分解为保留FD的3NF组件总是如此可能;但如果我们分解以便某些FD的属性在组件之间分开,我们就无法保留FD。)

请注意,这些算法不涉及首先标准化以降低NF。 (这可以阻止“好”的高级NF设计成为最终结果。)

当您分解以消除FD X时 - > Y与属性R的关系,如果组件具有属性集XUY和R-Y,则分解将始终是非损失/非累加的。通过重复分解,所有组件最终将在您想要的NF中(如果是BCNF或以下)。但是你的整体分解不一定像建议的算法那样“好”。