数据库 – 多对多表中的一个或两个主键?
发布时间:2020-12-12 16:20:57 所属栏目:MsSql教程 来源:网络整理
导读:我的数据库中有以下几个表,它们具有多对多关系,这是由一个连接表来表示的,它具有每个主表的主键的外键: 小部件:WidgetID(PK),标题,价格 User:UserID(PK),FirstName,LastName 假设每个User-Widget组合是唯一的.我可以看到两个选项,用于如何构造定义数据关系
我的数据库中有以下几个表,它们具有多对多关系,这是由一个连接表来表示的,它具有每个主表的主键的外键:
>小部件:WidgetID(PK),标题,价格 假设每个User-Widget组合是唯一的.我可以看到两个选项,用于如何构造定义数据关系的连接表: > UserWidgets1:UserWidgetID(PK),WidgetID(FK),UserID(FK) 选项1具有单个主键的列.然而,这似乎是不必要的,因为存储在表中的唯一数据是两个主表之间的关系,并且此关系本身可以形成唯一的键.因此导致选项2具有两列主键,但是丢失了选项1具有的一列唯一标识符.我也可以选择在第一个表中添加一个两列唯一索引(WidgetID,UserID). 两个表现方式之间是否存在真正的区别,或者任何理由倾向于另一个方法来构造UserWidget多对多表? 解决方法在这两种情况下,您只能有一个主键.第二个是所谓的复合键.引入新专栏没有什么好的理由.实际上,您必须在所有候选键上保留唯一的索引.添加一个新列后,只需维护开销.选择2. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |