数据建模。拆分到单独的表中还是使用基于角色的授权?
我正在尝试在开始之前为一个新的应用程序建立尽可能多的数据模型。这款应用将拥有用户空间。空间将有多个管理员级别,但也将有非管理员成员。空间将通过space_roles/space_admins
连接表关联管理员(名称取决于我试图做出的设计决定)。我正在使用一个角色模型来创建空间和管理员之间的关联。这意味着SPACE_ROLES表将与user_id, space_id and role_id
列进行三向联接。
我计划最终围绕成员可以访问的空间构建一系列工具。这些可能不一定仅限于某个空间的成员。未来很可能会出现这样的情况:一个空间的成员可以以空间为范围跨越组织边界与另一个空间的成员互动(例如,一支运动队的球迷可以加入另一支运动队的墙上的讨论,在那里运动队是对空间的类比)。
我的问题是,我是应该只创建一个名为‘Members’的角色,还是应该将成员分解到另一个模型(Members?)通过SPACE_MEMBERS与关联?请尽可能解释您的建议的优点/缺点。解决方案
如果您的Admin
用户是Users
的子集,并且用户可以成为或不再是管理员,则将他们保留在同一个表中。
如果您的用户(管理员或非管理员)可以参与您的多个空间,您可能需要一个单独的USERS表和一个单独的USERS_SPACES连接表。该表可能具有此布局。
user_id part of the primary key
space_id the rest of the primary key
role 1 = contributor to the space, 2=member, 3=admin 4=owner etc
如果用户和管理员是完全不同的人员集合,则使用两个两个表并将它们分开。例如,如果你在做医疗保健,他们是护士和病人,你肯定会把他们分开,因为他们遵守不同的保密规则。
相关文章