考虑具有以下属性类型的关系 R(A, B, C, D, E, F, G):-
键总数 = 1 = {A}
一组简单(或)原子(或)单值属性 = {B, C}
多值属性集 = {D, E}
复合属性集 = { F, G}
将关系 R 分解为 1NF 后,存在的表的最小数量是多少?
(A) 3 (B) 2 (C) 4 (D) 5
我的尝试:
对于具有给定键(A)的每个多值属性,我们需要不同的表,总计 = 2
同样,我们需要为每个复合属性使用不同的表,总计 = 2。
这样的属性一共有4个。我给出了 4 个表,每个(4)个表中都有给定的键(A)。我可以将原子属性(B,C)插入给定的 4 个表中的任何一个。因此,我得出的结论是,4 个表足以表示第一范式的关系。
您能用正式的方式解释一下吗?
如果关系的所有候选键都包含多值属性:
为至少一个多值属性引入代理属性。
-
对于您认为“复合”的每个属性(具有异构组件,如元组):
-
对于您认为“多值”的每个属性(具有同质元素,如关系):
所以这里的最终关系是 {A,B,C,F1,...,G1,...}, {A,D} 和 {A,E},总共 1 (对于原始和合成) + 2 (对于多值)。
当然,在实践中你应该规范化新表,这可能会生成新表。但那是为了改进设计。在这里,我们想要一个添加表格尽可能少的设计。
(不存在将关系“分解”为 1NF 的情况。“规范化”的原始含义意味着摆脱关系值属性。后来的规范化理论认为每个关系都在 1NF 中。参见this https://stackoverflow.com/a/24038895/3404097关于 1NF 和原子性。
我们可以用一个或多个具有部分属性的关系来替换我们认为具有同质部分(多值)或异质部分(复合)的属性的关系。我们可以将非关系设计转换为关系设计。但这种非关系设计不会有候选键/主键,因为它仅为关系定义。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)