今天我遇到了一些问题,有人在数据透视表中将外键定义为主键!这是为什么?它对性能有影响吗?有哪些好处和用例?我们是否应将外键定义为数据透视表中的主键,以使其具有唯一性?
我的问题示例:
这是以N-M关系构建连接表(也称为桥表)的正确方法。
理论上:
每个order_id(resp user_id)应该引用主表orders(resp users)中的一条记录,因此您确实希望每个列上的外键都可以强制执行数据完整性
order_id
user_id
orders
users
每个(order_id, user_id)元组在桥表中应该出现不超过一次:可以通过使用此列元组作为组合主键或通过在其上设置unique约束来强制执行此操作。
(order_id, user_id)
unique
当然,也可以为联结表定义一个独立的主键(例如自动递增pk,但这主要是一个品味问题。