【发布时间】:2018-06-30 09:34:07
【问题描述】:
我正在构建用于存储客户端特定配置的数据库。每个配置都应该有一个唯一的 ID(int) 和一个版本(int)。只有它们对是唯一的,这促使我创建一个复合键。但是,问题是 ID 可能是自动生成的,而版本总是从 1 开始,并且每次更改配置时都会递增。
这里的大多数帖子不建议既不使用复合键,也不建议使用具有 SQL 自动增量的复合键。我同事的建议之一是添加单独的 ID 作为单个主键,并由我自己在应用程序代码中管理 configID+Version 对分配和唯一性。
所以,最后,我看到了 3 个选项:
PK(configID,version) 手动生成两者
具有自动递增配置 ID 和手动分配版本的 PK (configID,version)
PK (ID) 自动递增,配置 ID+版本对由代码管理。
你能告诉我什么是最好的选择吗?也许还有别的?
【问题讨论】:
-
但是为什么会这样呢?您的设计意味着您有一个单独的仅配置主表,其 PK 为 configD,而您正在谈论的表只是另一个加入此表的表。如果您 没有 有另一个表,那么这个复合键确实没有意义。只要有一个递增的身份并完成它。版本只是一个属性
标签: sql auto-increment composite-primary-key