需求:
1、不同职责的人员,对于系统操作的权限应该是不同的;
2、可以对“组”进行权限分配;
3、权限管理系统应该是可扩展的;
4、满足业务系统中的功能权限
数据库结构:
权限表(action)、管理组表(groupmanager)、人员表(master),这三张表依次记录着权限信息、管理组信息、人员信息。这三张表之间的关系是多对多关系,一个权限可能同时属于多个管理组,一个管理组中也可能同时包含多个权限,一个人员可能同时属于多个管理组,而一个管理组中也可能同时包含多个人员。
由于这三张表之间存在着多对多的关系,那么他们之间的交互,最好使用中间表来完成。中间表分别位权限管理组映射表(actiongroup),管理组人员映射表(mastergroup)。权限管理组映射表映射了权限表与管理组表之间的交互,管理组人员映射表映射了人员表与管理组表之间的交互。
除上述表之外,还需要一张表来控制系统运行时左侧菜单栏中的权限分栏,也就是权限分栏表(actioncolumn)
权限映射相关表关系
人员映射相关表关系
最终“组”操作设计
权限分栏表和权限表之间的关系
系统重用性:
1、权限、组和人,这三种元素可以任意添加,彼此之间不受影响。无论是那种类型的业务系统,这三个决定性因素是不会变的,也就以为着结构上不会变,而变得仅仅是数据;
2、两张映射表中记录着三个元素之间的关系。但这些关系完全是人为创建的,需要变化的时候,只是对数据库中的记录进行操作,无需改动结构;
3、权限分栏表中记录着系统使用时显示的分栏。无论是要添加分栏,修改分栏还是减少分栏,也只不过是操作记录而已
总结:此套系统的重点在于,三张实体表牢牢地抓住了系统的核心成分,而两张映射表完美地映射出三张实体表之间的交互。其难点在于,理解映射表的工作,它记录着关系,并且实现了“组”操作的概念。而系统总体的设计是本着可以在不同的MIS系统中“重用”来满足不同系统的功能权限设置。
以下是具体的数据库表字段设计