多对多的关系

时间:2011-04-28 01:45:32

标签: mysql database

如果我有两个表 - table beertable distributor,每个表都有一个主键,第三个表有外键并调用beer_distributor

enter image description here

此表中的新字段(主键)是否足够?另一种方式是连接,对吗?要获得例如DUVEL De vroliijke饮酒者?

2 个答案:

答案 0 :(得分:4)

你一定有正确的想法。您的beer_distributor表格就是junction table。 JOIN和键/索引一起使用。数据库系统使用密钥使JOIN快速有效地工作。您可以通过将beerdistributor表连接到此表来使用此联结表。

并且,您的联结表应该有一个跨越两列的主键(多列索引/“复合索引”),如果我正确理解该图,它看起来就像它一样。在那种情况下,它对我来说很好看。做得很好。

答案 1 :(得分:2)

我会在连接表beer_distributor中放置一个主键,而不是两个外键的双主键。 IMO,它在维持这种关系时让生活更轻松。

更新

要强调这一点,请考虑更改啤酒ACOO9的经销商163。使用双主键,您必须删除然后重新插入或知道两个现有值以更新记录。使用单独的主键,您只需使用此值更新记录。在最重要的数据上构建应用程序时派上用场。如果这是严格意义上的数据仓库,那么从DBA的角度来看,双主键可能更有意义。

UPDATE beer_distributor SET distributor_id = XXXXX WHERE beer_id = 163 AND distributor_id = AC009

UPDATE beer_distributor SET distributor_id = XXXXX WHERE id = 1234