基与角色的权限管理系统数据库设计
|
表名:用户表(User)
主键:Id
备注:这张表唯一要求就是检索速度?如果该张表每天有一千万次的访问量,该如何设计优化?
|
FiledName
|
FiledType
|
MainFiledDescription
|
Id
Name
OtherFiled
|
Int自动增长列,主键约束
Varchar(20), not null,唯一索引
其它自段可根据需求添加
|
用户名
|
表名:用户角色表(UserRole)
主键:复合主键(Uid,Rid)
备注:将用户和角色的关系连接起来,如何处理用户的默认角色,避免该表无限增加?
既然是默认角色,就直接为用户指定一个Rid角色外键。当用户登陆的时候直接通过他的Rid获取权限即可
|
Uid
Rid
OtherFiled
|
Int,not null,外键User(Id)
Int,not null,外键Role(Id)
其它自段可根据需求添加
|
|
表名:角色表(Role)
主键:Id
备注:这张表比较简单,一般数据都比较少。
|
Id
Name
OtherFiled
|
Int自动增长列,主键约束
Varchar(20) not null,唯一索引
其它自段可根据需求添加
|
|
表名:角色权限表(RolePrivilege)
主键:复合主键(Rid,Pid)
备注:这张表主要记录角色的权限信息,有人说这张表应该映射权限表的Name字段,我还是没想明白,如果我将权限表中的Name进行修改,那该表中的映射势必也要全部修改,而用Pid的话就不会产生该问题。还有就是修改权限的意图是什么呢?让已拥有该权限的用户失去该权限?或者说是暂失去?那这样的话外键约束如何实现,对了可以将外键设为可以为Null,但这种空的映射信息又有什么意义呢?还不如直接删除,这样用户也失去了该权限,那么就不用修改权限表了,直接将外键删除就行了。
|
Rid
Pid
OtherFiled
|
Int,not null,外键Role(Id)
Varchar(20),外键 Privilege(Name)
其它自段可根据需求添加
|
|
表名:权限表(Privilege)
主键:Id
备注:该表一般也较小,但访问量如果每天超过上千万次如何设计?如果有ParentId字段那么角色权限映射表该如何避免重复权限映射?
在分配的时候进行判断,看用户是否已有要分配的权限,或者要分配权限的父权限。
|
Id
Name
ParenteId
Operate
OtherFiled
|
Int自动增长列,主键约束
Varchar(20) ,not null,唯一索引
Int ,外键Privilege(Id)
Varchar(50)
其它自段可根据需求添加
|
ParentId:父权限标识:父权限拥有子权,子权不拥有父权限。如:拥有访问demo.jsp的权限但不拥有操作demo.jsp中按钮的权限等。
|
表名:权限分类(PrivilegeType)
主键:Id
备注:该表一般也较小,访问量一般较低,只要用来对权限进行分类。
|
Id
Name
OtherFiled
|
Int自动增长列,主键约束
Varchar(20) ,not null,唯一索引
其它自段可根据需求添加
|
|
表名:用户权限临时表(TempPrivilege)
主键:复合主键(Uid,Pid)
备注:该表主要是为了处理临时状况而产生的,比如临时给某个员工什么权限?过后可直接删除。
|
Uid
Pid
OtherFiled
|
Int,not null,外键User(Id)
Int,not null,外键Privilege(Id)
其它自段可根据需求添加
|
|
最近思考了一下关与基于角色的权限管理系统,这是我各人设计的数据库方案,其中有什么问题希望大家一起讨论一下,有什么好的建议也希望大家能够提出来,我希望将其完善成一个可重用的权限系统。
文章来源:网上
分享到:
相关推荐
2. **数据库设计与管理**:系统中包含的数据库部分是教师信息存储的关键。可能是使用了如SQL Server、MySQL或SQLite等关系型数据库管理系统。数据库设计涉及实体(如教师、课程等)、属性(如姓名、年龄、职称等)...
招生管理系统概要设计 招生管理系统详细设计说明书 一、需求分析 1.1系统总功能需求 首先需要对招生管理系统进行详细的了解和分析,一个功能完全满足基本需要的系统需要包括以下几个模块: 1.1.1考生数据提取...
【数据库管理系统(DBMS)】 1. DBMS定义:一套软件,用于创建、维护和管理数据库,提供数据的存储、查询、更新和控制等功能。 2. SQL(Structured Query Language):数据库查询语言,用于与数据库交互,包括数据...
3. **角色与权限模型**:在用户权限管理系统中,用户通常被分配到不同的角色,每个角色拥有预定义的一组权限。这种模型简化了权限管理,因为只需要维护角色与权限的关系,而不是单独管理每个用户的权限。在Java中,...
在开发和维护ASP.NET通用权限管理系统的过程中,开发者需要掌握ASP.NET的核心概念、数据库设计与操作、身份验证与授权机制,以及Web安全等方面的知识。此外,良好的软件工程实践,如代码规范、单元测试、持续集成等...
基于 WEB 的学生作业管理系统设计与实现 本资源主要介绍了基于 WEB 的学生作业管理系统的设计与实现,系统主要功能包括管理员管理、教师管理、学生管理、作业管理、公告信息发布等。系统的设计与实现使用 C# 语言和...
在客户管理系统中,数据库设计至关重要。通常包括客户基本信息表、交易记录表、客户服务记录等多个相关表。每个表都有其特定的字段,如客户ID、姓名、联系方式、购买历史等,通过建立合理的数据库结构,可以有效...
4. **数据库设计**:这部分将涵盖数据库设计的基本步骤,包括需求分析、概念设计(如ER图)、逻辑设计(转换为关系模式)和物理设计。规范化理论,如第一范式(1NF)、第二范式(2NF)、第三范式(3NF)和BCNF(巴斯...
《基于JSP的邳州四中同学录管理...综上所述,这篇毕业论文详细阐述了基于JSP的同学录管理系统设计过程,涵盖了从技术选型、系统架构、数据库设计到实际开发的多个方面,体现了作者对Web开发技术的深入理解和实践能力。
商品供应管理系统 javaEE_SSH_SQLServer 源码+数据库sql 视频 javaEE采购管理系统 本系统是一个独立的系统,用来解决企业采购信息的管理问题。采用JSP技术构建了一个 有效而且实用的企业采购信息管理平台,目的是...
"磬基电力物资管理系统"(ThinkGMS)是一款专为电力行业设计的通用物资管理软件,由磬基软件公司开发。该系统是基于对电力系统物资管理业务的深入理解和比较其他通用物资软件后推出的,旨在满足电力系统特有的需求,...
5. **数据库管理系统(DBMS)**:DBMS是一组软件,用于创建、管理和控制数据库,如Oracle、MySQL、SQL Server等。它提供了对数据的安全性、并发控制和恢复机制。 6. **数据库设计**:包括需求分析、概念设计(E-R图...
SSD7数据库系统是数据库管理领域的一个重要课程,它涵盖了关系数据库设计、SQL查询、事务处理、并发控制、恢复机制等多个关键概念。这些题目和答案的集合为学习者提供了宝贵的资源,帮助他们深入理解SSD7数据库系统...
4. **用户认证与授权**:为了保护信息安全,系统需要实现用户登录和权限管理功能。这涉及到密码加密存储、会话管理以及角色权限分配等。 5. **用户界面**:良好的用户体验是关键。JSP可以结合CSS和JavaScript来实现...
- DBA的主要职责包括数据库设计、安装配置、性能优化、安全性管理、备份与恢复、故障排查等。 2. **Oracle数据库安装与配置** - 安装Oracle数据库涉及选择适当的安装类型(如企业版或标准版),配置硬件和软件...
在这个系统中,数据库设计扮演着核心角色,因为它需要存储和管理大量的数据,包括员工信息、客户信息、仓库信息、运单信息、收件人信息、配送信息、转运信息以及客户评价等。 1. **数据库规划** - **任务陈述**:...
【正文】 《餐饮消费管理系统(C#)》是一款基于C#编程语言开发的软件应用,主要目的是为了管理和优化餐饮行业的日常...9. **安全性与权限管理**:系统应考虑数据安全,防止未经授权的访问或修改。这可能涉及到角色基
ASP.NET教务管理平台是一个基于.NET框架的教育信息化解决方案,主要涵盖了权限管理和公共模块的设计与开发。这个项目不仅提供了源代码,还包含了一份详细的论文,是计算机专业学生进行毕业设计和毕设的理想参考资料...
基础平台管理系统是IT行业中至关重要的组成部分,它涵盖了企业或组织日常运营的各种功能需求,包括但不限于数据管理、权限控制、流程自动化、系统集成等。在构建这样的系统时,数据库设计是核心,因为它决定了数据的...
【VC++合同管理系统】是一个基于Microsoft Visual C++开发的应用程序,专为管理各类合同而设计。在Windows XP操作系统环境下运行,此系统旨在提高工作效率,确保合同数据的安全存储和便捷访问。在使用之前,用户需要...