访问权限表设计

时间:2015-02-16 08:14:27

标签: mysql database design-patterns database-design

我正在开发一个医院系统,患者可以根据自己的选择访问他们的信息。对于例如医生,护士,注册文员,保险公司和经理来说,有不同的用户群。用户可以访问患者个人详细信息,患者医疗详细信息,患者处方详细信息或全部。每个用户都由唯一的" user_id"每个小组都有一个独特的" group_id"。

患者可以阻止:

  1. 单个用户(例如护士)
  2. 一群人(例如所有护士)
  3. 有一些例外的小组(例如阻止护士1和护士3以外的所有护士)
  4. 特定用户但允许他们各自的小组(例如允许除护士1和护士3之外的所有护士)
  5. 一旦授予用户或组访问权限,就会为其分配读取,写入和删除等权限。

    我在确定如何设计我的表及其字段方面遇到了很多麻烦,以便我可以存储这些访问权限信息。

1 个答案:

答案 0 :(得分:-1)

首先,我会拒绝所有用户和群组作为标准。然后是下表结构:

<强> tblPatients

姓名,patient_id(我更喜欢uuid&#39; s)


<强>向tblUsers

姓名,user_id(我更喜欢uuid&#39; s)

<强> tblGroups

姓名,group_id(我更喜欢uuid&#39; s)

<强> tblUsersGroups

users_groups_id,user_id,group_id

user_id引用tblUsers,group_id引用tblGroups。

tblUsers,tblGroups和tblUsersGroups结构背后的想法是,用户可以是多个组的成员。


现在重要的是白名单:

<强> tblWhitelist

id,patient_id,write_group_id,write_user_id,read_group_id,read_user_id,delete_group_id,delete_user_id

在此表中,您输入了访问ID,我会每行执行一次,您可以根据需要添加任意数量的规则。

对于您的查询,您需要用户名或user_id,在tblUserGroups中获取此用户的成员资格,然后查看tblWhitelist是否允许用户或其组执行操作。用户权限应该具有更高的优先级。

我认为,这种方式可行,