我在这里读到,使用电子邮件地址字段作为管理用户数据库的主键是一个非常的坏主意。
如何以及为什么?这本书没有深入探究原因。使用电子邮件字段作为表的主键怎么会如此有害?是否存在一些我看不到的可怕的长期影响?
编辑:然而,这个问题是关于字符串比较的性能问题,这与我无关(至少对于这个问题(。我对使用电子邮件作为主要关键字的长期影响感兴趣。根据经验,它通常会在未来引发问题吗?
我想最明显(与性能无关(的原因是用户可能想要(或需要(更改他们的电子邮件地址。
如果电子邮件地址是用户帐户的主要标识符,那么很快就会混淆。
从域建模的角度来看,电子邮件地址通常被视为个人/用户的属性,就像用户名一样。虽然用户名更改可能是合理的不允许的,但电子邮件地址很可能在某个时候发生更改(用户无法访问帐户,维护帐户的组织退休等(
此外,电子邮件地址不需要永远分配给同一个现实生活中的人。CCD_ 1可以由";Joe Miller";2005年;Joe Carlos";2013年;Joeberto Joeman";从2020年起。
这种可能的更改需求是IMO电子邮件地址不能成为好的主键的主要原因。
您可以在主键中查找一些属性。
";电子邮件地址";
- 无法保证它是唯一的——一个电子邮件地址可能同时被一群人使用,也可能随着时间的推移被不同的人使用
- 这不是一成不变的——同一个人可能会随着时间的推移更改电子邮件;这将要求您更新所有具有外键关系的表
- 它不能唯一识别一个人——一个人可能有多个电子邮件地址