sql - RDBMS 中传递依赖的问题是什么?

标签 sql database normalization

我正在研究维基百科中关于数据库规范化 2NF 的文章 Wikipedia ,当我遇到最后一个例子时,关于锦标赛获胜者。那里说因为表中存在传递依赖性,所以它不在 2NF 中,需要进一步优化(比如将其拆分为更多表)以将其恢复为 3NF 并消除数据损坏的可能性。任何人都可以告诉我什么样的“腐败”可以潜入“显示同一个人在不同记录中显示不同的出生日期”?

最佳答案

想象一下,一旦您插入这一行:

 Indiana Invitational   1998    Al Fredrickson  21 July 1975

然后你插入这个(比如说,错误地):

 Des Moines Masters     1999    Al Fredrickson  20 June 1985

如您所见,同一个人在此表中有 2 个不同的生日。维基百科文章所说的是生日取决于人,这不是主键。这意味着该人可以重复,如果您不注意,其相关属性(例如出生日期)可能会发生变化。

您应该做的是制作另一个以人名作为主要属性的表,并将其相关数据移至该表(例如此人的出生日期)。这样,您将避免冗余的 (name, birthday) 元组并防止可能的损坏(以及节省内存)。

关于sql - RDBMS 中传递依赖的问题是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11261129/

相关文章:

database - grails:从 Controller 在数据库中创建条目

php - SQL SELECT JOIN 重复输出

javascript - 多个数据库查询以 json 对象形式返回。更清洁的方法?

c - 规范化 0-9999 之间的 18 位输入

linq - 使用 LINQ 规范化数据

mysql - SQL where 等于表达式

php - Mysql 查询选择具有不同列值的结果

php - 将所有表和字段更改为 MYSQL 中的 utf-8-bin 排序规则的脚本

php - 无法将太大的sql文件导入mysql

asp.net - 评论系统设计