数据库权限设计与实现

合集下载

数据权限总体设计方案

数据权限总体设计方案

登录验证
用户登录时,验证用户身份并获取相应的数据 权限。
请求验证
在每个请求处理过程中,验证用户身份和数据 权限是否符合要求。
角色验证
根据用户角色分配数据权限,实现不同角色的数据权限控制。
数据权限接口设计
1 2
接口定义
定义数据权限接口的输入参数、输出结果和调用 方式。
接口实现
编写接口代码实现数据权限的查询、更新、删除 等操作。
数据权限总体设 计方案
汇报人: 日期:
目录
• 引言 • 数据权限需求分析 • 数据权限设计方案 • 数据权限实现技术 • 数据权限管理流程 • 数据权限安全策略 • 数据权限总体架构
01
引言
背景介绍
随着信息技术的快速发展,数据已经成为企业的重要资产,数据的权限管理也变得 越来越重要。
在当前数字化时代,数据泄露和侵犯隐私的事件频发,给企业和个人带来很大的风 险和损失。
范围和限制
范围
本设计方案适用于企业内部的敏感数据、非敏感数据以及外部用户的数据权限管 理。
限制
由于不同行业、不同企业的数据特点不同,本设计方案仅供参考,实际应用时需 要根据具体情况进行调整和优化。
02
数据权限需求分析
业务需求分析
客户需求
01
客户需要严格控制数据访问和使用的权限,以保护业务数据不
定期进行安全漏洞扫描
定期对系统进行安全漏洞扫描,确保系统安全。
做好数据备份和恢复
做好数据备份和恢复工作,确保数据安全和完整性。
THANKS
感谢观看
3
接口测试
对数据权限接口进行测试,确保接口的正确性和 稳定性。
05
数据权限管理流程

权限设计

权限设计

权限设计权限设计通常包括数据库设计、应用程序接口(API)设计、程序实现三个部分。

一、数据库设计权限表及相关内容大体可以用六个表来描述,如下:1角色表:包括四个字段:角色ID,角色名,对该角色的描述,创建时间;2用户表:包括八个字段:用户ID,账户名称,姓名,联系电话,邮箱,密码,备注,创建时间等;3用户-角色表:包括三个字段:ID(编号,自增,方便维护,查询),用户ID,角色ID。

该表记录用户与角色之间的对应关系,一个用户可以隶属于多个角色,一个角色也可以拥有多个用户;4角色-权限表:包括三个字段:ID(编号,自增,方便维护,查询),角色ID,权限ID。

该表记录角色与权限之间的对应关系,一个权限可以隶属于多个角色,一个角色也可以拥有多个权限。

特别说明:若用户所属于两个角色,取出对应角色中的所有权限,则用户的权限为分别继承两个角色的权限的并集,过滤掉相同的权限取其中一个。

5权限表:权限表包括六个字段:权限ID,资源路径,权限名,用户展示,创建时间,描述。

权限类型包括三种:菜单、页面元素、资源路径。

a菜单:包括一级菜单、二级菜单(子菜单,可扩展菜单)菜单表:包括三个字段菜单ID,菜单名称,父菜单IDb页面元素:设置权限到页面的级别,所有的人都可以访问一个页面,一部分可以进行添加操作,一部分人可以进行删除操作,一部分可以进行审核工作等。

即设置同一个页面的不同操作权限。

c资源路径:如上传文件,文件的修改删除操作,资源路径的访问等。

用户展示为前端展示给用户的文字或图标(包括没有对应路径的图标),可选择展示或隐藏,表设计如下:1角色表(mp_role)字段名称字段类型备注角色ID role_id varchar(50) pk, not null角色名roleName varchar(255) not null描述description varchar(255)创建时间createTime varchar(255)2用户表(mp_user)字段名称字段类型备注用户ID user_id varchar(50) pk, not null账户名称userName varchar(255) not null姓名realName varchar(255) not null联系电话phone varchar(255)密码password varchar(25)邮箱email varchar(255)描述description varchar(255)创建时间createTime varchar(255)3用户-角色表(mp_user_role)字段名称字段类型备注ID id varchar(50) pk, not null 角色ID role_id varchar(50) fk, not null 用户ID user_id varchar(50) fk, not null 4角色-权限表(mp_role_permission)字段名称字段类型备注ID id varchar(50) pk, not null 角色ID role_id varchar(50) fk, not null 权限ID permission_id varchar(50) fk, not null 5权限表(mp_permission)字段名称字段类型备注权限ID id varchar(50) pk, not null 资源路径resourcePath varchar(255)权限名称permissionName varchar(255)用户展示display varchar(255)描述description varchar(255)创建时间createTime varchar(255)6二、应用程序接口(API)设计界面设计1新建角色,实现:用户可以继承所属角色的部分权限,如某用户所属于A和B两个角色,但分别继承它们的部分权限,设计为取两个角色权限的交集。

