是否需要单独的员工表和员工登录表

时间:2015-07-10 05:11:04

标签: database

我为一些公司建立了一个薪资系统,它运作正常。问题是我对数据库知之甚少。我分别准备了员工表和员工登录表。这两个表都有employeeID,username,email列。只有登录表有密码字段。我这样做是因为我的一位朋友说这是正确的方法。但我现在怀疑了。所以请帮助我了解哪种方式是存储密码的正确方法。

是否需要单独的表,还是可以将密码存储在主员工表中?

1 个答案:

答案 0 :(得分:0)

只要您完成了规范化,两个表就是合理的。登录表需要一个用户ID(可能是employeeID)和(盐渍和散列)密码,以及散列密码时使用的随机盐 - 但可能不是用户名,绝对不是电子邮件列。您可能希望在上次更改密码时以及下次更改密码时以及何时更改密码时添加要记录的列。

另一张桌子很好。将两个表合并为一个并不是不可能的。将用户名与密码放在同一个表中可能是明智的,在这种情况下,employee表将丢失用户名列。您希望避免重复 - 如果您在两个表中有用户名,则可以打开员工ID 100在Employee表中具有用户名'poweruser'和在Employee Login表中具有用户名'intern'的可能性 - 这不太可取

将它们分开的一个好处是,您可以在密码表上设置更严格的权限,以便大多数用户甚至无法读取密码表。您可以使用特殊软件来控制对它的访问并更新密码。

请注意,您不存在存储原始密码的风险。你必须散列它(最好是多次),你必须用随机盐(它应该是唯一的,至少64位)散列它。在SO(或Information Security)上查找有关密码哈希的问题。