用户权限设计
权限设计-系统登陆用户权限设计

权限设计-系统登陆⽤户权限设计需求分析-场景:假设需要为公司设计⼀个⼈员管理系统,并为各级领导及全体员⼯分配系统登录账号.有如下⼏个要求:1.权限等级不同:公司领导登录后可查看所有员⼯信息,部门领导登录后只可查看部门员⼯信息,员⼯登录后只可查看⾃⼰的信息. 2.访问权限不同;如公司领导登录后,可查看员⼯薪⽔分布界⾯,⽽员⼯则不能看到;3.操作权限不同:如系统管理员可以在信息发布界⾯进⾏增删改查发布信息,⽽普通员⼯只可以在信息发布界⾯进⾏查看,不能修改.删除和新增.功能分析1.登录⼀个系统,基本都要输⼊⽤户名,密码;2.每个⽤户的⾓⾊不同,则其访问权限⼀般也不同,,如:系统管理员:可查看所有界⾯;普通⽤户:只能查看部分界⾯.3.不同的⽤户,及时可以查看同样的界⾯,但在该界⾯上可进⾏的操作权限也不同,如⽤户1:可在界⾯1上进⾏增删改查;⽤户2:只可以在界⾯以上查看,不具备增删改功能;4.不同⽤户基本都对应不同的⾓⾊,如:⽤户1.⽤户2分别对应管理员⾓⾊,操作员⾓⾊,⾓⾊之间也存在权限等级的差异,如:⾓⾊1:对应省级管理员; ==>可以查看该省下的所有学校信息;⾓⾊2:对应实际管理员;==>可以查看该市下的所有学校信息;⾓⾊3:对应县级管理员:==>可以查看该县下的所有学校信息;不管是省.市.县哪个系统管理员,他们可访问的界⾯都是相同的(即访问权限相同),且在每个界⾯上可进⾏的操作权限也相同,不同的管理员⾓⾊可以访问的学校个数和学校的范围不同,这⾥称这种不同为:权限等级不同.总结:从上⾯的分析中,主要涉及以下⼏个概念:1.⾓⾊:系统管理员⾓⾊系统操作员⾓⾊普通⽤户⾓⾊;不同的⾓⾊,其访问权限是不同的,即可访问的模块(界⾯)集合是不同的;⾓⾊的权限等级也不同,权限等级如:公司领导,部分领导,普通员⼯2.模块(界⾯)模块就是指具体的界⾯,每个模块上⼜有不同的操作,如:增删改查3.访问权限:确定⾓⾊可以访问的模块(界⾯)集合4.操作访问权限:确定可以在各个模块(界⾯)上进⾏操作集合如增删改查;5.权限等级:即确定⾓⾊可以访问的范围,如:⾓⾊1:权限等级为公司领导,则可以查看公司所有员⼯信息⾓⾊2:权限等级为部门领导,则只可以查看该部门所有员⼯信息数据库设计总体模型:1.模块定义表:模块是分层级的,如:信息管理–>联系⽅式管理;每个模块都有上级模块。
用户权限管理设计