如何设计和实现一个简单的数据库系统

如何设计和实现一个简单的数据库系统

如何设计和实现一个简单的数据库系统设计和实现一个简单的数据库系统是一个复杂而又具有挑战性的任务。

这个数据库系统需要能够存储和管理大量的数据,并且能够支持对数据的快速和高效的访问。

在这篇文章中,我将详细介绍如何设计和实现一个简单的数据库系统,包括数据库的结构、数据存储方式、数据访问方式等方面。

1.数据库系统的结构设计首先,我们需要设计数据库系统的结构。

一个简单的数据库系统通常包括一个或多个数据表,每个数据表包含若干个字段,每个字段包含不同类型的数据。

在设计数据库系统的结构时,我们需要考虑到数据的组织方式、数据之间的关系以及数据访问的需求。

在设计数据库系统的结构时,我们可以采用实体-关系模型(Entity-Relationship Model,简称ER模型)进行建模。

ER模型是一种常用的数据库建模方式,用于描述数据之间的实体实例和实体之间的关系。

通过ER模型,我们可以清晰地描述数据之间的关系,从而更好地组织和管理数据。

在设计数据库系统的结构时,我们还需要考虑到数据的一致性和完整性。

数据一致性是指数据在不同场景下的统一性,数据完整性是指数据的有效性和正确性。

在设计数据库系统的结构时,我们需要考虑到如何确保数据的一致性和完整性,以及如何预防和处理数据的异常情况。

2.数据库系统的数据存储方式设计数据库系统的数据存储方式是数据库系统设计的一个重要方面。

不同的数据存储方式会影响数据库系统的性能和可扩展性。

常见的数据存储方式包括关系型数据库、非关系型数据库、内存数据库等。

关系型数据库是一种经典的数据库存储方式,它将数据存储在表格中,并使用结构化查询语言(SQL)进行数据查询和操作。

关系型数据库通常具有较好的数据一致性和完整性,并且支持复杂的数据查询和事务处理。

然而,关系型数据库在处理大规模数据时通常性能较低,并且难以进行水平扩展。

非关系型数据库是一种近年来兴起的数据库存储方式,它以文档、键值对等非结构化的数据形式进行存储,并且通常采用分布式存储方式进行数据存储和管理。

学生管理系统中的权限管理模块设计与实现

学生管理系统中的权限管理模块设计与实现

学生管理系统中的权限管理模块设计与实现权限管理是学生管理系统中非常重要的一项功能,它用于控制系统中不同角色的用户对系统各个模块的访问和操作权限。

权限管理模块的设计与实现需要考虑到系统的安全性、灵活性和可维护性。

本文将详细介绍学生管理系统中权限管理模块的设计与实现。

一、权限管理的基本概念权限是指用户在系统中能够执行的操作。

在学生管理系统中,常见的权限有学生信息管理、课程管理、成绩管理、教师信息管理等。

权限管理可以根据不同角色的用户划分,如管理员、教师、学生等。

二、权限管理模块的设计1. 角色管理:角色管理是权限管理的基础,它定义了系统中的不同角色及其对应的权限。

在系统中,可以设置管理员、教师、学生等角色,每个角色可以拥有不同的权限。

2. 用户管理:用户管理用于对系统中的用户进行管理,包括用户的添加、删除和修改等操作。

同时,还需考虑用户与角色的关联,即将用户与相应的角色进行绑定。

3. 权限分配:权限分配是权限管理的核心功能之一。

管理员在系统中可以根据不同角色设置相应的权限,如允许教师角色进行学生信息查询、允许管理员角色进行成绩管理等。

4. 权限校验:在系统中,对用户进行权限校验是必不可少的。

每次用户访问系统的某个模块时,系统需要对用户的权限进行验证,确保用户拥有访问该模块的权限。

如果用户无权访问该模块,则系统应给出相应的提示信息。

