我们正在使用mysql。假设我们有一个邻接列表模型表。(我知道这还没有正常化。)例如,人员表中的字段如下:
Personnel
|employee|boss |salary|
--------------------------
|CEO |null |999999|
|boss1 |CEO |99 |
|boss2 |CEO |99 |
|slvdrvr1|boss1 |9 |
|slvdrvr2|boss1 |9 |
|slave1 |slvdrvr1|1 |
|slave2 |slvdrvr1|1 |
|slave3 |slvdrvr1|1 |
|slave4 |slvdrvr2|1 |
|slave5 |boss2 |1 |
|slave6 |boss2 |1 |我们也有一个与一些用户的桌子。例如,
Uers
|userid|role |
----------------
|super1|b1 |
|super2|b2 |
|user1 |sd |
|ruut |admin |假设薪资信息是保密的。因此,一些用户可以从某个分支查看薪资信息。
例如,角色b1可以查看/编辑来自boss1和向下的所有薪资。角色b2可以查看/编辑来自boss2和向下的所有薪资。角色sd可以查看/编辑来自slvdrvr1和slvdrvr2的所有薪资。因此,我们需要设置一个用户-人员权限表来实现这一点。
人事表很大,有数万行。
我的问题是如何设置一个可以轻松维护和查询的权限表?
例如,选项1:我们可以为每个人设置角色权限。但是,权限表将是巨大的。
选项2:我们只能为父节点设置角色权限。但是,每次用户想要看到一定数量的记录时,我们必须一直为每个记录寻找权限,直到设置的位置为止。
用户数量大约有数百人。角色数少于100个。
如果不清楚,请问我一些问题。提前谢谢。
发布于 2012-08-21 16:23:37
为了让生活更有趣,也考虑在用户之间建立一个树结构!
进入实现,创建另一个表"User_EMPL_ACCESS",它应该如下所示:
表USER_EMPL_ACCESS( User_ID char(..),ACCESS_PATH char(..) )
在访问路径中,存储每个用户都有资格看到的最上层节点的完全限定路径。
然后,开发一个名为hasAccess (userID,EMPLID)的UDF。
hasAccess函数应该执行以下操作:
现在您的查询如下所示:
select * from SALARY_TABLE where MONTH = 'JAN'
and hasAccess('myUserID', SALARY_TABLE.EMPLID) = 1https://stackoverflow.com/questions/12058943
复制相似问题