电子商务数据库设计 - CUSTOMER表 - EMAIL / PHONE登录 - 主键和&客户角色

时间:2017-04-24 12:37:25

标签: mysql database database-design relational-database e-commerce

我正在设计一个电子商务数据库,用户可以使用他/她的电子邮件ID登录该应用程序。所以我有几个与CUSTOMER表有关的问题,我不确定实际上哪个是最好的设计。

问题#1:通常最好有一个ID(自动增量号码)作为CUSTOMER表的主键,考虑到在其他表中使用易用性作为外键,总是很好有一个记录ID作为数字,我们也可以看到max(ID)来获得客户总数。现在,因为EMAIL被用作UserName登录---我是否必须将电子邮件作为主键?如果没有,应该对Email& amp;这些约束添加到电子邮件列的值是什么?

问题2:除了问题#1,如果我想允许用户使用EMAIL或PHONE NUMBER登录,我的CUSTOMER表如何适应这个问题?我的意思是什么是我的主要关键&应该在ID,EMAIL和PHONE NUMBER上添加哪些约束?

问题#3:当我使用Spring Security进行身份验证时,它可以容纳Authentication对象中的ROLES或GRANTED AUTHORITIES。由于它是一个电子商务应用程序,并且所有客户/用户都具有相同的访问权限,我是否还必须为每个客户分配ROLES?考虑到正确的设计和可扩展性是否有意义,或者只是增加了登录和安装的开销。我们可以在没有分配给客户的任何角色的情况下去吗?

1 个答案:

答案 0 :(得分:-1)

回答你的第一个问题: 您应该有一个customerID字段,它是自动增量和主键(您已经在讨论)。您正在使用该电子邮件作为用户名进行身份验证,因此它可以是“NOT NULL”和“UNIQUE”(不一定)需要成为主键。如我老师所说,不必要地使用键是令人头痛的问题。

回答你的第二个问题: 您是否希望绝对实施规则以包含电话号码?如果是,则可以将phone_number字段设置为“NOT NULL”和“UNIQUE”(同样不一定是主键)。 如果不是,那么就不要实现除“UNIQUE”之外的任何约束,并且只有在存在电话号码并且电话号码为空且没有登录时才进行验证。 希望这会有所帮助。