加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

数据库 – 多对多表中的一个或两个主键?

发布时间:2020-12-12 16:20:57 所属栏目:MsSql教程 来源:网络整理
导读:我的数据库中有以下几个表,它们具有多对多关系,这是由一个连接表来表示的,它具有每个主表的主键的外键: 小部件:WidgetID(PK),标题,价格 User:UserID(PK),FirstName,LastName 假设每个User-Widget组合是唯一的.我可以看到两个选项,用于如何构造定义数据关系
我的数据库中有以下几个表,它们具有多对多关系,这是由一个连接表来表示的,它具有每个主表的主键的外键:

>小部件:WidgetID(PK),标题,价格
> User:UserID(PK),FirstName,LastName

假设每个User-Widget组合是唯一的.我可以看到两个选项,用于如何构造定义数据关系的连接表:

> UserWidgets1:UserWidgetID(PK),WidgetID(FK),UserID(FK)
> UserWidgets2:WidgetID(PK,FK),UserID(PK,FK)

选项1具有单个主键的列.然而,这似乎是不必要的,因为存储在表中的唯一数据是两个主表之间的关系,并且此关系本身可以形成唯一的键.因此导致选项2具有两列主键,但是丢失了选项1具有的一列唯一标识符.我也可以选择在第一个表中添加一个两列唯一索引(WidgetID,UserID).

两个表现方式之间是否存在真正的区别,或者任何理由倾向于另一个方法来构造UserWidget多对多表?

解决方法

在这两种情况下,您只能有一个主键.第二个是所谓的复合键.引入新专栏没有什么好的理由.实际上,您必须在所有候选键上保留唯一的索引.添加一个新列后,只需维护开销.

选择2.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读