我遇到了一个标准化问题,如下所示:
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
}发布于 2015-12-31 07:30:54
是的,你的回答是正确的。正如在维基百科中所说的
如果每个属性的域仅包含原子值,而每个属性的值仅包含来自该域的单个值,则关系处于第一范式。
换句话说,您不能拥有下列属性:
因此,att1和class2必须由它们的组分取代。
注意,在结果关系中,对于与nb1、nb2和nb3不同的所有其他属性,有不同的行具有相同的值。
这一范式最初是在E.Codd于1971年发表的一篇论文中介绍的:E.F.Codd,数据库关系模型的进一步规范化,Courant Institute: Pr共-Hall,ISBN 013196741X,
如果一个关系具有它的域中没有一个元素本身就是集合的属性,那么它就是第一范式。
(见维基百科引用)。
这种范式现在只因为历史原因才出现在所有关于关系理论的书中,因为这个属性现在被认为是关系数据库模型的一部分。例如,见R.Elmasri,S.Navathe,Addison著的“数据库系统的基本原理”一书(第6版第519页,ISBN: 978-0-13-608620-8):
第一正规形式 First normal form (1NF)现在被认为是基本(平面)关系模型中关系形式定义的一部分;历史上,它被定义为不允许多值属性、复合属性及其组合。它指出,属性的域必须只包含原子(简单、不可分割)值,而元组中的任何属性值必须是该属性域中的单个值。因此,1NF不允许将一组值、一组值或两者的组合作为单个元组的属性值。换句话说,1NF不允许关系中的关系或关系作为元组中的属性值。1NF允许的唯一属性值是单个indivisible)原子(或值)。
https://stackoverflow.com/questions/34541122
复制相似问题