【发布时间】:2012-11-18 22:30:36
【问题描述】:
我有以下表结构:
Entity
---------------------
id | name
Users
---------------------
id | name | password
UserGroups
---------------------
id | parent_id | name
Users_UserGroups
---------------------
user_id | user_group_id
Roles
---------------------
id | parent_id | name
Users_Roles
--------------------
user_id | role_id
主要目标是在以下条件下创建Entity 行级访问限制:
1) 用户创建Entity - 他可以看到它(他是所有者)
2)用户组成员也可以看到它(但如果定义了其他 - 看不到 - 它将是用户私有的)。所以记录可以是用户或组私有的,也可以是公共的——所有人都可以看到记录。例如,用户在销售团队 A 中,有记录可以看到所有组成员,但可能有一个或多个记录只能看到用户 - 可能是潜在客户。
3) 例如,用户 A 的角色为 salesman,并且该角色是父角色 sales managers 的子角色。然后sales manager 角色的用户可以看到用户A 实体。角色的层次结构。老板可以看到他的直接员工在做什么:)
4) 还有profile 表,可以将配置文件添加到角色,如果需要,也可以添加到用户。
主要问题是如何将用户/组/角色/配置文件与实体相关联?以及如何定义权限?我的想法是在Entity 中创建列'user_id'。查询Entity记录时,查找用户,查看用户属于哪个角色、组、个人资料等。但我认为它太复杂了,也许可以有更简单的方法,不需要很多额外的表。我会很感激你的建议:)
【问题讨论】:
标签: sql database database-design relational-database