我应该在多对多"链接"表中使用索引列吗?

Mat*_*iva 5 sql database database-design entity-relationship

我有两个表,products并且categories有很多关系,所以我添加了一个products_categories包含category_id和的表product_id.

我应该添加另一个(自动递增)索引列还是使用两个现有索引列作为主键?

Tom*_*icz 11

那要看.

  • 您是否将数据更多地视为对象集(并且关系数据库只是一种存储介质)或者是由关系代数本地表示和分析的一组事实.

  • 某些ORM /框架/工具不能很好地支持多列主键.如果您碰巧使用其中一个,则需要额外的id列.

  • 如果它只是一个多对多关系而没有与之关联的其他数据,最好避免使用额外的id列并将两列作为主键.

  • 如果你想为这个关联添加一些额外的信息,那么它将变成两个实体的多对多关系.所以它成为它自己的实体,如果它拥有独立于它连接的实体的自己的id,它会更方便.


Tho*_*thy 6

不需要添加额外的自动递增索引列,但我(可能与其他大多数人相反)仍然建议您这样做.首先,应用程序更容易使用单个数字引用行,例如删除行时.其次,有时能够知道添加行的顺序是有用的.

  • 不要使用自动编号功能对行施加自然的时间顺序。自动编号的实现者可以自由地实现打破这种相关性的算法。 (3认同)