下图是版本一。
1. 权限:Privilege
权限应具有上下级关系,也就是管理级别。下面通过例子来说明
系统管理
用户管理
查看用户
新增用户
修改用户
删除用户
我把权限细分为三种类型,”角色权限“,组织权限,“一般权限”,我没有写成继承,而是用了一个枚举属性,因为我觉得他们没有明显的继承关系。
2. 角色Role
我觉得角色也可以有上下级关系,那样父角色就能拥有子角色的所有权限。但为了简单起见,没那么设计,树形结构不好维护。
3. 组织OrganizationUnit
组织就是一堆用户的分类。组织也具有上下级关系。
如果要做的通用,我觉得用户和组织之间应该是多对多的关系。
我是这么考虑的:例如我属于技术部,也属于北京分公司,也属于某个总公司。如果是多对一,那我是放在哪个组织下面好呢。当然应该放在技术部下面。如果要查询北京分公司下所有技术部的用户,还得首先知道这两个组织之间有几个父子关系。
4. 用户User
用户可以拥有多个权限,可以归属于多个角色,可属于多个组织。他的权限集是自身具有的权限、所属的各角色具有的权限、所属的各组织具有的权限的合集。
下图是版本二
1. 权限Privilege
权限有名称,描述,类型三个属性。
2. 角色Role
角色是权限的聚合。有名称,描述,两个属性。
3. 组织OrganizationUnit
组织就是一堆用户的聚合。组织也具有上下级关系,是树形结构。
4. 用户User
用户可以有多个角色,属于一个组织,并有一个管理组织,默认为当前组织。
比较:
下面开始说明为什么版本二比版本一好很多。首先设计的原则是简单通用。越简单当然会越通用。版本二看起来比版本一简单很多。也比较直观,权限聚合成角色,角色聚合成用户,用户聚合成组织。组织有上下级关系。
关于权限。权限是一个独立的个体。可以单独存在。角色包含权限,而不应该是权限包含角色。组织和权限不应该关联,这样关联后系统会很复杂,可以在用户里加一个属性managerOrgnization来解决问题。另外权限不用设计成树形结构。树形结构只会让系统越来越复杂。而且一组权限的parent可以理解成某个角色。
关于角色。角色是权限的聚合。
关于组织。这个很好理解。企业系统里必然会有上下级别的关系,为什么其他三个model没有设计成树形,而在这把OrganizationUnit设计成树形。从上面的聚合箭头可以看出,最终聚合到OrganizationUnit这。中间任何地方设计成树形结构都只会增加系统的复杂度。
关于用户。用户不用设计成树形结构,应该用户所属的组织已经有了树形。另外用户不应该直接和权限关联。当然某些特殊的系统需要把权限分配到用户上。那只在某些权限比较分散的系统里,而且权限没有像样的分组,那才需要把权限分配到用户,比如maven私服,svn。否则把权限分配到角色,在有个管理组织属性,基本就能满足大部分需求了。
相关推荐
有源代码可以运行 。
银行账户管理系统。。
一个用户权限管理模块的设计思路,较详细介绍用户权限管理的设计思路
基于Oracle虚拟专用数据库的用户管理设计.pdf
统一用户管理系统设计 统一用户管理系统设计 统一用户管理系统设计
用户认证管理设计方案用户认证管理设计方案用户认证管理设计方案用户认证管理设计方案
问题描述:设计开发一个银行账户管理系统,账户的信息有账号(唯一),姓名,余额,身份证号码,联系方式等,模拟银行卡的一系列基本功能,包括注册开户、销户退出、存款、取款、转账、查询余额、修改密码、个人信息...
关于数据库设计中的用户权限管理,对于多用户且用户等级不同的数据库设计很有用.
这是一个数据结构课程设计银行账户管理系统,其中用到的数据结构有哈希链 有文件读写功能 账户密码管理功能 用户界面简约有序,不足之处,大家多多包涵,指教,谢谢
银行账户结算管理系统毕业设计开题报告一枚
银行账户管理系统,分为客户模式和管理员模式 可实现模拟ATM机的功能,和管理员的账户管理,日志查看等 此为校内优秀毕业设计,含论文、PPT、演示程序 演示程序的用法及环境配置请访问:www.worldofbeside.com
4.3.8 管理员财务管理界面设计 21 4.3.9 管理员报表打印界面设计 22 4.3.10员工登录后界面设计 22 4.3.11 游客登录后界面 23 第五章 旅游管理系统测试 24 5.1 系统测试 24 5.2 单元测试用例 24 5.3 综合测试 27 5.4 ...
银行帐户管理系统,数据库的课程设计,用java语言写的,内含数据库的建库建表及触发器的sql语句,功能全面。
附件为用户中心-后台管理系统原型设计,Axure RP原型设计文件文档
数据库课程设计报告 工资管理系统数据库设计报告 设计题目:工资管理系统 学 院:信息技术学院 专 业:信息管理与信息系统 小组成员及分工 "组员 "分工 "分数 " " "编写代码及测试运行 " " " "概念设计 " " " "物理...
期末 C++ 课程设计作业。 使用C++完成一个银行账户管理系统。
用户认证管理权限设计方案
数据结构课程设计——个人账户管理,数据结构课程设计——个人账户管理,数据结构课程设计——个人账户管理,数据结构课程设计——个人账户管理,