admin

单个自动编号而不是多个键

sql

是否有理由将单个递增字段用作主键,而不是实际上代表唯一记录的多个字段?

我正在使用现有的php应用程序,并且表似乎都具有单个“ id”键,而不是使用记录实际唯一的2个或更多字段(例如用户,拍卖,出价)。

我不是数据库专家,但是对我来说,这似乎是个懒惰(或没有经验)。有什么好处(性能或其他)吗?

已更新
:我不是在指代伪数据(ssn,电子邮件地址等),在这里您可能要确保数据确实是唯一的。我说的是带有明显外键引用的表,但是每个表只是具有递增的ID,而不是将这些引用与表本身中的唯一字段一起使用。

没有尝试开始主观辩论,对我而言这没有任何意义。


阅读 177

收藏
2021-06-07

共1个答案

admin

使用合成主键有几个优点:

  • 您可以在关键字段中更改值,而不必执行索引更新命中
  • 索引较小
  • 它使外键关系更简单
  • 由于您不处理字符串,因此永远不会存在编码问题

数据库通常使用单调递增的键来围绕建立索引进行特定的优化。

话虽如此,不时地进行一些非规范化并没有什么错。如果用例很清楚并且表相对较小,那么请执行方便的操作。

2021-06-07