【问题标题】:Email-primary key, is it a bad idea?电子邮件主键,这是一个坏主意吗?
【发布时间】:2020-12-12 20:29:56
【问题描述】:

我读过here ,使用电子邮件地址字段作为管理用户数据库的主键是一个非常坏主意。

如何,为什么?书中没有深入探讨其中的原因。 使用电子邮件字段作为表的主键怎么会如此有害? 是否有一些我看不到的可怕的长期影响?

编辑: This question 是关于字符串比较的性能问题,但是,这与我无关(至少对于这个问题)。我对使用电子邮件作为主键的长期影响感兴趣。 根据经验,以后一般会不会出问题?

【问题讨论】:

标签: database security authentication database-design


【解决方案1】:

嗯,我想最明显(与性能无关)的原因是用户可能想要(或需要)更改他们的电子邮件地址。

如果电子邮件地址是用户帐户的主要标识符,这很快就会让人感到困惑。

从域建模的角度来看,电子邮件地址通常作为个人/用户的属性来处理,就像用户名一样。虽然可能合理地不允许更改用户名,但电子邮件地址很可能在某些时候发生更改(用户失去对帐户的访问权限,维护帐户的组织退休等)。

此外,电子邮件地址不需要永远分配给同一个现实生活中的人。 joe@example.com 可以在 2005 年归“Joe Miller”所有,在 2013 年归“Joe Carlos”所有,从 2020 年开始归“Joeberto Joeman”所有。

这种可能的更改需求是 IMO 电子邮件地址不能成为良好主键的主要原因。

【讨论】:

  • 非常好。怎么强调都不为过:地址变化,轻松支持它是个好主意。另一个例子是婚后改名,这在世界许多地方都很常见。由于这个原因,典型的 firstname.lastname@corp 电子邮件地址一直在更新......
【解决方案2】:

有几个attributes you look for in a primary key

“电子邮件地址”的问题是

  • 无法保证它是唯一的 - 一个电子邮件地址可能同时被一群人使用,也可能随着时间的推移被不同的人使用。
  • 它不是一成不变的——同一个人可能会随着时间的推移更改电子邮件;这将要求您更新所有具有外键关系的表
  • 它不能唯一标识一个人 - 一个人可能有多个电子邮件地址

【讨论】:

    猜你喜欢
    • 2015-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 2011-03-07
    • 1970-01-01
    • 2011-10-10
    相关资源
    最近更新 更多