代码之家  ›  专栏  ›  技术社区  ›  steven

很多没有主键的

  •  0
  • steven  · 技术社区  · 16 年前

    在此演示文稿中: http://docs.google.com/present/view?id=ddqht6x_1559tbtcgg 幻灯片6。 演示者的代码片段标记表有一个主键,为什么?这不是在浪费空间吗? 我通常用另外两种颜色。而且不需要使用主键。

    6 回复  |  直到 16 年前
        1
  •  3
  •   Damien_The_Unbeliever    16 年前

    是的,id列是不必要的,pk应该与其他两列相对。

    但请大家都说清楚。ID栏!=主键。

        2
  •  1
  •   Alexander Kjäll    16 年前

    如果要将其他数据链接到关系。

    例如,您可能希望添加一个日志表,其中包含创建关系时的链接或类似的链接。

    如果需要添加此类元数据,则不希望将其添加到关系表中,因为这需要尽可能地紧凑,以提高联接的效率,因此需要添加主键并将其链接到具有所有元数据的另一个表中。

        3
  •  1
  •   Maximilian Mayerl    16 年前

    我必须同意你的意见。我会把snippet_id和tag_id作为主键,这也保证了不存在不必要的重复条目。

        4
  •  1
  •   Salman Arshad    16 年前

    只是品味问题。这两种做法都很常见。

        5
  •  0
  •   Michael F    16 年前

    在那种情况下,它是没有用的。但是,如果该表涉及到一对多关系(这表明设计错误得可怕),那么就需要它。

        6
  •  0
  •   snahor    16 年前

    这种模式非常常见。在我看来,在这种情况下,我应该使用复合pk snippet_id tag_id . 我看不到比复合模型“真正”的优势,也许您可以节省磁盘空间。

    复合模型的优点是可以避免 joins 只需查询外键即可。