我有如下的标准化问题:
R={
att1(nb1, nb2, nb3),
att2, val1, val2, def1, class1,
class2{notion1, notion2},
def2,col1
}
此处,attr1
是一个多值属性,class2
是一个复合属性。
如何将R
转换为1NF?
是否如下所示?
R={
nb1, nb2, nb3,
att2, val1, val2, def1, class1,
notion1, notion2,
def2,col1
}
答案 0 :(得分:3)
是的,你的回答是正确的。正如在Wikipedia中所说:
如果每个属性的域仅包含原子值,并且每个属性的值仅包含该域中的单个值,则关系为第一范式。
换句话说,您不能拥有以下属性:
因此,att1
和class2
必须由其组件替换。
请注意,在结果关系中,不同的行具有与nb1
,nb2
和nb3
不同的所有其他属性的相同值。
这种正常形式最初是由E. Codd在1971年的一篇论文中引入的:EF Codd,数据库关系模型的进一步规范化,Courant Institute:Prentice-Hall,ISBN 013196741X,< / p>
如果关系具有其所有域都没有自身设置的元素的属性,则该关系位于第一范式中。
由于此属性现在被视为关系数据库模型的一部分,因此这种正常形式现在仅出于历史原因出现在关系理论的所有书籍中。例如,参见R. Elmasri,S. Navathe,Addison Wesley的书数据库系统基础一书(第6版第519页,ISBN:978-0-13-608620-8):
第一范式
第一范式(1NF)现在被认为是基本(平面)关系模型中关系的正式定义的一部分;从历史上看,它被定义为禁止多值属性,复合属性及其组合。它声明属性的域必须只包含 atomic (简单,不可分割的)值,并且元组中任何属性的值必须是单个值来自该属性的域。因此,1NF不允许将一组值,一组值或两者的组合作为单元组的属性值。换句话说,1NF不允许关系或关系中的关系作为元组中的属性值。 1NF允许的唯一属性值是单个原子(或不可分割)值。