为什么将表关系存储在不同的表中?

时间:2010-12-16 14:06:29

标签: sql mysql database database-design

我见过人们经常使用单独的表来存储表之间的关系。

实施例, 表Company_companys有两列,一个是nodeid,它是一个公司ID,一个linkid是另一家公司的公司ID。

为什么人们在公司表格中使用额外的列完成同样的事情时会这样做?是出于性能原因吗?或者还有其他原因吗?

编辑:感谢大家的答案和示例,我现在明白,为了在需要多对多关系时实现First Normal Form,需要一个单独的表来存储多个链接。在考虑上述问题时,我几乎忘记了多对多关系的概念,所以我从一对多的关系角度思考它:)

3 个答案:

答案 0 :(得分:9)

这可能是因为它代表了 MANY TO MANY 的关系。根据您提到的方法,您只有 ONE TO MANY 关系。

因此,在您的示例中,如果您的表语义意味着代表可能与许多其他公司相关的任何公司,那么您需要一个单独的表。

答案 1 :(得分:2)

如果您有Many to many relationship

,则需要额外的“链接”表格

答案 2 :(得分:1)

解决多对多( .. )关系的问题。使用带有外键的第三个表创建2个一对多关系,因为多对多关系通常是错误的数据库设计。