考虑R(A,B,C,D,E,F,G)与下列类型属性的关系:-
密钥总数=1= {A}
简单(或)原子(或)单值属性集= {B,C}
多值属性集= {D,E}
组合属性集={ F,G}
将关系R分解成1NF后存在的表的最小no是多少?
(A) 3 (B) 2 (C) 4 (D) 5
我的尝试:
对于每个给定键(A),总计=2的多值属性,我们需要不同的表
类似地,对于每个复合属性,我们需要不同的表,总计= 2。
共有4个这样的属性。我在每个表(4)中给出了4张带有给定键(A)的表。我可以将原子属性(B,C)插入到给定的4个表中的任何一个。因此,我得出的结论是,4个表足以表示第一范式的关系。
你能用正式的方式解释一下吗?
发布于 2016-05-27 12:23:35
- **For each attribute component that can be missing:**为该组件添加了一个与多值无关候选键的属性和一个属性的关系。对于具有该组件的原始关系的每一行,在新关系中都有一行,其候选键属性值为原始行的属性值,其新属性值为组件的值。然后从复合属性值中删除组件。这会增加每个组件可能缺少的一个关系。
-每个剩余组件的:
向原始关系中添加一个属性,其值在每一行中都是组件的值。然后删除复合属性。这没有增加任何关系。
- **For an attribute of a type that can have zero elements:**添加一个与多值无关候选键和该属性的属性之间的关系。对于原始关系的每一行,在新关系中都有一组行,其候选键属性值为原始行的属性值,其新属性值为多值属性的元素。然后删除多值属性。这增加了每个多值属性的一个关系。
-对始终具有元素的类型的每个属性:
将原始关系的每一行替换为一组行,其多值属性值是多值属性的元素,其他属性值为原始行的元素。这没有添加任何关系。
最后的关系是{A,B,C,F1,…,G1,…},{A,D}和{A,E},总共1(对于原始和复合)+2(对于多值)。
当然,在实践中,您应该将新表规范化,这可能会生成新表。但这是为了改进设计。在这里,我们想要一个尽可能少添加表格的设计。
(不存在将关系“分解”为1NF的事情。原始意义上的“正常化”意味着摆脱关系价值属性。后来的归一化理论认为所有的关系都在1NF中。参见this re 1NF &原子性。我们可以用一个或多个属性替换具有同质部分(多值)或异质部分(复合)的属性的关系,而这些关系具有部件的属性。我们可以将非关系设计转换为关系设计。但这种非关系设计不会有候选/主键,因为它只为关系定义。)
https://stackoverflow.com/questions/37481380
复制相似问题