答案 0 :(得分:2)
根据个人数据建模者的判断,您所要求的是某种设计决策。就个人而言,在这种情况下,我将包括自动递增的整数主键。能够保证用户名(甚至更多电子邮件地址)不变的情况是不寻常的。但是,您可以设计软件,以便相同的整数主键始终引用同一个用户,而不管该用户记录可能发生什么变化。
什么有助于用户名查找的性能是对用户名的UNIQUE约束,其索引对应于它。如果您确实希望电子邮件地址是唯一的(主要是业务需求决策),您还可以对电子邮件地址设置UNIQUE约束。在MySQL的默认数据库引擎中忽略了外键(不幸的是),所以从数据建模的角度来看,我不会费心去做那些好处。
修改强>
我想如果现在正在实施外键,我会考虑外键的好处。是的,有更新所有依赖外键的数据(例如ON UPDATE CASCADE)。但是,它们往往很难理解,并且难以维护。通常,更好的做法是让外键引用不变的东西,因此是整数主键。
答案 1 :(得分:1)
我的建议,经过多年的数据库构建
只有在现实世界中没有代表任何内容时才使用字符作为PK。
现实世界是一个真实的世界,只要你从中使用PK,你就是一个斜坡。
请相信我。
(而且速度也有提升)。
的问候, //吨
答案 2 :(得分:1)
它本身可能不一定是“标准”,但它快速,简单,方便,并且通常可以抵抗业务密钥更改。
答案 3 :(得分:1)
随着应用程序的发展,整数作为主键将使您的生活变得更加轻松。在您的用户名和/或电子邮件中使用索引进行查询优化。
答案 4 :(得分:1)
我喜欢整数键,因为:
答案 5 :(得分:0)
整数列上的索引比大字符值执行得更快。将主键放在窄标识列上是最佳解决方案。
答案 6 :(得分:-1)
使用真实数据作为外键是非常有问题的,并且“低效”因为它们违反了参照完整性。您认为用户名和电子邮件是唯一的,永远不会改变?你几乎肯定是错的。请阅读natural keys
上的早期问题整数自动增量主键会更快,但这不是它们被使用的原因。他们被使用是因为他们工作。使用它们。