我有一个网络应用程序,我根据他们的电子邮件ID注册用户.
从设计/易用性/灵活性的角度来看,我应该为每个用户分配一个唯一的号码还是根据emailid识别用户?
分配唯一号码的优点:
我可以在以后更改登录本身而不会丢失用户的数据(灵活).
坏处:
使用sql命令行时我必须处理数字(容易出错).
哪个更好?您是否看到任何一个方案需要考虑的其他问题?
用户的身份应该是唯一且不可变的.选择电子邮件地址作为身份不是一个好主意,原因如下:
电子邮件是用户身份的一个方面,可以随时更改.
您可能决定允许多个电子邮件.
您可能决定添加其他方面,例如OpenID或Live ID,甚至只是添加旧的普通用户名.
允许多个身份共享同一个电子邮件方面没有任何问题.这是一种罕见的情况,但并非闻所未闻.
规范化电子邮件地址很难并且容易出错,因此您可能在强制执行唯一性时遇到问题.(电子邮件地址是否区分大小写?您是否忽略.或+内部电子邮件?您如何比较非英语电子邮件?)
顺便说一句,使用电子邮件作为用户身份的公开表示可能是安全和隐私问题.特别是如果您的一些用户不满13岁.您将需要一个不同的公共方面来表示用户身份.
使用两者.您必须添加一个id,因为您确实不希望其他表将该电子邮件地址用作外键.使电子邮件地址唯一,以便您仍然可以使用它来识别具有sql命令行的用户.