gpt4 book ai didi

database - 多对多表中的一个或两个主键?

转载 作者:太空狗 更新时间:2023-10-30 01:41:43 25 4
gpt4 key购买 nike

我的数据库中有以下具有多对多关系的表,该关系由一个连接表表示,该连接表具有到每个主表的主键的外键:

  • Widget:WidgetID (PK)、标题、价格
  • 用户:用户 ID (PK)、名字、姓氏

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

  1. UserWidgets1:UserWidgetID (PK)、WidgetID (FK)、UserID (FK)
  2. UserWidgets2:WidgetID(PK,FK),UserID(PK,FK)

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

这两种方法在性能方面有什么真正的区别,或者有什么理由更喜欢一种方法来构造 UserWidgets 多对多表?

最佳答案

在任何一种情况下,您都只有一个主键。第二个是所谓的复合键。没有充分的理由引入新专栏。实际上,您必须在所有候选键上保留一个唯一索引。添加新列只会给您带来维护开销。

选择选项 2。

关于database - 多对多表中的一个或两个主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com