为什么要在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),但这主要是个人喜好问题。
今天遇到一个问题,有人在Pivot中定义外键为主键Table!这是为什么?它对性能有影响吗?有哪些好处和用例?我们是否应该将外键定义为枢轴 table 中的主键以使它们唯一?
我的问题示例:
为什么要把我们的多对多关系外键定义为主键?
这是在 N-M 关系中构建连接点 table,又名桥梁 table 的正确方法。
理由:
each
order_id
(respuser_id
) 应该引用 master tableorders
(respusers
) 中的一条记录,所以你确实希望这些列中的每一列都有一个外键来强制数据完整性每个
(order_id, user_id)
元组在桥中不应出现超过一次 table:这可以通过使用此列元组作为复合主键或通过设置来强制执行unique
约束。
当然,也可以为联结点定义一个独立的主键table(就像一个自动递增的pk),但这主要是个人喜好问题。