规范化与第三范式的关系
Normalizing the relation to third normal form
鉴于以下函数依赖关系,这对我来说有点混乱,因为第三范式表示 R 的非主属性不传递依赖于主键。所以我删除了功能依赖
C --> DE from table 并将其置于新关系中,但所有这些属性也可以由关系的主键确定。我认为我无法从此 table 中删除 D 和 E 或者我应该删除因为进一步的 BCNF 也无济于事删除这些 attributes.Question 是当我删除第一个功能依赖时,我是否也应该从第一个 table 中删除 D 和 E? enter image description here
要将关系放入给定的 NF(范式),您应该遵循针对该 NF 建议的算法。 (例如,给定一些 FD,根据 Armstrong 公理,还有很多其他 FD 成立;您也需要处理它们。例如,"preserving" FD 在可能的情况下有一定的好处,并且分解为 3NF 组件以保留 FD总是可能的;但是如果我们分解以便某些 FD 的属性在组件之间拆分,我们可能无法保留 FD。)
请注意,这些算法不涉及首先归一化为较低的 NF。 (这可以阻止 "good" 更高 NF 设计成为最终结果。)
当您分解以从与属性 R 的关系中去除 FD X -> Y 时,如果组件具有属性集 X U Y 和 R - Y,则分解将始终是 non-loss/non-additive。通过重复分解你所有的组件最终都会在你想要的 NF 中(如果它是 BCNF 或更低)。但是您的整体分解不一定像建议的算法那样 "nice"。
鉴于以下函数依赖关系,这对我来说有点混乱,因为第三范式表示 R 的非主属性不传递依赖于主键。所以我删除了功能依赖 C --> DE from table 并将其置于新关系中,但所有这些属性也可以由关系的主键确定。我认为我无法从此 table 中删除 D 和 E 或者我应该删除因为进一步的 BCNF 也无济于事删除这些 attributes.Question 是当我删除第一个功能依赖时,我是否也应该从第一个 table 中删除 D 和 E? enter image description here
要将关系放入给定的 NF(范式),您应该遵循针对该 NF 建议的算法。 (例如,给定一些 FD,根据 Armstrong 公理,还有很多其他 FD 成立;您也需要处理它们。例如,"preserving" FD 在可能的情况下有一定的好处,并且分解为 3NF 组件以保留 FD总是可能的;但是如果我们分解以便某些 FD 的属性在组件之间拆分,我们可能无法保留 FD。)
请注意,这些算法不涉及首先归一化为较低的 NF。 (这可以阻止 "good" 更高 NF 设计成为最终结果。)
当您分解以从与属性 R 的关系中去除 FD X -> Y 时,如果组件具有属性集 X U Y 和 R - Y,则分解将始终是 non-loss/non-additive。通过重复分解你所有的组件最终都会在你想要的 NF 中(如果它是 BCNF 或更低)。但是您的整体分解不一定像建议的算法那样 "nice"。