用户权限管理设计简介本文档旨在设计一个用户权限管理系统,该系统可用于管理用户在系统中的访问权限和操作权限。
通过合理的权限管理,可以提高系统的安全性、保护敏感数据,并确保系统仅被授权用户访问。
功能需求1. 用户注册和登录功能:系统应提供用户注册和登录功能,以便用户可以进行身份验证和访问授权操作。
2. 用户角色管理:系统应支持定义不同的用户角色,并为每个角色分配特定的权限。
用户角色可以根据其职责和需求来定义,例如管理员角色、普通用户角色等。
3. 权限分配:系统管理员应有权将特定的权限分配给用户角色或个别用户。
这些权限可以包括系统模块访问权限、数据操作权限等。
4. 权限验证:系统应能够验证用户对特定操作的权限。
在用户进行敏感操作之前,系统应先验证该用户是否具有执行该操作的权限,并相应地提供授权或拒绝访问的提示。
5. 日志记录:系统应能够记录用户的操作日志,包括登录、权限变更、敏感操作等。
这有助于审计和安全追踪。
6. 密码策略:系统应支持强密码策略,要求用户选择足够强度的密码,并定期要求用户更改密码。
7. 密码加密:系统应对用户密码进行加密存储,以保护用户密码的安全。
8. 异常处理:系统应有健壮的异常处理机制,能够处理各种异常情况并提供相应的错误提示,以确保系统的稳定性和可靠性。
技术实现1. 用户数据存储:系统可以使用关系型数据库或非关系型数据库来存储用户数据,以便进行用户身份验证和权限验证。
2. 认证与授权:系统可以使用常见的认证与授权框架来实现用户登录、角色管理和权限分配等功能,如Spring Security、Shiro等。
3. 日志记录:系统可以使用日志记录框架来记录用户操作日志,如Log4j、Slf4j等。
4. 异常处理:系统可以使用异常处理框架来捕获和处理异常,如Spring MVC的异常处理机制。
5. 密码加密:系统可以使用加密算法对用户密码进行加密存储,如MD5、SHA等。
安全考虑1. 防止跨站脚本攻击(XSS):系统应对用户输入进行合理的过滤和转义,防止恶意脚本注入。
用户及权限管理设计

总 权 限
组 织 管
理
操 作 日 志 管 理
查
删
询
除
修修修修 改改改改
修修 修 改改 改
修删 加改除
添修删 加改除
添
修删
加
改除
用户及权限管理设计实例
《大庆炼化公司建设项目后评价管理系统》中的用户及权限管理设计 方案采用的是方案3(用户-角色-操作)
user PK userId
1. 基于角色的权限设计 2. 基于操作的权限设计 3. 基于角色和操作的权限设计 4. 2&3组合的权限设计 5. 精确至数据记录的权限设计 6. 涉及资源、权限和规则的权限设计
用户及权限管理设计方案
1. 基于角色的权限设计
最常见也是比较简单的方案 通常这种设计已经足够 微软设计了该方案的通用做法:
❖ 不足:有可能用户会要求某一种Action所操作的对象部分记录有权限,而对于 其他的记录没有权限,比如说一个内容管理系统,对于某一些频道某个用户有 修改的权限,而对于另外一些频道没有修改的权限,该设计不能满足要求
用户及权限管理设计方案
5. 精确至数据记录的权限设计〔对于同一种实体(资源)用户可以对
一部分记录有权限〕
该方案需要对每一种不同的资源创建一张权限表 例如:上图中对Content和Channel两种资源分别创建了UserActionContent和
UserActionChannel表用来定义用户对某条记录是否有权限 不足:该设计可以满足用户需求但是不是很经济,UserActionChannel和
主要内容
❖ 用户管理及权限管理的意义 ❖ 用户及权限管理涉及的几个概念 ❖ 用户及权限管理设计方案 ❖ 用户及权限管理通用功能设计 ❖ 用户及权限管理设计实例
用户权限管理设计方案

用户权限管理设计方案用户权限管理是一种重要的信息安全控制手段,能够确保系统中的用户只能访问其所需的数据和功能,防止未授权的操作和数据泄露。
本文将从用户权限的概念、设计原则、权限管理模型以及权限管理方案的实施等方面进行详细讨论。
一、用户权限的概念用户权限是指用户在系统中所具备的操作和访问资源的能力。
它涵盖了用户能够进行的操作类型、访问的资源范围以及操作的具体权限。
通过用户权限,系统可以灵活地控制用户在系统中的行为和操作,确保用户只能进行其所需的操作,从而提高系统的安全性。
二、用户权限管理的设计原则1.最小权限原则:用户应该被授予执行其工作所需的最小权限,以降低潜在的风险。
只有在确实需要的情况下,才应该授予更高级别的权限。
2.分级管理原则:根据用户的角色和职责将用户划分为不同的权限组,每个权限组仅拥有其所需的操作和资源访问权限。
3.统一权限管理原则:用户权限应该经过集中管理,避免出现分散和重复的权限设置,以减少管理成本和提高管理效率。
三、权限管理模型1. 自顶向下授权模型(Top-Down Authorization Model):该模型将权限从高层次向低层次授权,通过角色定义和角色授权的方式,将用户划分为不同的角色,每个角色拥有其所需的权限。
2. 基于角色的访问控制模型(Role-Based Access Control Model):该模型根据用户的角色将权限分配给用户,通过角色的添加、修改和删除来变更用户的权限。
3. 基于目录的访问控制模型(Directory-Based Access Control Model):该模型根据用户所在的组织结构进行权限管理,通过目录结构的设定和权限的继承来实现权限的控制和管理。
四、权限管理方案的实施1.确定用户的角色和职责:根据不同用户的角色和职责,将用户划分为不同的权限组。
同时,定义每个角色所需的操作和资源访问权限。
2.设计权限继承关系:通过权限的继承,将上层角色的权限传递给下层角色,以减少权限设置的重复。
RBAC用户角色权限设计方案