5. 日志记录:为了方便系统管理员对权限管理进行监控和审计,权限管理模块还需记录用户的操作日志。

日志记录包括用户的登录、退出、权限分配等操作,以便后续的审计和追溯。

6. 界面设计:权限管理模块的界面设计应该简洁明了,对用户友好。

界面可以提供用户操作的便捷方式,如树形结构展示角色与权限的关系,提供搜索功能等。

三、权限管理模块的实现权限管理模块可以使用各种技术进行实现,以下是一些常用的实现方式:1. 数据库实现:可以使用数据库来存储角色、用户和权限的关系。

通过建立角色表、用户表和权限表及其关联表,来实现权限的管理和分配。

数据库权限设计与实现

数据库权限设计与实现

数据库权限设计与实现一、数据库权限设计的原则1.最小权限原则:每个用户或用户组应该只拥有执行其职责所需的最小权限,以减少风险和滥用权限的可能性。

2.分离权限原则:不同的用户或用户组应该被分配不同的权限,避免将所有权限赋予单一用户,从而降低利用权限进行非法活动的可能性。

3.水平权限原则:水平权限指的是不同用户或用户组之间的权限差异。

在设计数据库权限时应考虑用户或用户组的角色和职责,将权限划分为高、中、低三个级别,以确保权限的控制粒度合理。

4.垂直权限原则:垂直权限指的是同一用户或用户组在不同数据库或数据表之间的权限差异。

根据业务需求,将权限划分为对整个数据库、单个数据表以及一些特定字段的权限,并为每个用户或用户组分配适当的权限。

5.审计权限原则:数据库权限设计的一个重要目标是能够记录和追踪用户对数据库的所有操作,包括读取、插入、更新、删除等操作。

因此,在设计数据库权限时应考虑是否需要开启审计功能,以及如何记录用户操作日志。

二、数据库权限实现的步骤1.设计用户和用户组:首先,需要确定需要访问数据库的用户和用户组,根据其角色和职责,将用户分配到相应的用户组中。

2.设计权限角色:根据用户和用户组的角色和职责,设计不同的权限角色,并为每个角色分配相应的权限。

例如,管理员角色拥有对整个数据库的读写权限,普通用户角色只能读取数据而不能修改等。

3.分配用户权限:根据用户所属的用户组和角色,为每个用户分配权限。

可以使用授权语句(GRANT)或者图形界面工具来设置用户或用户组的权限。

4.启用审计功能:根据需要,启用数据库系统的审计功能,并设置相应的参数。

审计功能可以记录用户的登录、退出、数据修改等操作,并生成审计日志。

5.数据库权限管理:定期检查和维护数据库的权限,包括新增、修改和删除用户、用户组以及权限角色等。

同时,需要监控和追踪用户的操作日志,及时发现和处理异常情况。

三、数据库权限实现的方法1.基于角色的权限管理:将权限与角色绑定,通过授权用户角色来管理权限。

权限管理系统设计和实现_毕业设计精品

权限管理系统设计和实现_毕业设计精品

权限管理系统设计和实现_毕业设计精品摘要:权限管理系统是一种用于对用户的访问权限进行管理和控制的软件系统。

本文介绍了权限管理系统的设计和实现方法,包括需求分析、系统架构设计、数据库设计、用户界面设计以及系统功能实现等方面。

通过对权限管理系统的设计和实现,可以提高系统的安全性和管理效率,为企业提供更好的用户权限管理服务。

关键词:权限管理系统;需求分析;系统架构设计;数据库设计;用户界面设计;系统功能实现一、引言随着企业规模的扩大和信息化水平的提高,对于用户权限的管理和控制变得越来越重要。

传统的权限管理方式往往效率低下且容易出错,因此需要开发一种高效、可靠的权限管理系统。

权限管理系统可以帮助企业对用户的访问权限进行细粒度的控制,提高系统的安全性和管理效率。

二、需求分析1.用户注册和登录:用户可以通过注册账户并登录系统,以便进行权限管理操作。

2.权限分类和分级:系统可以对用户的权限进行分类和分级管理,便于用户权限的控制和管理。

3.用户权限的分配和收回:管理员可以根据业务需求,对用户进行权限的分配和收回。

4.用户权限的控制和验证:系统可以根据用户的权限,对其进行访问控制和验证。

