数据库设计:具有不同角色,额外字段或单独表的多个用户?

时间:2018-03-10 23:54:57

标签: database database-design relational-database

我正在建模一个需要包含多用户帐户功能的数据库模式:

  

多用户帐户允许多个用户登录到同一个帐户   帐户,以便根据他们的权限级别完成工作。   这意味着可以为您维护一个帐户   整个营销团队。帐户所有者可以添加尽可能多的用户   他/她想要并限制他们每个人拥有的权限。您可以   为每个用户选择一个角色:客户经理,营销主管,   营销助理等...或创建自定义权限。

目前我有一个用户表,用户名和密码等存储通用用户的信息。如何实现多用户帐户功能?是否可以在users表中添加一个额外的字段来表示该角色?是否需要单独的表格?我想在可能的情况下使用保持这种简单的原则,但不知道如何处理这个问题。

2 个答案:

答案 0 :(得分:0)

每个用户都被分配到一个组,这是正确的吗?在这种情况下,user表可以有一个groupid,它是user_group表的外键,列出了您拥有的所有访问角色。

现在group(groupid)可能拥有许多他们可以(或不能)在系统上执行的“访问权限”,这可以由您定义。您可以将其称为默认的访问权限集。

如果您想创建自定义权限,最好至少阅读这个问题/前两个答案:

Best Practice for Designing User Roles and Permission System?

在讨论按位运算符的第二个示例中(如果您正在执行此自定义,没有第一个答案中讨论的框架的帮助),假设您理解该概念,这很有趣。实际上,您正在总结十进制整数,但它们将以二进制形式进行比较,以了解为给定用户授予的角色。您可以使用此概念来定义每个预设groupid对预定义角色的访问权限。

答案 1 :(得分:0)

对于Oracle,我们有#34; Virtual Private Database"。对于SQL Server / Azure,我们有" Row Level Security"。无论您使用哪种RDBMS,请检查类似功能。这种情况最有效。