在尝试了解数据库规范化时,我对下表感到困惑:
名称 日期 生物 老化 1984-07-13 人类 老化 1984-07-13 蠕虫 皱纹 1987-08-15 人类 皱纹 1987-08-15 鼠标 毛茸茸的 1990-09-30 老鼠
我正在使用的书将此作为 1NF 中的表的示例。但是,在阅读了关于 1NF、2NF 和 3NF 的 Wikipedia 文章后,我有点困惑。
据我所知,这个表有两个候选键:{Name,Organisms} 和 {Date,Organisms}。根据维基百科(链接文本):
一个 1NF 表在 2NF 中当且仅当它的所有非主属性在功能上依赖于每个候选键的整体。(非主属性是不属于任何候选键的属性。)
根据“非主属性”的这个定义,在我看来,这个表没有非主属性,因为每个字段至少属于两个候选键中的一个。如果没有非主要属性,那么(因为该表在 1NF 中)根据维基百科的定义,该表似乎在 2NF 中。
但是,我认识到这个表设计得很糟糕并且容易出现更新错误,所以我认为我一定是在某个地方出现了逻辑错误。 如果有人能解释这张表是哪种范式和/或我的推理在哪里有问题,我将不胜感激。