MySQL表关系布局(多对多,有歧义)

MySQL表关系布局(多对多,有歧义),mysql,structure,relationship,Mysql,Structure,Relationship,我有帐户、组和项目的表格。现在,我想描述有关帐户和项目的帐户和组的访问权限。对于项目,有读、写和无访问权限,而对于帐户,只有访问权限和无访问权限 我想到的第一个解决方案是使用以下布局创建一个访问表: INT accessed_account_or_project_id INT accessor_account_or_group_id BOOLEAN accessed_is_project BOOLEAN accessor_is_group BOOLEAN canWrite 这是一个好的结构,还

我有帐户、组和项目的表格。现在,我想描述有关帐户和项目的帐户和组的访问权限。对于项目,有读、写和无访问权限,而对于帐户,只有访问权限和无访问权限

我想到的第一个解决方案是使用以下布局创建一个访问表:

INT accessed_account_or_project_id
INT accessor_account_or_group_id
BOOLEAN accessed_is_project
BOOLEAN accessor_is_group
BOOLEAN canWrite
这是一个好的结构,还是应该为项目和帐户访问权限创建两个单独的表,或者甚至为不同的访问者创建4个表


我找到了一些关于多对多关系的一般性建议,但在这种情况下,作为一个新手,我不确定,因为这种模糊性和写作能力。

你不应该有一列代表两组不同的数据
\u或
,因此,我建议您针对帐户/项目/组权限映射的可能组合使用四表解决方案。这将使强制执行约束以防止权限冲突变得容易


表中存在条目可以表示访问权限,但
projects
具有额外的访问级别。只要您不认为以后会引入更多的访问级别,我认为两个projects表上的
canWrite
列就可以了。否则,您可以有一个到另一个具有一组权限类型的表的链接。

您不应该有一列表示两组不同的数据
\u或
,因此我建议您使用四表解决方案,以实现帐户/项目/组权限映射的可能组合。这将使强制执行约束以防止权限冲突变得容易

表中存在条目可以表示访问权限,但
projects
具有额外的访问级别。只要您不认为以后会引入更多的访问级别,我认为两个projects表上的
canWrite
列就可以了。否则,您可以使用一组权限类型链接到另一个表