我在设计一个简单的 ACL 系统时遇到了这个问题:
Person 1
从Team A
可以编辑Item X
Person 1
从 转移Team A
到Team B
Team B
无法编辑Item X
- 由于历史原因,我们仍然允许
Person 1
编辑Item X
这是 RDBMS 中的典型模型:
Person
表与表具有多对多关系Team
- 有 ACL 表,如下所示:
object_type | object_id | item_type | item_id | deny_or_allow
像我描述的那样处理团队间的转移
- 我应该添加一个额外的规则
Person 1
吗? - 当有一天我们拒绝整个
Team A
(包括前成员)编辑时会发生什么ItemX
? - 我们是否也应该保留人员转移历史记录表?
- 所以要决定 ACL 规则,我们必须遍历很多东西,也许我什至错过了一些
这个问题的复杂性随着 ACL 和人员调动的不断发生而增加。为此在关系数据库中设计模型的最佳实践是什么?这类事情有通用术语或主题吗?