RBAC用户角色权限设计方案RBAC(Role-Based Access Control)是一种用于控制用户访问权限的设计模型。
在RBAC中,用户角色是中心,权限被分配给角色,而不是直接分配给用户。
通过这种方式,可以简化访问控制管理,并且使权限变得更加灵活。
在设计一个RBAC的用户角色权限方案时,通常需要进行以下步骤:1.确定需要管理的权限范围:首先,需要明确哪些权限需要进行管理。
可以通过对系统进行分析,确定系统中的各种操作、功能和资源,并明确它们的访问权限。
3.确定角色权限:为每个角色定义相应的权限。
这可以通过将操作、功能和资源与角色关联来实现。
可以使用权限矩阵或其他文档形式来记录和管理角色的权限。
角色的权限应该与其所代表的职责和业务需求相匹配。
4.分配用户角色:将角色分配给用户。
在这一步骤中,需要考虑用户的职责和业务需求,以确定应该分配给该用户的角色。
用户可以拥有一个或多个角色,根据其在系统中的职责和权限需求。
5.定义角色继承关系:确定角色之间的继承关系。
这意味着一个角色可以继承其他角色的权限。
这种继承关系可以简化权限管理,并避免为每个角色都分配相同的权限。
继承关系可以通过将一个角色指定为另一个角色的父角色来实现。
7.定期进行权限审查:RBAC系统的权限会随着时间的推移而变化。
因此,需要定期审查角色和权限,以确保它们与业务需求保持一致。
可以通过与系统管理员、业务用户和安全专家进行合作来进行审查。
1.职责分离:角色应该基于职责进行定义,以确保用户只能访问他们所需要的权限。
这样可以降低权限滥用和错误配置的风险。
2.需求分析:在定义角色和权限之前,需要进行业务需求分析。
这将有助于确定每个角色应该具有哪些权限,以及角色之间的关系。
3.继承关系:角色之间的继承关系可以简化权限管理。
通过将一些角色指定为另一个角色的父角色,可以使子角色继承父角色的权限。
4.灵活性和可扩展性:设计RBAC系统时,应该具有足够的灵活性和可扩展性,以应对将来可能出现的新需求和变化。
统一用户权限管理系统的设计与实现

