gpt4 book ai didi

database-design - 复合主键的使用

转载 作者:行者123 更新时间:2023-12-05 01:20:57 25 4
gpt4 key购买 nike

假设我有一张表,我想在其中记录用户名。该表至少应该有两列:UserIDName。通常我看到人们在 UserID 上放置一个主键,打开自动递增并称之为 day。

然而这对我来说似乎是错误的,键不应该是两列之间的复合键吗?因为我们不希望用户名被重复。我们还想保留 UserID,这样我们就不会在名称更改时破坏对特定用户的现有引用。

我想说的是,似乎很多人在他们创建的每个表中都默认使用带有 PK 的 ID 列,而没有确保该键也对其他列强制执行唯一性。

话虽如此,我说表应该始终有一个 ID 列以供引用是否正确,但使用复合主键同样重要?

最佳答案

不,您不希望它作为复合键;这意味着组合 是主键,因此您可以在同一 ID 上使用不同的名称,在同一名称上使用不同的 ID。

即:

UserID    Name
-----------------
1 BobaFett
2 JarJar
1 JarJar
2 BobaFett

在没有任何其他约束的情况下,将主键设为 (UserID, Name) 的组合将使之前的数据完全合法。

您的 UserID 列是代理键;关于使用代理键与自然键(您的 Name 列是自然候选键)的智慧的讨论将在另一次讨论,但如果您想保持设计原样现在,您应该保留 UserID 作为主键,但还要在 Name 上添加唯一约束。这将防止相同的名称附加到多个记录。

关于database-design - 复合主键的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5436305/

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