公司数据库架构设计与帐户级别访问
Database Schema Design For Company vs Account Level Access
我正在开发一个具有一些基于角色的基本访问控制的应用程序。我在这里制作了当前设计的清晰图表:https://www.lucidchart.com/invitations/accept/49ba4012-c2cc-48de-b11b-5d9c357a66d7
目前主要的对象是Accounts, Companies, Users,其中一个用户可以是很多公司的成员,1个account下有很多公司。例如,我可以注册并创建一个 "Bob's Tire Shop" 帐户,我可以在它下面有几个公司,例如 "Bob's Tire Shop in New York" 和 "Bob's Tire Shop in Chicago" 等
我希望用户能够成为多家公司的一部分,因此如果 Joe 是两家商店的机械师,他应该能够访问他工作的各个商店的信息。我可以用我当前的数据库设计来做到这一点,但我仍然坚持如何向用户授予帐户级别的权限。例如,当 Bob 创建帐户时,他就是帐户 "owner",因此他应该能够自动对所有公司执行管理操作。我还应该可以让其他 "account admins" 也可以访问所有公司。或者,如果我想授予用户 "billing" 访问帐户的权限,他应该只能看到帐单信息,不一定是各个公司的成员。
是否像在帐户和用户之间创建 account_users 加入 table 一样简单 account_roles table?还是我错过了其他东西。任何帮助将不胜感激。
我认为您可以创建与帐户相关的另一个版本的会员资格 table。
这个membership_accountstable会存储账户和用户之间的关系,并捕获级别(账户ID,用户ID,级别)。它与会员 table 本质上相同,但与帐户有关。
此 table 中的级别列将是 memberships_levels table 的外键。
然后,要了解用户的完整权限集,您可以获得成员资格和 membership_accounts table 的 UNION ALL,并对其执行检查。
我正在开发一个具有一些基于角色的基本访问控制的应用程序。我在这里制作了当前设计的清晰图表:https://www.lucidchart.com/invitations/accept/49ba4012-c2cc-48de-b11b-5d9c357a66d7
目前主要的对象是Accounts, Companies, Users,其中一个用户可以是很多公司的成员,1个account下有很多公司。例如,我可以注册并创建一个 "Bob's Tire Shop" 帐户,我可以在它下面有几个公司,例如 "Bob's Tire Shop in New York" 和 "Bob's Tire Shop in Chicago" 等
我希望用户能够成为多家公司的一部分,因此如果 Joe 是两家商店的机械师,他应该能够访问他工作的各个商店的信息。我可以用我当前的数据库设计来做到这一点,但我仍然坚持如何向用户授予帐户级别的权限。例如,当 Bob 创建帐户时,他就是帐户 "owner",因此他应该能够自动对所有公司执行管理操作。我还应该可以让其他 "account admins" 也可以访问所有公司。或者,如果我想授予用户 "billing" 访问帐户的权限,他应该只能看到帐单信息,不一定是各个公司的成员。
是否像在帐户和用户之间创建 account_users 加入 table 一样简单 account_roles table?还是我错过了其他东西。任何帮助将不胜感激。
我认为您可以创建与帐户相关的另一个版本的会员资格 table。
这个membership_accountstable会存储账户和用户之间的关系,并捕获级别(账户ID,用户ID,级别)。它与会员 table 本质上相同,但与帐户有关。
此 table 中的级别列将是 memberships_levels table 的外键。
然后,要了解用户的完整权限集,您可以获得成员资格和 membership_accounts table 的 UNION ALL,并对其执行检查。