设置基本表,是整数自动递增主键的标准吗?

时间:2011-02-08 20:31:28

标签: sql mysql database-design data-modeling normalization

7 个答案:

答案 0 :(得分:2)

根据个人数据建模者的判断,您所要求的是某种设计决策。就个人而言,在这种情况下,我将包括自动递增的整数主键。能够保证用户名(甚至更多电子邮件地址)不变的情况是不寻常的。但是,您可以设计软件,以便相同的整数主键始终引用同一个用户,而不管该用户记录可能发生什么变化。

什么有助于用户名查找的性能是对用户名的UNIQUE约束,其索引对应于它。如果您确实希望电子邮件地址是唯一的(主要是业务需求决策),您还可以对电子邮件地址设置UNIQUE约束。在MySQL的默认数据库引擎中忽略了外键(不幸的是),所以从数据建模的角度来看,我不会费心去做那些好处。

修改

我想如果现在正在实施外键,我会考虑外键的好处。是的,有更新所有依赖外键的数据(例如ON UPDATE CASCADE)。但是,它们往往很难理解,并且难以维护。通常,更好的做法是让外键引用不变的东西,因此是整数主键。

答案 1 :(得分:1)

我的建议,经过多年的数据库构建

只有在现实世界中没有代表任何内容时才使用字符作为PK。

现实世界是一个真实的世界,只要你从中使用PK,你就是一个斜坡。

请相信我。

(而且速度也有提升)。

的问候, //吨

答案 2 :(得分:1)

它本身可能不一定是“标准”,但它快速,简单,方便,并且通常可以抵抗业务密钥更改。

另请参阅:Pros and cons of autoincrement keys on every table

答案 3 :(得分:1)

随着应用程序的发展,整数作为主键将使您的生活变得更加轻松。在您的用户名和/或电子邮件中使用索引进行查询优化。

答案 4 :(得分:1)

我喜欢整数键,因为:

  • 加快加入
  • 更小更快的索引
  • 永远不需要更改(您的用户名和电子邮件字段值可能需要更改)

答案 5 :(得分:0)

整数列上的索引比大字符值执行得更快。将主键放在窄标识列上是最佳解决方案。

答案 6 :(得分:-1)

使用真实数据作为外键是非常有问题的,并且“低效”因为它们违反了参照完整性。您认为用户名和电子邮件是唯一的,永远不会改变?你几乎肯定是错的。请阅读natural keys

上的早期问题

整数自动增量主键会更快,但这不是它们被使用的原因。他们被使用是因为他们工作。使用它们。