创建用户注册系统时,我将使用用户的电子邮件作为用户名。
在创建数据库模式时,我应该将它们视为2个单独的字段,还是应该将它们视为1?
例如
USER_TABLE {USER_ID, USERNAME, FNAME, LNAME, EMAIL}
或
USER_TABLE {USER_ID, USERNAME, FNAME, LNAME}
我认为,如果我们决定让用户创建一个不是电子邮件的用户名,那么单独存储2个字段(即使它们是相同的)的唯一参数是进行某种未来验证吗?
思想?
答案 0 :(得分:1)
我会避免过早优化并只使用一个字段。如果您需要有2个字段,则可以轻松创建并填充一个字段。
答案 1 :(得分:0)
如果您认为您可能希望允许用户开始创建非电子邮件地址的用户名,则保留单独的email和user_id列是个不错的主意。如果要构建新系统,尤其如此。
我在系统设计方面有一个格言:“如果有人想到这个想法,它最终会发生。”
我的意思是认为“我们的业务规则永远不会在X区改变”通常是错误的。业务规则发生了变化 - 很多。
您可以随时在表中添加新字段,以区分电子邮件和user_id。添加列很容易。更难以改变您编写的所有使用原始user_id列的代码以用于电子邮件目的。这就是为什么我说从一开始就将user_id和email之间的区别构建到代码中是个好主意。
答案 2 :(得分:0)
您可以包含这两个属性,但添加约束(“检查”约束)以保证用户名和电子邮件相同。然后,可以根据适当的属性编写需要用户名或电子邮件的业务逻辑,如果需要使它们独立,则可以放弃约束。
不要忘记用户名和/或电子邮件的唯一性约束。