代码改变世界

数据库设计系列[03]权限系统

2013-01-15 21:26  Mike.Jiang  阅读(4331)  评论(2编辑  收藏  举报

1 权限模型中的业务对象及联系

在权限模型中主要有三个对象员工、岗位(角色)和资源。它们之间的关系为:员工与岗位之间的多对多,岗位与资源也是多对多的关系。即,可以为一位员工分配多个岗位,可以将一个岗位分配给多位员工;可以为一个岗位分配多个资源,也可以将一个岗位分配给多个角色。实体关系图如下:

2 业务对象联系的细化

标识上三个对象的关键属性,以及它们之间的联系,如下图:

Employee:只管理员工信息,不与角色关联;

Post:仅管理岗位信息,(如果需要父岗位可以访问子岗位的资源,可以将岗位表设计成一个树形结构的数据);

Resource:只单独管理资源信息,资源包括页面和按钮,用TYPE来区别,并且通过PARENTID, LEVELNO, SEQNO将资源设计成树形的结构;

EmployeePermission:表示Employee有哪些Post;

PostPermission:表示Post有些Resource;

这样员工、角色和资源就可以单独的管理,它们之间的关系在另外的表中管理。

3 小结

在上面的模型中,我们仅仅是一种比较简单的建模。至于其它的一些复杂的需求,我们可以基于这样的模型进行改进。如当有这样的需求“要能查看2011-10-10王二担任的岗位信息“,我们需要将EmployeePermission修改成历史记录表,即每一次修改员工的岗位信息时,我们都将它保存下来,但某一时刻我们仅用其中的一条数据。加入ISUSE标识即可。这个其实是一种最简单的一种权限模型,还没有加上多公司,部门等需求。对于这些更多的需求,以及现有的权限模型如何演化,我们下次再讨论。