我正在开发一个医院系统,患者可以根据自己的选择访问他们的信息。对于例如医生,护士,注册文员,保险公司和经理来说,有不同的用户群。用户可以访问患者个人详细信息,患者医疗详细信息,患者处方详细信息或全部。每个用户都由唯一的" user_id"每个小组都有一个独特的" group_id"。
患者可以阻止:
一旦授予用户或组访问权限,就会为其分配读取,写入和删除等权限。
我在确定如何设计我的表及其字段方面遇到了很多麻烦,以便我可以存储这些访问权限信息。
答案 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是否允许用户或其组执行操作。用户权限应该具有更高的优先级。
我认为,这种方式可行,