我有帐户、组和项目的表。现在我想描述帐户和组对帐户和项目的访问权限。项目有读、写权限,没有访问权限;帐户只有访问权限,没有访问权限。
我想到的第一个解决方案是用下面的布局创建一个访问表:INT accessed_account_or_project_id
INT accessor_account_or_group_id
BOOLEAN accessed_is_project
BOOLEAN accessor_is_group
BOOLEAN canWrite
这是一个很好的结构,还是我应该为项目和帐户访问权限创建2个单独的表,或者甚至可能为不同的访问器创建4个表?
我发现了一些关于多对多关系的一般建议,但在这种情况下,我不确定作为一个新手,因为歧义和可以写。
你不应该有一个列来表示两组不同的数据_or_
,所以我建议你使用四个表的解决方案来处理帐户/项目/组权限映射的可能组合。这将使执行约束以防止权限冲突变得容易。
表中存在一个表项可以表示访问,但是projects
具有额外的访问级别。只要你不认为以后会引入更多的访问级别,我认为两个项目表上的canWrite
列是可以的。否则,您可能有一个链接到另一个具有一组权限类型的表。