6.权限的日志记录和审计:系统可以记录用户的权限操作日志,便于后期的审计和追溯。

7.统计和报表功能:系统可以根据用户权限的使用情况,对权限进行统计和生成报表。

三、系统架构设计1.客户端:提供用户界面,用户通过客户端与系统进行交互。

2.业务逻辑层:处理用户的请求,调用数据库层进行数据操作。

3.数据库层:存储用户信息、权限信息以及系统日志等数据。

4.权限控制层:根据用户的权限,控制用户对系统资源的访问权限。

四、数据库设计1.用户表:包含用户的基本信息,如用户名、密码、角色等。

2.权限表:包含系统的所有权限信息,如权限名称、权限描述等。

3.用户权限关联表:建立用户与权限之间的关联关系。

4.日志表:记录用户的权限操作日志,包括操作时间、操作类型等。

汽车销售管理系统数据库设计与实现

汽车销售管理系统数据库设计与实现

企业信息化汽车销售管理系统数据库设计与实现班级:姓名:学号:目录1.需求分析 ......................................................1.1功能分析 ....................................................1.2数据字典 ....................................................1.3数据流图 ....................................................2.结构设计 ......................................................2.1概念结构设计 ...............................................2.2逻辑结构设计 ...............................................1.需求分析1.1功能分析①基础信息管理:1、厂商信息的管理:查询、增、删、改2、车型信息的管理:查询、增、删、改3、客户信息的管理:查询、增、删、改②进货管理:4、车辆采购信息的管理:查询、增、删、改5、车辆入库信息的管理:查询、增、删、改③销售管理:6、车辆销售:客户可以根据自己的需求,选择不同型号的车型7、收益统计:厂商按照所出售的车辆数量及价格进行统计④仓库管理:8、库存车辆:仓库管理员对已有车辆进行详细管理9、仓库明细:库存各种类型车辆的详细信息10、进销存统计:仓库管理员对车辆的出售与进货进行统计⑤系统维护:11、数据安全管理:系统管理员对该数据库出现的问题进行管理12、操作员管理:操作员根据车辆销售情况及时更改数据库13、权限设置:规定该数据库访问权限1.2数据字典数据结构编号 数据结构名 属 性1 客户 客户姓名、性别、年龄、客户号、工作单位、联系电话2 车辆 车型号、车辆名称、厂商名、价格、车辆状态3 厂商 厂商名、厂商号、地址、生产车辆总数、厂商状态、备注4 订单 订单号、客户号、订货日期、交货日期、地址、是否存有、是否已订5 仓库 仓库号、地址、进货车辆数、出货车辆数、库存车辆总数、6 车辆销售 车型号、厂商号、出售车辆数、车辆总成本、获取总金额、利润7 订货 客户、厂商、车辆、买车时间、保修期限1.3数据流图1.顶层进程――订货系统客户支付清单厂商主管部门厂商生产部门提供应收账款送进订单处理订单开发票应收金额订单纪录本应收金额产品描述批准/不批准订单数据客户账目状况已批准订单订单细节部门批准与否CHECK订单数据包装通知单数据结算财务费用变动提供发货细节发票2.第二层1)进程1――查询订单数据流图客户CHECK价格CHECK价格订单批准不同车辆型号应收金额公司主管部门车辆价格车辆订单数量已核对价格订单客户订单细节批准/未批已订/未订CHECK订单数据价格状况已核对的订单已批准的订单2)进程2――处理订单数据流图订单登记车型号及属性描述准备发货待完成的订货清单准备待完成订单报表生产厂商已订的车辆订单订单记录订单细节内容已登记订单车辆订单生产通知单发货单待完成订单待完成订单报表准备发货细节3)进程3――开订单数据流图订单登记车型号及属性描述准备发货待完成的订货清单准备待完成订单报表生产厂商已订的车辆订单订单记录订单细节内容已登记订单车辆订单生产通知单发货单待完成订单待完成订单报表准备发货细节4)进程4――结帐系统收银员客户查询订单厂商收银员客户付款车辆已订/未订状态订单结帐结帐订单获取订单号车辆价格客户付款付款2.结构设计2.1概念结构设计车辆零件供应量车辆库存仓库供应厂商接受订单订单细节组成完整订单订货客户支付金额订单规模折扣与否ndmmn1nn1n 11n 11仓库号库存车辆总数客户厂商车辆买车时间交货日期订单号客户名地址订货日期厂商号厂商名地址生产车辆总数车型号车辆名价格厂商状态客户订购客户姓名客户号性别年龄1q2.2逻辑结构设计基本表1、客户基本表属性中文名称 属性名 类型 长度 说明客户号 C_NO CHAR 20 主码:公司统一编号,具有唯一性客户姓名 User_NAME CHAR 20 客户名称服务员性别 User_SEX CHAR 4 客户性别服务员年龄 User_AGE INT 18~100联系电话 User_tel INT工作单位 unit CHAR 20 客户所在工作场所2、车辆基本表属性中文名称 属性名 类型 长度 说明车型号 CAR_NO CHAR 10 主码:厂商统一编号,具有唯一性 车辆名称 CAR_NAME CHAR 20 车辆名称厂商名 INDUSTTY_NAME CHAR 文本类型 有唯一性价格 PRICE FLOAT车辆状态 STATUS BOOLEAN 枚举类型 被订、未订3、厂商基本表属性中文名称 属性名 类型 长度 说明厂商号 INDUSTTY_NO CHAR 10 主码:厂商统一编号,具有唯一性 厂商名 INDUSTTY_NAME CHAR 文本类型 有唯一性地址 address CHAR 10厂商状态 STATUS BOOLEAN 忙:1;空闲:0生产车辆总数 CAR_amount INT4、仓库表属性中文名称 属性名 类型 长度 说明仓库号 BOX_NO CHAR 10 主码:厂商统一编号,具有唯一性 地址 address CHAR 10进货车辆数 IN_AMOUNT INT 仓库开始进车辆的数量出货车辆数 OU_AMOUNT INT 仓库已卖出的车辆数量库存车辆总数 REMAIN_AMOUNT INT 仓库现存有的车辆数量5、车辆销售基本表属性中文名称 属性名 类型 长度 说明车型号 CAR_NO CHAR 10 外码:参照车辆表的车型号 厂商号 INDUSTTY_NO CHAR 10 外码:依照厂商表的厂商号 出售车辆数 Sale_amount INT车辆总成本 CAR_MONEY FLOAT 车辆进货的成本获取总金额 MONEY FLOAT利润 benift FLOAT 盈:1 亏:06、订单表属性中文名称 属性名 类型 长度 说明订单号 order_NO INT 10 订单所属的类别客户号 C_NO CHAR 20 外码:参照客户表的客户号 订货日期 order_data data 订货时间交货日期 Hand_data data 交货期限厂商号 INDUSTTY_NO CHAR 10 外码:依据厂商表中的厂商号 是否存有 MADE BOOLEAN 默认:false(没有)是否已订 orders BOOLEAN 默认:false (未订)视图1、空闲厂商(厂商号,厂商名)2、进销存统计(仓库号,进货车辆数,出货车辆数)3、所有车辆销售信息(车型号,厂商号,车辆状态)4、付款(车型号,厂商号,车辆名,价格)5、订单(订单号,客户号,订货日期,交货日期,地址,是否存有,是否已订)6、收益统计信息(车型号,出售车辆数,车辆总成本,获取总金额,利润)。

