规范化:单行中的两列需要来自同一表的数据

时间:2010-01-14 16:35:12

标签: normalization

我有一张表格,其中包含以下字段:

已分配并已完成

这些字段引用employee表。

我只是想知道这是否正常化或我是否遗漏了什么。

由于

2 个答案:

答案 0 :(得分:3)

是的,将表中的多个列作为外键存入另一个表是正确的(并且是适当的)。你的案例就是一个很好的例子......

实际上有很多例子 - 一个客户表可以有一个邮寄地址和一个发送地址,它们都指向一个地址表。联系表可以有一个HomePhone,WorkPhone,Fax和Mobile列都可以指向到电话台(虽然有其他更好的方法可以做到这一点)

答案 1 :(得分:0)

注意:我会将你的第二张桌子称为“Stuff”,因为我不知道还有什么可以称之为。

如果AssignedTo和CompletedBy字段都是Employee表的外键,则为3NF。如果你真的想要使用规范化,你可以有第三个表StuffCompletion,它有一个标识列和这两个值,并用StuffCompletion的外键替换你的Stuff表中的这两个值。我想大多数人会认为这种矫枉过正,而模式之神可能会对你造成破坏。