在尝试了解数据库规范化时,我对下表感到困惑:
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
我正在使用的这本书将它作为1NF中表格的一个例子。但是,在阅读了1NF,2NF和3NF的维基百科文章后,我有点困惑。
据我所知,这张表有两个候选键:{Name,Organisms}和{Date,Organisms}。根据维基百科(link text):
当且仅当其所有非素数属性在功能上依赖于每个候选键的整体时,1NF表在2NF中。 (非素数属性是不属于任何候选键的属性。)
根据“非素数属性”的定义,在我看来,该表没有非素数属性,因为每个字段都属于两个候选键中的至少一个。如果没有非素数属性,那么(因为这个表是1NF),维基百科定义中这个表似乎是2NF。
但是,我认识到这个表设计不合理并且容易更新错误,所以我认为我必须在某个地方出现逻辑错误。 如果有人能够解释这张桌子的正常形式和/或我的推理错误,我会非常感激。
答案 0 :(得分:1)
如果你没有nonprime属性是正确的,那么所讨论的关系至少是2NF。但是,猜测只根据一组属性名称可能适用的键和依赖关系总是一个非常主观的练习。像这样的例子在你定义应该满足哪些依赖项时才真正有用。
我建议您不要依赖维基百科中的任何内容。这不是一个好的教育工具。获得一本关于这个主题的好书,例如Chris Date或David Maier。