代码改变世界

数据库设计系列[04]组织结构加入权限系统

2013-01-16 23:01  Mike.Jiang  阅读(12158)  评论(3编辑  收藏  举报

1引言

接着上一篇随笔“数据库设计系列[03]权限系统”;在上篇随笔中,只是简单地介绍基于角色和操作访问控制模型,能把权限控制到页面和按钮。CDM图:

2 新的需求:组织结构

比如在一个大型的手机销售公司有这样的一种部门岗位结构:

现在有下面的需求

1>要求给用户分配权限时用苹果部门经理、诺基亚部门经理…而不是部门经理这样的岗位;

2>要求统计苹果部门经理、诺基亚部门经理的销售业绩;

当有上面这些需求时,上篇随笔中的权限模型就无法满足需求。

3 加入组织结构后的权限模型

我们先不考虑部门信息,这样上面的结构图中就只剩下岗位信息。对这样的需求建模,第一个反应是将岗位(POST)建成树形结构。但是这样一来,苹果部门经理与诺基亚部门经理就是两个完全不同的角色与资源实体关联,并且关联关系是相同的,这样就造成数据冗余。如果岗位结构很小,这样做也未尝不可。CDM:

这个权限模型与之前的模型并无多大差别,只是将岗位做成了树形结构,以适应新的需求。

3.2

但是如果组织结构图很大,岗位实体与岗位权限实体也会变的很大,在配置权限时也会很麻烦。

在组织结构图中,我们看到苹果部门经理和诺基亚部门经理所处的岗位级别是一样的,也就是说它们是部门经理的一个实例。依此类推,**销售人员是销售员的实例。所以有一个岗位实例的实体,并且它们有一个子父节的关系。最后,可以将岗位实例分配给用户。CDM:

PostOrganization:存储岗位实例的信息,即存储上面的岗位结构图。

3.3 加上部门的信息

累了,先直接上图,不解释>.<。CDM:

在这个模型中,可以解决这样的需求:当苹果部门有新的客户时,可以邮件通知部门内所有的人。

4 总结

本次,主要讨论将组织结构的信息加入到权限系统中。本篇文章仅是抛砖引玉,有什么不对的,不足的,想法片面的地方,还望各位指点指点