我正在尝试为用户添加在合同/站点/实验中以给定角色进行授权的能力。
更具体地说,我希望用户能够在合同上拥有角色 A,但同时在同一合同的特定站点上拥有角色 B,并且可能在该站点的实验上拥有角色 C。
User
我的第一个想法是在和之间建立一个连接表,Role
其中第三列存储合同,站点或实验的 ID。
在我看来,这个解决方案有很多问题:
- 我需要一行来记录合同、每个授权站点和每个授权实验。它可以快速增长到很大。
- 缺乏完整性。可以引用不存在的合约
- 如果我想知道用户被授权的合同的所有站点和实验,我必须首先查询此合同的所有站点,然后查询这些站点的所有实验,然后找到引用这些 ID 的所有行。这似乎有点不靠谱。
我觉得这个解决方案可行,但我想知道是否还有其他方法?也许是一些我不知道的模式?
PS:我正在使用 MySQL v8