基于RBAC模型的权限管理系统的设计和实现

基于RBAC模型的权限管理系统的设计和实现

基于RBAC模型的权限管理系统的设计和实现RBAC(Role-Based Access Control)模型是一种常见的权限管理模型,它根据用户的角色来控制其访问系统资源的权限。

下面将详细介绍基于RBAC模型的权限管理系统的设计和实现。

权限管理系统是一种用于控制用户对系统资源进行访问的系统。

它通过定义角色、权限和用户的关系,实现了对用户的访问进行控制和管理。

基于RBAC模型的权限管理系统可以提供更加灵活和安全的权限控制机制。

首先,需要设计和构建角色,角色是对用户进行权限管理的一种方式。

可以将用户划分为不同的角色,每个角色具有一组特定的权限。

例如,一个网站的角色可以包括管理员、用户、访客等。

然后,定义角色与权限之间的关系。

一个角色可以具有多个权限,一个权限可以被多个角色具有,这种关系通常是多对多的。

可以使用关联表来表示角色和权限之间的对应关系,关联表中存储了角色ID和权限ID的对应关系。

接下来,需要创建用户,并将用户与角色进行关联。

用户是系统中的具体实体,每个用户可以拥有一个或多个角色。

通过将用户与角色关联,可以根据用户的角色来判断其具有的权限。

