1

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

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

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

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

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

4

3 回答 3

3

将它们分开,以便用户可以查询系统以获取有关 a 的信息,Person而不必访问他们的帐户凭据。

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

于 2012-05-02T16:36:47.927 回答
2

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

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

于 2012-05-02T16:49:23.450 回答
0

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

换句话说:Person 和 Authentication 之间存在 1:1 的关系,那么为什么要把它分开呢?

于 2012-05-02T16:35:50.857 回答