如果我有两个表 - table beer
和table distributor
,每个表都有一个主键,第三个表有外键并调用beer_distributor
此表中的新字段(主键)是否足够?另一种方式是连接,对吗?要获得例如DUVEL De vroliijke饮酒者?
答案 0 :(得分:4)
你一定有正确的想法。您的beer_distributor
表格就是junction table。 JOIN和键/索引一起使用。数据库系统使用密钥使JOIN快速有效地工作。您可以通过将beer
和distributor
表连接到此表来使用此联结表。
并且,您的联结表应该有一个跨越两列的主键(多列索引/“复合索引”),如果我正确理解该图,它看起来就像它一样。在那种情况下,它对我来说很好看。做得很好。
答案 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