【发布时间】:2021-05-17 12:47:12
【问题描述】:
我正在实现一个基于角色的访问控制系统,它有以下数据库表。
groups
---------
id (PK)
name
level
resources
---------
id (PK)
name
roles
---------
id (PK)
name
permissions
-----------
id (PK)
name
description
users
-----------
id (PK)
name
group_id(FK - references id on groups)
role_id(FK - references id on roles)
组与资源和角色具有多对多的关系。所以我有以下联结表。
group_resource
---------------
group_id(FK - references id on groups)
resource_id(FK - references id on resources)
group_role
---------------
group_id(FK - references id on groups)
role_id(FK - references id on roles)
问题来了:
组内的任何给定角色都应仅对分配给该组的资源拥有权限。
我不完全确定在group_resource 和group_role 关系的上下文中对roles、permissions 和resources 之间的关系建模的最佳方法是什么。
任何建议都将受到高度赞赏。
谢谢。
【问题讨论】:
-
权限与其他实体有关系吗?如果有的话,角色和用户组之间的关系是什么?角色必须与组有关系吗?还是不行?
-
权限应该与组内的资源和角色有关系。例如。属于组“总部”的用户“Joe Bloggs”被分配了一个名为“审计员”的角色。 “总部”组拥有“审计文件”和“年度报告”资源。 “总部”组中的“审计员”角色对资源“审计文件”具有“读取”和“更新”权限,而对资源“年度报告”只有“读取”权限。
-
那么,“总部”的“审计员”和另一个办公室的“审计员”是两个不同的角色还是同一个角色?
-
他们是两个不同的角色。
-
那么这意味着角色和组之间的关系不是多对多而是一对多。我会尝试提出一个答案。
标签: database database-design database-schema