为什么要将外键定义为数据透视表中的主键?

问题描述 投票:0回答:1

今天我遇到了一些问题,有人在数据透视表中将外键定义为主键!这是为什么?它对性能有影响吗?有哪些好处和用例?我们是否应将外键定义为数据透视表中的主键,以使其具有唯一性?

我的问题示例:enter image description here

mysql foreign-keys pivot-table primary-key composite-primary-key
1个回答
0
投票

这是以N-M关系构建连接表(也称为桥表)的正确方法。

理论上:

  • 每个order_id(resp user_id)应该引用主表orders(resp users)中的一条记录,因此您确实希望每个列上的外键都可以强制执行数据完整性

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

当然,也可以为联结表定义一个独立的主键(例如自动递增pk,但这主要是一个品味问题。

© www.soinside.com 2019 - 2024. All rights reserved.