功能分析 1. 登录一个系统,基本都需要用户输入用户名、密码;
2. 每个用户的 角色 不同,则其 访问权限 一般也不同, 如: 系统管理员:可以查看所有界面; 普通用户:只能查看部分界面。3. 不同的用户,即使可以查看同样的界面,但在该界面上可进行的 操作权限 也不同,如: 用户1:可以在界面1上进行增删改查; 用户2:只可以在界面1上查看,不具备增删改功能;4. 不同用户基本都对应不同角色,如:用户1、用户2分别对应管理员角色、操作员角色,角色之间也存在 权限等级 的差异,如: 角色1:对应省级管理员;==>可以查看该省下的所有学校信息; 角色2:对应市级管理员; ==>可以查看该市下的所有学校信息; 角色3:对应县级管理员; ==>可以查看该县下的所有学校信息; 不管是省、市、县哪个系统管理员,他们可访问的界面都是相同的(即访问权限相同),且在每个界面上可进行的操作权限也相同的,不同的是每个管理员角色可以访问的学校个数和学校范围不同,这里称这种不同为: 权限等级 不同;
总结: 从上面的分析中,主要涉及到以下几个概念: 1.角色: 如系统管理员角色,系统操作员角色,普通用户角色; 不同的角色,其访问权限是不同的,即可访问的模块(界面)集合是不同的; 角色的权限等级也不同,权限等级如:公司领导、部分领导、普通员工; 2. 模块:(界面) 模块就是指具体的界面,每个模块上又有不同的操作,如增删改查; 3. 访问权限:确定角色可以访问的模块(界面)集合;
4. 操作权限:确定可以在各模块(界面)上进行的操作集合,如增删改查; 5. 权限等级:即确定角色可以访问的范围,如: 角色1:权限等级为 公司领导,则 可以查看公司所有员工信息; 角色2:权限等级为部门领导,则只可以查看该部门所有员工信息。
数据库设计 总体模型:
1.模块定义表:
模块是分层级的,如:信息管理-->联系方式管理;
每个模块都有上级模块。 2. 角色定义表: 含有角色权限等级,用于为角色分配权限等级; 角色权限等级:是一个菜单选项,包括公司领导、部门领导、普通员工; 3.授权定义表: 用于给角色分配访问权限以及为每个模块分配操作权限;1个角色可以含有多个模块,同样1个模块可以分配给多个角色,所以角色和模块是多对多的关系;这种多对多的关系可以使用关系表来实现,即通过联合主键和实现关系表:
表中含有字段“操作权限”,用于给每个界面分配操作权限,见下图: 若该模块有增删改查功能,则操作权限15,即二进制的“1111”,若该模块只有查看功能,则操作权限为2,即二进制的“0010”,同样的,“0111”表示该模块有增、改、查功能; 4. 系统用户表:
该表中“角色权限等级”--->应与“所属角色”中的权限等级保持一致,之所以该表中重复该字段,是为了方便查询。角色权限等级取值:
1. 公司领导:company_id不能为空; 2. 部门领导: company_id、dept_id不能为空; 3. 普通员工: company_id、dept_id、staff_id不能为空;
登录执行过程 1. 系统登录时,首先输入用户名、密码;2. 确定访问权限: 2.1 判断该用户的“角色编号”; 2.2 在“授权定义表”中根据该“角色编号”查找相应的模块,找到的模块集合即是访问权限;3. 确定操作权限:
3.1 在2.2步骤中查询到的每个模块都有相应的操作权限,即构成了每个模块的操作权限; 4. 确定权限等级: 4.1 结合该用户的“角色权限等级”+“公司标识”+“部门标识”+“员工标识”,到员工信息表中去查找相应员工,具体如下: 角色权限等级 取值: 1. 公司领导:查找<员工信息表.公司 标识==该用户.公司标识>的所有用户 ; 2. 部门领导: 查找< 员工信息表.公司 标识==该用户.公司标识 && 员工信息表.部门 标识==该用户.部门标识 >的所有用户 ; 3. 普通员工: 查找< 员工信息表.公司 标识==该用户.公司标识 && 员工信息表.部门 标识==该用户.部门标识 && 员工信息表.员工 标识== 该用户.公司标识 >的所有用户 ;
来自为知笔记(Wiz)
【数据库设计-2】权限设计-系统登录用户权限设计
标签:
查看更多关于【数据库设计-2】权限设计-系统登录用户权限设计的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did119086