在此演示文稿中:http://docs.google.com/present/view?id=ddqht6x_1559tbtcgg 幻灯片6。 演示者的snippets_tags表有一个主键,为什么?是不是只是浪费空间? 我通常使用其他两个cols。而不是打扰主键。
答案 0 :(得分:3)
是的,id列是不必要的,PK应该与其他两列相对。
但请,我们都要清楚。 ID列!=主键。
答案 1 :(得分:1)
如果您想将其他数据与该关系相关联。
例如,您可能希望添加一个logtable,其中包含创建关系时的链接或类似内容。
如果你需要添加这种元数据,你不需要在关系表中,因为它需要尽可能紧凑,以使连接高效,所以你添加一个主键并将其链接到另一个表包含所有元数据。
答案 2 :(得分:1)
我必须同意你的意见。我会使snippet_id和tag_id成为主键,这也可以保证没有不必要的重复。
答案 3 :(得分:1)
只是品味问题。这两种做法都很常见。
答案 4 :(得分:0)
在这种特殊情况下没用。但是,如果该表涉及一对多的关系(这表明设计是非常错误的),则需要它。
答案 5 :(得分:0)
这种模式很常见。 IMO,我会使用复合pk,在这种情况下snippet_id
和tag_id
。我没有看到复合模型的“真正”优势,也许你可以节省磁盘空间。
复合模型的优点是可以避免执行joins
并只查询外键。