【问题标题】:Database design: multiple users with different roles, extra field or separate table?数据库设计:具有不同角色、额外字段或单独表的多个用户?
【发布时间】:2018-03-12 00:17:31
【问题描述】:

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

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

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

【问题讨论】:

    标签: database database-design relational-database


    【解决方案1】:

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

    现在group (groupid) 可能拥有一些他们可以(或不能)在系统上做什么的“访问权限”,这些权限可以由您定义。您可以将此称为默认访问权限集。

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

    Best Practice for Designing User Roles and Permission System?

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-05-24
        • 2015-02-21
        • 2011-06-08
        • 2015-01-28
        • 2010-11-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多