老沙电信级项目教程-权限部分(1)
目录
目标... 2
重点... 2
简述... 2
需求... 2
思路... 2
表设计... 3
详解... 3
用户表与角色表... 4
权限表与角色表... 5
所有表... 7
练习... 7
目标
完成电信级项目权限部分数据表设计。
重点
理解权限部分功能、原理、思路,并掌握数据表设计。
简述
现在几乎所有的管理后台都用到的权限管理,这有利于对系统的管理,让经过授权的用户可以正常合法的使用已授权功能,而对那些未经授权的“非法用户”将会将他们彻底的“拒之门外”。
需求
1、 不同角色的人员,对于系统操作的权限应该是不同的。
2、 不同人员所属的角色也有可能不同。
3、 不同的角色所拥有的权限也有所不同。
4、 权限是可配的,易扩展的。
思路
1、 一个人员拥有一种角色。
2、 一个角色拥有一个或若干个权限。
3、 一个角色可以被多个人员使用。
4、 一个权限可以被多个角色使用。
表设计
详解
我们来分析一下数据库结构:
首先,item表(以下简称为“权限表”),role表(以下简称为“角色表”),以及user表(以下简称为“用户表”),是三张实体表,它们依次记录着“权限”的信息,“角色”的信息和“用户”的信息。
这三个表之间的关系是多对多的和一对多的,一个权限可能同时属于多个角色,一个角色中也可能同时包含多个权限。同样的道理,一个用户属于某个角色,而一个角色中可能同时包含多个用户。
由于权限和角色是多对多的关系,为了便于维护表之间的关系,所他们之间用一个中间表进行关联。
接下来我们看看他们之间的逻辑视图是怎么样的:
到这里有的好朋友会问:“那个父权限id是干什么用的呢?”我们知道有些系统中是有多级菜单的,那么这个父权限id就是为实现多级菜单儿预留的,这就是便于扩展的需要。
下面我们逐一分析下表之间的关系:
用户表与角色表
用户表和角色表通过一个角色id进行关联,用户到角色是多对一的关系,即一个角色可以被多个用户所拥有,一个用户只拥有一个角色。
如图所示角色表里的“管理员”的role_id 为1,那么用户表中的admin用户所用有的角色id(role_id)为1,所以admin就是管理员。那么管理员都有什么权限呢?我们接着往下看。
权限表与角色表
由于权限和角色是多对多的关系,为了便于维护表之间的关系,所他们之间用一个中间表进行关联。
从图中的中间表我们可以看出角色id(role_id)为1的角色所拥有的权限id(item_id)有:3、5、6、7、8、9、10、11、12、13、17,即权限表所对应的:系统管理、角色管理等。
所以角色id为1的管理员角色所拥有的权限是:系统管理、角色管理等。即用户表中的admin用户所拥有的权限为:系统管理、角色管理等。
从中我们可以看出用户权限是通过角色来获取的,角色的权限又是通过角色权限中间表关联得到的。其难点在于,理解表之间的映射关系,它记录着关系,并且实现了“组”操作的概念。
下面我们来看看权限管理系统的数据库表设计,共分为四张表,如下图:
所有表
User表:
记录着所有用户的信息
Item表:
记录着所有的权限信息,也就是我们俗称的菜单信息
Role表:
记录着所有角色的信息,也成为用户组表
Permission表:
记录着角色和权限的关联关系,从而能够查出某个角色对应的权限,进而可以得到用户的权限信息。
以上就是这次的主要内容了,理解了各表之间的关联关系就可以轻而易举的理解了权限管理的核心内容。
练习
全面理解权限部分,并自己完成表设计。