【发布时间】:2018-04-06 15:56:15
【问题描述】:
我们正在创建一个包含 20 多个表的新数据库,我们的数据库支持:
- 序列。
- 身份列(始终作为身份/序列生成)。
所以,问题是:我们应该使用序列还是身份?哪一个更好?团队似乎在这一点上存在分歧,所以我想听听优点和缺点,以帮助做出决定。
添加数据库详细信息:
- 我们正在 IBM DB2 上创建新数据库,但我们需要确保它与未来迁移到 PostgreSQL 的计划兼容。
【问题讨论】:
-
别忘了实现你的逻辑主键。
-
@dnoeth 什么是逻辑主键?
-
来自您的数据 [模型] 的密钥。例如。 ISBN 是一个已经存在的键,或者您有一个关联表,
(col1,col2)可能被定义为键。现在你添加一个序列,你有两个独特的约束要实现。 -
我认为您应该添加您用作标签的数据库后端。这将阻止人们根据其他数据库的功能进行回答。
-
@dnoeth,我发现自然键通常是最糟糕的选择,因为它们中的大多数都会发生变化。但是,是的,您需要为它们创建一个唯一索引。
标签: sql database postgresql db2 primary-key-design