认证数据库字段

时间:2012-05-02 16:27:45

标签: database database-design

我正在将身份验证系统实现到现有的数据库系统中。目前,数据库有一个“人员”表,其中包括:名字,姓氏,出生日期,电子邮件(用户名)等。这是用户的主要表格。

我需要添加以下字段进行身份验证:Password,IsLocked,LockDate,LastLoginDate。

您是否建议将这些字段放在Person表中,还是将它们放在新的Authentication表中?我最初的计划是“人”只是包含有关该人的数据,而不一定是关于身份验证。

另一种方法可能是将密码与电子邮件一起存储在Person中,然后将验证数据放在单独的表中。这样,用户名和密码将位于同一位置,但元数据将位于其自己的实体中。

有人有什么想法吗? 谢谢你的帮助!

3 个答案:

答案 0 :(得分:3)

将它们分开,以便用户可以向系统查询有关Person的信息,而无需访问其帐户凭据。

这也有一个很好的副作用,并非所有Person实体都有帐户。

答案 1 :(得分:2)

将帐户信息分开。您当前的业务需求可能是每个人只有一个帐户,但未来可能会出现一个人需要拥有多个帐户,甚至您需要一个由多个人共享的帐户。拥有一个单独的身份验证表意味着此类将来的更改对您的代码产生的影响较小

此外,从保护身份验证信息的角度来看,可以访问帐户数据的人/流程越少,您就越好。实现表级访问要比列级访问容易得多。

答案 2 :(得分:0)

我认为为身份验证数据创建一个单独的表是没有多大意义的。据我所知,身份验证不能独立于Person存在 - 而且似乎没有办法将一个人合理地与两个身份验证相关联(反之亦然)。

换句话说:人与身份验证之间存在1:1的关系,为什么要将其拆分?