数据库:将用户和管理员保存在同一个表中(优点/缺点)?

时间:2012-11-02 01:27:28

标签: php mysql database roles user-management

我对您的意见感兴趣:目前我的数据库中只有一个用户表,但我想添加一个新的用户表来管理帐户。

Pro:我不必检查“角色”表来验证尝试登录的用户。

Con:管理员帐户不能成为社区的一部分,仅用于后端。如果你把某人推荐给主持人,那就太多了:他不能用他的公共账户写帖子。

我目前要检查的解决方案,如果用户是队友(伪代码):

$needed_role = "admin";
if ($User->is_in_team($user_id)) { // SELECT id FROM user WHERE team=1 AND user_id=$user_id
    $roles = $User->getRoles($user_id);
    if (in_array($needed_role, $roles)) {
        // login...
    }
}

这是一个简单的例子。角色分为“blog_post_write”,“blog_post_delete”等权利......

我目前的解决方案并不完美,所以请帮我剥皮我的数据库! :)

2 个答案:

答案 0 :(得分:1)

你能不能只用一个带有is_admin和is_moderator布尔变量的用户表。然后,当您想要查找团队中的人时,您只需要查看一个表。 我不会考虑将它们分开,除非你真的希望它们是另一种用户,而不仅仅是具有管理员或管理员权限的用户。

答案 1 :(得分:1)

有任何特殊原因要有单独的表吗? 也许更多的额外领域? 必须检查其他表格作为一项安全措施吗?

..+---------+-----------+-----------+-------------+
..|             User                              |
..+---------+-----------+-----------+-------------+
..| UserID  | UserAlias | UserPwd   | UserIsAdmin |
..+---------+-----------+-----------+-------------+
..| 87      | johndoe   | sdsd<ds33 | false       |
..+---------+-----------+-----------+-------------+
..| 88      | janesmith | sd456656h | true        |
..+---------+-----------+-----------+-------------+
..| 89      | annethmps | s34ddd545 | true        |
..+---------+-----------+-----------+-------------+
..| 90      | mikekane  | s34ddd545 | false       |
..+---------+-----------+-----------+-------------+

..+---------+-----------+-----------+
..|             Admin               |
..+---------+-----------+-----------+
..| UserID  | Extra1    | Extra2    |
..+---------+-----------+-----------+
..| 88      | sdfsds3   | s2323h    |
..+---------+-----------+-----------+
..| 89      | sdsds2    | s3ghgh5   |
..+---------+-----------+-----------+

干杯。