Relational database 这张桌子是2NF的吗?

Relational database 这张桌子是2NF的吗?,relational-database,database-normalization,Relational Database,Database Normalization,在尝试了解数据库规范化时,我被下表弄糊涂了: Name Date Organisms aging 1984-07-13 human aging 1984-07-13 worm wrinkle 1987-08-15 human wrinkle 1987-08-15 mouse hairy 1990-09-30 mouse 命名日期生物 老龄化1984-07-13人类 老化1984-07-13 皱纹1987-0

在尝试了解数据库规范化时,我被下表弄糊涂了:

Name Date Organisms aging 1984-07-13 human aging 1984-07-13 worm wrinkle 1987-08-15 human wrinkle 1987-08-15 mouse hairy 1990-09-30 mouse 命名日期生物 老龄化1984-07-13人类 老化1984-07-13 皱纹1987-08-15人类 皱纹1987-08-15小鼠 毛茸茸的1990-09-30小鼠 我正在使用的这本书以1NF中的表格为例介绍了这一点。然而,在阅读了维基百科关于1NF、2NF和3NF的文章后,我有点困惑

据我所知,这个表有两个候选键:{Name,orbiats}和{Date,orbiats}。根据维基百科():

当且仅当1NF表的所有非素数属性在功能上依赖于每个候选键的整体时,1NF表才是2NF表。(非素数属性是不属于任何候选密钥的属性。) 根据“非素数属性”的定义,在我看来,这个表没有非素数属性,因为每个字段至少属于两个候选键中的一个。如果没有非素数属性,那么(因为该表在1NF中),根据维基百科的定义,该表似乎在2NF中


然而,我认识到这个表的设计很差,并且容易出现更新错误,所以我想我一定是在某个地方犯了逻辑错误如果有人能解释这个表的标准形式和/或我的推理有缺陷的地方,我将不胜感激。

如果你正确地认为不存在非质属性,那么所讨论的关系至少是2NF。然而,仅基于一组属性名称猜测可能应用哪些键和依赖项始终是一个非常主观的练习。这样的示例只有在定义应该满足哪些依赖项时才真正有用


我建议你不要依赖你在维基百科上读到的任何东西。这不是一个好的教育工具。找一本关于这个主题的像样的书,比如Chris Date或David Maier的书。

如果你正确地认为不存在非质属性,那么所讨论的关系将至少是2NF。然而,仅基于一组属性名称猜测可能应用哪些键和依赖项始终是一个非常主观的练习。这样的示例只有在定义应该满足哪些依赖项时才真正有用


我建议你不要依赖你在维基百科上读到的任何东西。这不是一个好的教育工具。找一本关于这个主题的像样的书,比如Chris Date或David Maier的书。

不要认为{Date,organism}是一个候选键,因为这意味着同一日期,organism不能有不同的名称。但是{名称,有机体}看起来它可以。。。问题是,日期是否取决于姓名或组织,这并不矛盾。在2NF中意味着它也在1NF中。事实上,根据定义,任何关系都属于1NF。看来这本书是对的。维基是一个粪池,有着由业余爱好者编写的不断变化的“定义”。不要浪费你的时间,它会让你困惑,阻碍你的进步。这个定义是错误的。通过“在功能上依赖于每个候选键的整体”(根据CK的定义,这始终是正确的),它试图说“在功能上不依赖于候选键的任何适当/较小的子集”。当基表将持有的所有有效值都在NF中时,基表位于NF中。所以一个例子的最高NF只告诉你一个上限,这个上限是一个能容纳它的基的最高NF。也。PS如果不提供FDs和JDs,则无法判断值/基是否存在更新异常或其最高NF。我们可以知道一些NFs&上面没有。不要认为{Date,organism}是一个候选键,因为这意味着同一日期,organism不能有不同的名称。但是{名称,有机体}看起来它可以。。。问题是,日期是否取决于姓名或组织,这并不矛盾。在2NF中意味着它也在1NF中。事实上,根据定义,任何关系都属于1NF。看来这本书是对的。维基是一个粪池,有着由业余爱好者编写的不断变化的“定义”。不要浪费你的时间,它会让你困惑,阻碍你的进步。这个定义是错误的。通过“在功能上依赖于每个候选键的整体”(根据CK的定义,这始终是正确的),它试图说“在功能上不依赖于候选键的任何适当/较小的子集”。当基表将持有的所有有效值都在NF中时,基表位于NF中。所以一个例子的最高NF只告诉你一个上限,这个上限是一个能容纳它的基的最高NF。也。PS如果不提供FDs和JDs,则无法判断值/基是否存在更新异常或其最高NF。我们可以知道一些NFs&上面没有。Maier的《关系数据库理论》一书现在在线提供。梅尔的书《关系数据库理论》现在可以在网上找到。