RDBMS中的传递依赖有什么问题?

时间:2012-06-29 11:41:28

标签: sql database normalization

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

1 个答案:

答案 0 :(得分:3)

想象一下,插入此行:

 Indiana Invitational   1998    Al Fredrickson  21 July 1975

然后你插入这个(比方说,误):

 Des Moines Masters     1999    Al Fredrickson  20 June 1985

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

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