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

toc*_*777 3 mysql sql database database-design

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

例如,表Company_companys有两列,一个是nodeid,它是一个公司id,一个linkid是另一个公司的companyid.

为什么人们可以通过公司表中的额外列来完成同样的事情?是出于性能原因吗?或者还有其他原因吗?

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

Pab*_*ruz 9

这可能是因为它代表了许多关系.根据您提到的方法,您只有一对多的关系.

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

  • @ toc777你不想在字段中存储一串逗号分隔值.如果你想到这样做,你需要一个相关的表. (3认同)
  • 完全同意@HLGEM.此外,这违反了**关系数据的第一范式**:每个属性**必须只存储**一个值(来自Wiki:*每个行 - 列交集包含来自适用域的一个值(并且没有)其他)*) (2认同)