我应该使用数字或电子邮件ID来识别网站上的用户吗?

时间:2009-02-19 07:43:05

标签: database database-design

我有一个网络应用程序,我根据他们的电子邮件ID注册用户。

从设计/易用性/灵活性的角度来看,我应该为每个用户分配一个唯一的号码还是根据emailid识别用户?

分配唯一号码的好处:

  1. 我可以在以后更改登录本身,而不会丢失用户的数据(灵活)。
  2. 缺点:

    1. 使用sql命令行时我必须处理数字(容易出错)。
    2. 哪个更好?您是否看到任何一个方案都需要考虑其他问题?

7 个答案:

答案 0 :(得分:9)

您的用户身份应该是唯一且不可变的。选择电子邮件地址作为身份并不是一个好主意,原因如下:

  • 电子邮件是用户身份的一个方面,可以随时更改。
  • 您可能决定允许多封电子邮件。
  • 您可能决定添加其他方面,例如OpenID或Live ID,甚至只是旧的普通用户名。
  • 允许多个身份共享同一个电子邮件方面没有任何问题。这是一种罕见的情况,但并非闻所未闻。
  • 规范化电子邮件地址很难且容易出错,因此您可能在执行唯一性时遇到问题。 (电子邮件地址是否区分大小写?您是否忽略。或+内部电子邮件?您如何比较非英语电子邮件?)

顺便说一句,使用电子邮件作为用户身份的公开表示可能是安全和隐私问题。特别是如果您的一些用户不满13岁。您将需要一个不同的公共方面来表示用户身份。

答案 1 :(得分:6)

同时使用。 您必须添加一个id,因为您确实不希望其他表将该电子邮件地址用作外键。 使电子邮件地址唯一,这样您仍然可以使用它来识别具有sql命令行的用户。

答案 2 :(得分:2)

唯一号码 - 总是! 但请保持用户隐藏号码。

应允许用户更改其电子邮件。如果将其用作主要标识符,则在多个表中使用密钥时会导致许多复杂情况。

答案 3 :(得分:1)

你的劣势不是缺点。使用带有sql的数字并不比使用电子邮件或其他任何东西更重要。

另一方面,您的优势非常强大,您可能希望将用户彼此关联,使用一个用户帐户关联不同的电子邮件等,并且始终使用电子邮件会使事情变得更难。

还要考虑包括用户身份验证在内的网址,ID比在电子邮件中更容易处理,您需要考虑正确的网址拦截。

因此,我强烈建议使用灵活性和易用性,我强烈建议使用唯一的用户ID。

答案 4 :(得分:1)

除了用户不可见的用户电子邮件地址之外,您应该拥有其他标识符,并且永远不会更改。然后,您应该在电子邮件地址上强制执行唯一性,以便将其用作候选键。

您会发现用户想要更改他们的电子邮件地址或他们可以看到的任何内容,因此您应该尽可能地使用无法更改的标识符。

使用实际的电子邮件地址处理sql命令对象中的数字并不会更容易出错,如果有的话,我认为它不会出错。

答案 5 :(得分:0)

只需考虑一些要点。

  • 您将如何验证电子邮件地址?
  • 你如何确保它真的是独一无二的(我并不总是使用我的真实地址,例如disney.com上的m.mouse
  • 我喜欢使用数据库生成的唯一键来识别记录,然后单独添加不受我控制的属性
  • 某人的电子邮件可以更改,但ID不会

答案 6 :(得分:0)

唯一的数字。除了确定的原因之外,我认为与使用电子邮件地址相比,更少更容易出错。更短,没有搞笑角色,更容易验证等。

相关问题