多对多关系的一般形式是创建三个双列表(例如,关联最喜欢的成员电影)。两个表是电影和成员列表。在这两个表中,我们分配了一个auto_increment ID(它是主键)。然后在第三个表中存储这两个ID的关系。
我想知道为什么我们为这两列使用ID?我们可以有两个单列表作为电影和人物列表;然后创建关系表,将电影与人联系起来:
Fred Gladiator
Brian Godfather
Fred Godfather
此方法的唯一缺点是搜索仅整数表更容易找到关系。相反,我们减少了两个索引列。
有什么想法吗?
答案 0 :(得分:1)
在任何现实世界的场景中,两个表(电影和人物)将拥有更多列(如movies.year,persons.lastname,persons.firstname等)。在这种情况下,在每个表中都有一个主键列是有意义的(也可以是非自动增量列,例如movies.name),用于多对多关系。
但如果情况与您建议的那样微不足道,那么您的解决方案应该足够好。我不认为你提到的劣势真的会引起关注。
阿迪蒂亚
答案 1 :(得分:1)
我发现了许多潜在的问题:
答案 2 :(得分:1)
我想知道为什么我们为这两列使用ID?
我认为通常是cargo cult programming。
ON UPDATE CASCADE
。)有关某些测量值,请参阅this recent SO answer。
不要猜。测量