Java权限管理系统之数据库设计(一)

      一、概述

1、用户权限是任何一个应用程序的基础模块,是为应用程序提供安全访问规则的实现,用于保障系统的安全和数据安全基础。本次主要实现 一个基于角色的用户权限管理系统,后端采用Springboot与Shiro整合实现权限认证管理。

2、名词解释:

用户(User):是软件系统使用者的系统账号。每个使用者,都有自己在系统中独一无二的账号,系统通过这个账号来识别不同的使用者,同时,也是通过当前的用户来认证当前使用者的权限。

角色(Role):可以理解为一定数量的权限的集合,权限的载体,例如:系统管理员,普通用户。

权限(Permission):指对软件系统中某一个功能或者资源操作的权利。

二、数据库设计

        1、说明

             一个用户可以拥有多个权限,同时一个权限也可以赋予多个用户,那么用户和权限就是多对多的关系,需要角色来维护和链接用户和权限之间的关系。通过用户关联角色,角色关联权限,从而达到用户和权限的一个间接关联关系。而用户和角色,角色和权限也是多对多的全系,从而也需要引入用户角色和角色权限两张中间表来实现。

              (1) 每一个用户包含的属性有用户ID,用户名称,密码,用户状态等基本属性。

              (2) 每一个角色包含的属性有角色ID,角色名称,状态等基本属性。

              (3) 每一个权限包含的属性有权限ID,权限名称,URL,权限编码,父级ID,权限类型,状态等基本属性。

       2、概念模型设计

            根据说明,设计的实体联系E-R图如下:

            

        3、  关系模式设计(下划线主键)

            用户(用户ID,用户名称,密码,状态,创建时间,、、、)

            角色(角色ID,角色名称,状态,创建时间,、、、)

            权限(权限ID,权限名称,URL,权限编码,父级ID,权限类型,状态,、、、)

            用户角色 ( 用户ID,角色ID )用户ID和角色ID均设置为外键约束

            角色权限(角色ID,用户ID)用户ID和角色ID均设置为外键约束

        4、关联关系

      

5、表中数据形式

      用户表

      角色表

     权限表

      用户角色表

       角色权限表

6、实现的结果

根据登录用户的ID,查询用户的权限,从而实现根据不同用户生成不同的菜单与实现更细粒度的权限管理。

select distinct f.func_id,f.func_name,f.func_url,f.func_code,f.parent_id,f.func_type,f.status,f.sort_num,f.create_time,f.update_time
from tb_roles r,tb_functions f,tb_role_function rf where r.role_id =rf.role_id and f.func_id = rf.func_id and r.role_id in(
select r.role_id from tb_users u,tb_roles r,tb_user_role ur where u.user_id = ur.user_id and r.role_id = ur.role_id and f.func_type=1 
and u.user_id = 1);

  • 12
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
设计一个成绩管理系统数据库需要考虑到许多因素,包括学生信息、课程信息、教师信息、成绩记录等。以下是一个基本的Java成绩管理系统数据库设计的步骤和概念: 1. **数据库选择**:首先,你需要选择一个适合你的需求的数据库。常见的选择包括MySQL、Oracle、SQL Server等。 2. **创建数据库**:使用你选择的数据库管理系统(DBMS)创建一个新的数据库。 3. **创建表**:根据你的需求,创建几个表来存储不同的信息。例如,可以创建一个学生表(Student),一个课程表(Course),一个教师表(Teacher),一个成绩记录表(GradeRecord)。 以下是一个简单的表结构示例: * Student 表: + student_id (主键, 唯一标识学生) + name (学生的名字) + age (学生的年龄) * Course 表: + course_id (主键, 唯一标识课程) + course_name (课程名称) + teacher_id (关联到教师的ID) * Teacher 表: + teacher_id (主键, 唯一标识教师) + teacher_name (教师姓名) * GradeRecord 表: + grade_record_id (主键, 唯一标识成绩记录) + student_id (关联到学生的ID) + course_id (关联到课程的ID) + grade (成绩) 4. **关系设计**:确保表之间有适当的关系。例如,学生表和课程表通过课程ID关联,而教师表通过课程ID和教师ID与课程表和成绩记录表相关联。这样可以方便的添加、修改或删除相关数据。 5. **创建数据库连接**:使用Java的JDBC API(Java Database Connectivity)创建一个与数据库的连接。这样你就可以使用Java代码来查询和更新数据库中的数据。 6. **编写查询和更新代码**:使用SQL语句(如SELECT, INSERT, UPDATE, DELETE)编写Java代码来查询和更新数据库中的数据。例如,你可以编写代码来获取特定学生的所有成绩,或者更新某个学生的成绩。 7. **安全性考虑**:考虑数据库的安全性,包括用户权限管理、数据备份和恢复等。 8. **测试和优化**:在完成设计后,进行充分的测试以确保系统正常工作,并可能进行性能优化以提高系统效率。 9. **文档化**:为了方便维护和扩展,最好为你的系统创建一些文档,包括数据库的结构、数据类型、数据验证规则等。 这只是设计成绩管理系统数据库的一个基本步骤,实际的设计可能因具体需求而有所不同。在开始设计之前,建议仔细考虑你的系统需求,并参考一些现有的成绩管理系统来获取灵感。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值