最后,实现权限的验证和控制。

在用户访问系统资源时,系统需要验证该用户是否具有访问该资源的权限。

可以通过在系统中添加访问控制的逻辑来实现权限的验证和控制。

例如,在网站中,可以通过添加访问控制列表(ACL)来限制用户访问一些页面或功能。

1.灵活性:RBAC模型允许根据不同的需求进行灵活的权限控制和管理。

2.可扩展性:可以根据系统的需求轻松地添加新的角色和权限。

3.安全性:通过对用户的访问进行控制和管理,可以提高系统的安全性,防止未授权的用户访问系统资源。

在实现权限管理系统时,需要考虑以下几个方面:1.用户界面:需要设计一个用户友好的界面,使用户能够轻松地管理和配置角色和权限。

2.数据库设计:需要设计合适的数据结构来存储角色、权限和用户之间的关系。

3.访问控制逻辑:需要实现权限的验证和控制的逻辑,确保只有具有相应权限的用户才能访问系统资源。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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系统中“重用”来满足不同系统的功能权限设臵。

附录:权限管理系统数据表的字段设计下面我们来看看权限管理系统的数据库表设计,共分为六张表,如下图:action表:action表中记录着系统中所有的动作,以及动作相关描述。

actioncolumn表:actioncolumn表中记录着动作的分栏,系统运行时,左侧菜单栏提供了几块不同的功能,每一块就是一个分栏,每添加一个分栏,该表中的记录就会增加一条,相对应的,左侧菜单栏中也会新增机一个栏。

actiongroup表:actiongroup表记录着动作所在的组。

groupmanager表:groupmanager表记录着管理组的相关信息,每添加一个管理组,这里的记录就会增加一条。

mastergroup表:mastergroup表记录着管理员所在的管理组,由于一名管理员可能同同时属于多个组,所以该表中关于某一名管理员的记录可能有多条。

master表:master表记录着所有管理员的信息,每添加一个管理员,该表就会增加一条记录。

实现业务系统中的用户权限管理--实现篇在设计篇中,我们已经为大家阐述了有关权限管理系统的数据库设计,在本篇中,我们将重点放在其实现代码部分。

为了让你能够更直接更有效的看到全部动作的代码,我们使用“动作分解列表”的方式来陈述每个动作以及相关资源。

实现权限管理功能的动作系统动作详解模组:1.setup(数据库初始化、权限设臵模组)当布署好一个新的系统后,我们可以通过执行一个动作setup来安装数据库和一些初始值,通过执行这个动作系统可以正常运行。

因为执行setup这个动作时会调用到一个名称为setup的模组,这个模组的作用是初始化系统所用到的数据库,并且在系统中设臵动作的权限,否则数据库和有权限的动作就没办法执行。

下面我们来看一下setup模组的代码,点击这里查看代码。

这里我们把代码拆分开看一下,由于setup模组里有好多类似的代码,所以这里我们只找出不同功能的代码做一下介绍:第一段:数据库安装在模组中首先调用了一个datebase_SQL_setup这个数据库操作集,这个数据库操作集用来为系统中的数据库表(根据情况删除或新建)做初始化。

第二段:添加权限信息代码中调用了action_I_newone这个数据库操作集,在这个操作集中加入权限的名称和它的其它信息。

第三段:添加一个管理员这部分代码中调用了master_I_newone数据库操作集在数据库中添加了一个管理员的信息,这个信息是可以不写在这里的,可以直接在数据库中添加,但是为了减少不必要的麻烦所以直接在这里添入了一个默认的管理员。

第四段:添加管理员组通过调用groupmanager_I_newmaster这个数据库操作集新建了一个管理员组,并加入了详细的管理员组信息,可以把新用户加入到此管理员组。

第五段:添加新的工具分栏通过调用actioncolumn_I_newone数据库操作集在工具栏里加入一个工具栏分栏选项。

第六段:指定管理组通过调用mastergroup_I_newone数据库操作集把admin这个用户加入到第一个管理组里,使该用户成为第一个管理组的成员。

最后一段:指定管理组拥有的权限这段代码首先调用了action_S_all数据库操作集并使用Loop语句列出所有的动作,然后调用actiongroup_I_newone这个数据库操作集,把所有的动作都加入到第一个管理组里,使第一个管理组拥有所有权限。

相关文档
最新文档