公司的数据库架构设计与帐户级访问

时间:2017-10-03 20:19:06

标签: sql postgresql roles access-control user-accounts

我正在开发一个基于角色的基本访问控制的应用程序。我在这里制作了当前设计的清晰图表:https://www.lucidchart.com/invitations/accept/49ba4012-c2cc-48de-b11b-5d9c357a66d7

到目前为止,主要对象是帐户,公司和用户,其中用户可以是许多公司的成员,并且有许多公司在1个帐户下。例如,我可以注册并创建一个“Bob's Tire Shop”账户,我可以在其下面有几家公司,如“Bob's's Shop in New York”和“Bob's's Shop in Chicago”等。

我希望用户能够成为多家公司的一部分,所以如果Joe是两家商店的机械师,他应该能够访问他所在的各个商店的信息。我可以使用当前的数据库设计执行此操作,但我仍然坚持如何向用户授予帐户级权限。例如,当Bob创建帐户时,他是帐户“所有者”,因此他应该能够自动执行所有公司的管理操作。我还应该能够拥有其他“帐户管理员”,他们也可以访问所有公司。或者,如果我想给用户“帐单”访问帐户,他应该只能看到帐单信息,而不一定是各个公司的成员。

是否像使用account_roles表在帐户和用户之间创建account_users连接表一样简单?或者我错过了其他的东西。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我认为您可以创建与帐户相关的其他版本的会员资格表。

此membership_accounts表将存储帐户和用户之间的关系,并捕获级别(帐户ID,用户ID,级别)。它与会员资格表基本相同,但与账户有关。

此表中的level列将是memberships_levels表的外键。

然后,要了解用户的完整权限集,您可以获得所有成员身份和membership_accounts表的UNION ALL,并对其执行检查。