统一用户权限管理系统的设计与实现随着互联网和信息技术的不断发展,各企业、组织和机构的信息化程度也在逐步提高,涉及到的系统和应用也随之增多。
但是,在这个过程中,许多企业和机构已经意识到,如何管理用户权限已经成为他们面临的一大难题。
如果一个企业或机构拥有多个系统或应用,而每个系统/应用又有不同的用户组和权限设置,那么管理起来就非常复杂。
因此,一个统一的用户权限管理系统必不可少。
一、设计需求当一个企业或机构拥有多个系统或应用时,第一个需要解决的问题便是如何将用户的账号信息统一管理。
具体来说,需要考虑以下几个方面:1. 账号注册:用户在首次使用一个系统或应用时需要进行账号注册,同时需要验证其身份。
这些账号信息需要通过系统之间的协作来实现共享,以免因不同系统的账号设置而导致用户混淆。
2. 账号认证:对于一个已存在的账号,需要进行身份认证,以控制用户对系统或应用的访问权限。
同时还需要提供密码重置等功能。
3. 账号维护:当用户信息或权限变更时,需要为所有相关系统同步更新这些信息。
这涉及到账号信息的修改、删除,以及角色和权限的调整。
4. 存储安全:为了保护用户的账号和隐私信息,需要采取一系列措施保证其安全存储,并防止非授权访问。
5. 业务拓展:随着企业或机构的业务范围不断拓展,需要考虑新应用和新系统的接入,以满足新的需求。
二、架构设计在用户权限管理系统的架构设计过程中,需要考虑以下几个方面:1. 单点登录(SSO):为了方便用户的使用,需要为所有相关系统提供单点登录功能,用户只需要注册一次账号信息即可轻松地使用所有系统(或应用)。
同时,通过SSO架构设计,可以提高用户使用体验,简化用户的账号管理。
2. 信息共享:如果企业或机构拥有的是一系列相对独立的系统,需要考虑如何实现这些系统之间的信息共享。
通过合理的设计,可以保证用户在使用不同的系统时,其账号信息、权限等信息能够得到同步更新,避免用户重复注册或登录。
3. 权限管理:为了保证各系统能够独立地进行业务操作,需要考虑如何在用户权限管理系统中设计角色和权限的分配,实现不同用户对略系统的访问控制。
用户认证管理权限设计方案
用户认证管理权限设计方案用户认证管理权限设计是指在一个系统或平台中,设计和管理用户认证的权限及其级别。
用户认证是指验证用户身份的过程,而用户管理权限是指系统管理员或管理员对用户账号的授权和管理。
设计一个好的用户认证管理权限方案是确保系统安全和保护用户隐私的重要一步。
以下是一个用户认证管理权限设计方案的详细说明:1.用户角色和层级管理:2.用户注册和认证流程:设计一个用户注册和认证流程,以确保只有合法的用户能够使用系统。
注册过程可以包括用户填写个人信息,并需要验证其电子邮件或手机号码。
认证流程可以包括发送验证码或链接到用户注册的电子邮件或手机,以确保用户身份的准确性和安全性。
3.密码管理策略:设计一个密码管理策略,以确保用户密码的安全性。
密码应该采用强密码规则,例如至少8个字符,包含大写字母、小写字母、数字和特殊字符。
系统应该对用户密码进行加密和哈希处理,以防止密码泄露。
4.权限分配和管理:5.日志记录和监控:设计一个日志记录和监控系统,以跟踪用户的操作和登录历史,并能够监控和检测异常活动。
这可以帮助管理员快速发现潜在的安全威胁,并采取相应的措施。
同时,在用户认证和权限管理过程中的所有操作都应该被记录下来,以便进行审计和追踪。
6.双因素认证:为了提高系统的安全性,可以考虑引入双因素认证。
例如,当用户登录时,除了输入用户名和密码之外,还需要输入动态验证码或使用指纹识别等生物特征认证。
这样可以增加用户身份验证的复杂度,提高系统的安全性,避免密码被盗用。
7.完善的用户注销流程:设计一个完善的用户注销流程,允许用户在不使用系统时注销他们的账户。
在用户注销时,需要清除他们的个人信息和所有相关数据,并且要求用户再次确认此操作以避免误操作。
综上所述,一个好的用户认证管理权限方案应该包括用户角色和层级管理、用户注册和认证流程、密码管理策略、权限分配和管理、日志记录和监控、双因素认证以及完善的用户注销流程。
通过设计和实施这些措施,可以确保系统的安全性和用户数据的保护。
权限设计原则
权限设计原则
权限设计是一个系统的、细致的过程,其目的是确保合适的人员在必要的时间内获得必要的权限,而不会泄露敏感信息或导致安全漏洞。
以下是一些常见的权限设计原则:
1. 最小权限原则:每个用户只应被授予完成其任务所需的最小权限。
这可以减少错误操作和恶意行为的发生。
2. 隔离原则:不同的用户应该被隔离在不同的权限级别中,以确保敏感信息不会被未经授权的人员访问。
3. 分层权限原则:权限应该分层,以便高层次的权限包含低层次的权限。
这可以确保更高级别的用户可以访问低级别用户的数据。
4. 审计和日志记录原则:应该对所有的权限使用和权限变更进行审计和日志记录,以便在必要的时候进行调查和审查。
5. 版权原则:应该遵守所有相关的版权法律和规定,以确保不会违反任何版权法律或条例。
最终,权限设计应该是一个动态的过程,应该随着时间和情况的变化而进行调整。
在设计权限时,应该考虑到未来的扩展和变更,以确保系统的灵活性和可持续性。
- 1 -。
权限设计方案
权限设计方案权限设计方案一般指的是在软件系统中对于用户的权限进行设计与管理的方案。
权限设计方案可以包括以下几个方面的内容:1. 用户角色与权限划分:首先,需要对系统的用户角色进行划分,常见的角色包括管理员、普通用户、访客等,也可以根据具体的系统需求进行进一步划分。
然后,对于每个角色,需要确定其具体的权限,包括可以访问的功能模块、可以进行的操作等。
这一步可以通过讨论与需求分析的方式进行。
2. 权限控制机制设计:在系统中需要实现权限控制,主要通过以下几种方式来实现:一是通过代码控制,即在系统中编写代码逻辑来判断用户是否有某个功能或操作的权限;二是通过角色-权限映射来实现,即在数据库中存储用户角色和权限的对应关系,系统在验证用户权限时通过查询数据库进行判断;三是通过访问控制列表(ACL)来实现,即将用户的权限信息存储在访问控制列表中,系统在验证用户权限时通过查询访问控制列表进行判断。
3. 用户权限管理界面设计:为了方便管理员对用户权限进行管理,可以在系统中设计一个用户权限管理界面,管理员可以在该界面中添加、删除、修改用户角色和权限。
界面应该简洁明了,管理员可以一目了然地看到当前所有用户的角色与权限,并且进行相应的操作。
4. 安全性考虑:在权限设计方案中,需要充分考虑系统的安全性。
一方面,要保证用户角色与权限的合理划分,不同的角色应有不同的权限,以防止用户越权操作。
另一方面,要防止恶意攻击和非法访问,可以通过加密、防火墙、验证码等技术手段来保护系统的安全。
5. 权限变更与审计:在使用系统的过程中,用户的权限可能会发生变化,例如晋升为管理员、被解雇等。
因此,权限设计方案中还应考虑用户权限变更的机制,可以通过管理员审核、系统自动变更等方式进行权限的变更。
同时,为了保证系统的安全和合规性,还应该记录用户权限的变更和使用情况,供后续审计和追责使用。
总结起来,权限设计方案需要综合考虑用户角色与权限划分、权限控制机制设计、用户权限管理界面设计、安全性考虑以及权限变更与审计等方面。
用户权限管理设计方案【精选文档】
用户权限管理设计方案用户认证管理设计方案1 设计思路为了设计一套具有较强可扩展性的用户认证管理,需要建立用户、角色和权限等数据库表,并且建立之间的关系,具体实现如下。
1。
1 用户用户仅仅是纯粹的用户,用来记录用户相关信息,如用户名、密码等,权限是被分离出去了的。
用户(User)要拥有对某种资源的权限,必须通过角色(Role)去关联。
用户通常具有以下属性:✓编号,在系统中唯一。
✓名称,在系统中唯一。
✓用户口令.✓注释,描述用户或角色的信息。
1.2 角色角色是使用权限的基本单位,拥有一定数量的权限,通过角色赋予用户权限,通常具有以下属性:✓编号,在系统中唯一。
✓名称,在系统中唯一。
✓注释,描述角色信息1.3 权限权限指用户根据角色获得对程序某些功能的操作,例如对文件的读、写、修改和删除功能,通常具有以下属性:✓编号,在系统中唯一。
✓名称,在系统中唯一。
✓注释,描述权限信息1。
4 用户与角色的关系一个用户(User)可以隶属于多个角色(Role),一个角色组也可拥有多个用户,用户角色就是用来描述他们之间隶属关系的对象。
用户(User)通过角色(Role)关联所拥有对某种资源的权限,例如●用户(User):UserID UserName UserPwd1 张三 xxxxxx2 李四 xxxxxx……●角色(Role):RoleID RoleName RoleNote01 系统管理员监控系统维护管理员02 监控人员在线监控人员03 调度人员调度工作人员04 一般工作人员工作人员……●用户角色(User_Role):UserRoleID UserID RoleID UserRoleNote1 1 01 用户“张三”被分配到角色“系统管理员"2 2 02 用户“李四”被分配到角色“监控人员”3 2 03 用户“李四”被分配到角色“调度人员”……从该关系表可以看出,用户所拥有的特定资源可以通过用户角色来关联。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用户角色权限设计
实现业务系统中的用户权限管理
B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器检测实现,而B/S中,浏览器是每一台计算机都已具备的,如果不建立一个完整的权限检测,那么一个“非法用户”很可能就能通过浏览器轻易访问到B/S系统中的所有功能。
因此B/S业务系统都需要有一个或多个权限系统来实现访问权限检测,让经过授权的用户可以正常合法的使用已授权功能,而对那些未经授权的“非法用户”将会将他们彻底的“拒之门外”。
下面就让我们一起了解一下如何设计可以满足大部分B/S系统中对用户功能权限控制的权限系统。
需求陈述
•不同职责的人员,对于系统操作的权限应该是不同的。
优秀的业务系统,这是最基本的功能。
•可以对“组”进行权限分配。
对于一个大企业的业务系统来说,如果要求管理员为其下员工逐一分配系统操作权限的话,是件耗时且不够方便的事情。
所以,系统中就提出了对“组”进行操作的概念,将权限一致的人员编入同一组,然后对该组进行权限分配。
•权限管理系统应该是可扩展的。
它应该可以加入到任何带有权限管理功能的系统中。
就像是组件一样的可以被不断的重用,而不是每开发一套管理系统,就要针对权限管理部分进行重新开发。
•满足业务系统中的功能权限。
传统业务系统中,存在着两种权限管理,其一是功能权限的管理,而另外一种则是资源权限的管理,在不同系统之间,功能权限是可以重用的,而资源权限则不能。
关于设计
借助NoahWeb的动作编程理念,在设计阶段,系统设计人员无须考虑程序结构的设计,而是从程序流程以及数据库结构开始入手。
为了实现需求,数据库的设计可谓及其重要,无论是“组”操作的概念,还是整套权限管理系统的重用性,都在于数据库的设计。
我们先来分析一下数据库结构:
首先,action表(以下简称为“权限表”),gorupmanager表(以下简称为“管理组表”),以及master表(以下简称为“人员表”),是三张实体表,它们依次记录着“权限”的信息,“管理组”的信息和“人员”的信息。
如下图:
这三个表之间的关系是多对多的,一个权限可能同时属于多个管理组,一个管理组中也可能同时包含多个权限。
同样的道理,一个人员可能同时属于多个管理组,而一个管理组中也可能同时包含多个人员。
如下图:
由于这三张表之间存在着多对多的关系,那么它们之间的交互,最好使用另外两张表来完成。
而这两张表起着映射的作用,分别是“actiongroup”表(以下简称“权限映射表”)和“mastergroup”表(以下简称“人员映射表”),前者映射了权限表与管理组表之间的交互。
后者映射了人员表与管理组表之间的交互。
如下图:
另外,还需要一张表来控制系统运行时左侧菜单中的权限分栏,也就是“权限分栏表”,如下图:
根据上面的分析,我们进行数据库结构设计,如下图:
为了能够进行良好的分析,我们将数据库结构图拆分开来,三张实体表的作用已经很清晰,现在我们来看一下两张映射表的作用。
一 权限映射表 如下图:
首先,我们来了解一下权限映射表与管理组表以及权限表之间的字段关联。
看图中的红圈,先看gorupid字段相关联,这种关联方式在实际数据库中的表现如下图:
如图中所示,管理组表中“超级管理员”的groupid为1,那么权限映射表中groupid为1的权限也就是“超级
管理员”所拥有的权限。
使用groupid字段关联,是为了查到一个管理组能够执行的权限有哪些。
但这些权限的详细信息却是action字段关联所查询到的。
action字段相关联在数据库中的表现如下图:
通过这种关联,才查询到权限映射表之中那些权限的详细信息。
综合起来,我们就知道了一个管理组可以执行的权限有哪些,以及这些权限的详细信息是什么。
或许你会问,为什么不使用actionid字段相关联呢?因为:
•权限表中的id字段在经过多次的数据库操作之后可能会发生更改。
•权限映射表中仅仅记录着一个管理组可以执行的权限。
•一旦权限表中的id更改,那么权限映射表中的记录也就更改了。
•一个管理组可以执行的权限势必将出错,这是非常不希望的。
考虑到上面的情况,所以应该使用action字段相关联,因为:
•在权限表中,id可能发生变化,而action字段却是在任何情况下也不可能发生变化的。
•权限映射表中记录的action字段也就不会变。
•一个管理组可以执行的权限就不会出错了。
二 人员映射表 如下图:
我们来了解一下人员映射表与管理组表以及人员表之间的字段关联,如下图:
看图中的红圈部分,先看groupid字段关联,这种关联方式在数据库中的表现如下图:
如图,“超级管理员”组的groupid为1,我们再看人员映射表,admin属于超级管理员组,而administrator 属于超级管理员组,同时也属于管理员组。
使用这种关联方式,是为了查到一个管理组中的人员有谁。
和上面一样,人员的详细信息是靠id字段(人员映射表中是masterid字段)关联查询到的。
id字段(人员映射表中是masterid字段)关联表现在数据库中的形式如下图:
一个人员可能同时属于多个“管理组”,如图中,administrator就同时属于两个“管理组”。
所以,在人员映射表中关于administrator的记录就会是两条。
这种关联方式才查询到管理组中人员的详细信息有哪些。
综合起来,才可以知道一个管理组中的人员有谁,以及
这个人员的详细信息。
再结合上面谈到的权限表和权限映射表,就实现了需求中的“组”操作,如下图:
其实,管理组表中仅仅记录着组的基本信息,如名称,组id等等。
至于一个组中人员的详细信息,以及该组能够执行的权限的详细信息,都记录在人员表和权限表中。
两张映射表才真正记录着一个组有哪些人员,能够执行哪些权限。
通过两张映射表的衔接,三张实体表之间的交互才得以实现,从而完成了需求中提到的“组”操作。
我们再来看一下权限分栏表与权限表之间的交互。
这两张表之间的字段关联如下图:
两张表使用了actioncolumnid字段相关联,这种关联方式在数据库中的表现如下图:
如图所示,通过这种关联方式,我们可以非常清晰的看到权限表中的权限属于哪个分栏。
现在,数据库结构已经很清晰了,分配权限的功能以及“组”操作都已经实现。
下面我们再来分析一下需求中提到的关于权限管理系统的重用性问题。
为什么使用这种数据库设计方式搭建起来的系统可以重用呢?
•三张实体表中记录着系统中的三个决定性元素。
“权限”,“组”和“人”。
而这三种元素可以任意添加,彼此之间不受影响。
无论是那种类型的业务系统,这三个决定性元素是不会变的,也就意味着结构上不会变,而变的仅仅是数据。
•两张映射表中记录着三个元素之间的关系。
但这些关系完全是人为创建的,需要变化的时候,只是对数据库中的记录进行操作,无需改动结构。
•权限分栏表中记录着系统使用时显示的分栏。
无论是要添加分栏,修改分栏还是减少分栏,也只不过是操作记录而已。
综上所述,这样设计数据库,系统是完全可以重用的,并且经受得住“变更”考验的。
总结:
此套系统的重点在于,三张实体表牢牢地抓住了系统的核心成分,而两张映射表完美地映射出三张实体表之间的交互。
其难点在于,理解映射表的工作,它记录着关系,并且实现了“组”操作的概念。
而系统总体的设计是本着可以在不同的MIS系统中“重用”来满足不同系统的功能权限设置。