为什么要在pivottable中定义外键为主键?

Why should we define foreign keys as primary keys in pivot table?

今天遇到一个问题,有人在Pivot中定义外键为主键Table!这是为什么?它对性能有影响吗?有哪些好处和用例?我们是否应该将外键定义为枢轴 table 中的主键以使它们唯一?

我的问题示例:

为什么要把我们的多对多关系外键定义为主键?

这是在 N-M 关系中构建连接点 table,又名桥梁 table 的正确方法。

理由:

  • each order_id (resp user_id) 应该引用 master table orders (resp users) 中的一条记录,所以你确实希望这些列中的每一列都有一个外键来强制数据完整性

  • 每个 (order_id, user_id) 元组在桥中不应出现超过一次 table:这可以通过使用此列元组作为复合主键或通过设置来强制执行unique 约束。

当然,也可以为联结点定义一个独立的主键table(就像一个自动递增的pk),但这主要是个人喜好问题。