数据建模。拆分到单独的表中还是使用基于角色的授权? [英] Data modeling. To split into separate tables or use role based authorization?

查看:198
本文介绍了数据建模。拆分到单独的表中还是使用基于角色的授权?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在开始之前为一个新的应用程序建立尽可能多的数据模型。这款应用将拥有用户空间。空间将有多个管理员级别,但也将有非管理员成员。空间将通过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

如果用户和管理员是完全不同的人员集合,则使用两个两个表并将它们分开。例如,如果你在做医疗保健,他们是护士和病人,你肯定会把他们分开,因为他们遵守不同的保密规则。

这篇关于数据建模。拆分到单独的表中还是使用基于角色的授权?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