gpt4 book ai didi

SQL:主键还是不主键?

转载 作者:行者123 更新时间:2023-12-04 19:11:35 24 4
gpt4 key购买 nike

我有一个包含用户设置集的表格,它包含以下列:

UserID INT
Set VARCHAR(50)
Key VARCHAR(50)
Value NVARCHAR(MAX)
TimeStamp DATETIME

UserID 与 Set 和 Key 一起是唯一的。因此,特定用户不能在一组特定设置中拥有两个相同的键。设置是按集合检索的,因此如果用户从某个集合中请求某个 key ,则会下载整个集合,这样下次需要同一集合中的 key 时,就不必去数据库了.

我应该在所有三列(userid、set 和 key)上创建一个主键,还是应该创建一个具有主键的额外字段(例如,一个名为 SettingID 的自动增量整数,我猜这是个坏主意),或者不创建一个主键,然后只创建一个唯一索引?

----- 更新 -----

只是为了澄清一下:这是行表的结尾,无论如何它都没有加入。 UserID 是用户表的 FK。 Set 不是 FK。它几乎是我的 GUI 的辅助表。举个例子:用户第一次访问网站的某些部分时会得到一个帮助气球,如果他们愿意,他们可以关闭它。一旦他们点击它,我将在“GettingStarted”集中添加一些设置,表明他们的 helpballoon X 已被禁用。下次当用户访问同一页面时,该设置将声明不再显示帮助气球 X。

最佳答案

拥有复合唯一键通常不是一个好主意。

将任何业务相关数据作为主键也会给您带来麻烦。例如,如果您需要更改值。如果无法在应用程序中更改该值,则可能在将来发生,或者必须在升级脚本中进行更改。

最好创建一个代理键,一个没有任何商业意义的自动编号。

编辑更新后:

在这种情况下,您可以考虑在概念上没有主键,并将这三列设为复合唯一键的主键(使其可更改)。

关于SQL:主键还是不主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/828582/

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