我在 choosing a primary key 上找到了这份阅读 Material .
- 是否有关于如何为给定表选择主键的指南/博客文章?
- 我应该使用自动递增/生成的键,还是应该将主键基于正在建模的数据(假设它有一个真正唯一的字段)?
- 为了性能起见,主键应该总是很长,还是我可以将外部唯一 ID 作为主键,即使它是一个字符串?
最佳答案
我相信在实践中使用 natural key很少比 surrogate key 好.
以下是使用自然键作为主键的主要缺点:
您可能有一个不正确的键值,或者您可能只是想重命名一个键值。要对其进行编辑,您必须更新所有将其用作外键的表。
通常很难有一个真正的 unique自然键。
自然键通常是字符串。数字字段上的索引将比字符串字段上的索引更紧凑。
对于主键的数据类型应该是什么没有硬性规定。数字键通常性能更好,但您可以使用字符串,尤其是在表不大且引用它的表也不大的情况下。
关于sql - 如何选择我的主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4291990/