目录

目标... 2

重点... 2

简述... 2

需求... 2

思路... 2

表设计... 3

详解... 3

用户表与角色表... 4

权限表与角色表... 5

所有表... 7

练习... 7

目标

完成电信级项目权限部分数据表设计。

重点

理解权限部分功能、原理、思路,并掌握数据表设计。

简述

现在几乎所有的管理后台都用到的权限管理,这有利于对系统的管理,让经过授权的用户可以正常合法的使用已授权功能,而对那些未经授权的“非法用户”将会将他们彻底的“拒之门外”。

需求

1、  不同角色的人员,对于系统操作的权限应该是不同的。

2、  不同人员所属的角色也有可能不同。

3、  不同的角色所拥有的权限也有所不同。

4、  权限是可配的,易扩展的。

思路

1、  一个人员拥有一种角色。

2、  一个角色拥有一个或若干个权限。

3、  一个角色可以被多个人员使用。

4、  一个权限可以被多个角色使用。

表设计

详解

我们来分析一下数据库结构:

首先,item表(以下简称为“权限表”),role表(以下简称为“角色表”),以及user表(以下简称为“用户表”),是三张实体表,它们依次记录着“权限”的信息,“角色”的信息和“用户”的信息。

这三个表之间的关系是多对多的和一对多的,一个权限可能同时属于多个角色,一个角色中也可能同时包含多个权限。同样的道理,一个用户属于某个角色,而一个角色中可能同时包含多个用户。

由于权限和角色是多对多的关系,为了便于维护表之间的关系,所他们之间用一个中间表进行关联。

接下来我们看看他们之间的逻辑视图是怎么样的:

到这里有的好朋友会问:“那个父权限id是干什么用的呢?”我们知道有些系统中是有多级菜单的,那么这个父权限id就是为实现多级菜单儿预留的,这就是便于扩展的需要。

下面我们逐一分析下表之间的关系:

用户表与角色表

用户表和角色表通过一个角色id进行关联,用户到角色是多对一的关系,即一个角色可以被多个用户所拥有,一个用户只拥有一个角色。

如图所示角色表里的“管理员”的role_id 为1,那么用户表中的admin用户所用有的角色id(role_id)为1,所以admin就是管理员。那么管理员都有什么权限呢?我们接着往下看。

权限表与角色表

由于权限和角色是多对多的关系,为了便于维护表之间的关系,所他们之间用一个中间表进行关联。

从图中的中间表我们可以看出角色id(role_id)为1的角色所拥有的权限id(item_id)有:3、5、6、7、8、9、10、11、12、13、17,即权限表所对应的:系统管理、角色管理等。

所以角色id为1的管理员角色所拥有的权限是:系统管理、角色管理等。即用户表中的admin用户所拥有的权限为:系统管理、角色管理等。

从中我们可以看出用户权限是通过角色来获取的,角色的权限又是通过角色权限中间表关联得到的。其难点在于,理解表之间的映射关系,它记录着关系,并且实现了“组”操作的概念。

下面我们来看看权限管理系统的数据库表设计,共分为四张表,如下图:

所有表

User表:

记录着所有用户的信息

Item表:

记录着所有的权限信息,也就是我们俗称的菜单信息

Role表:

记录着所有角色的信息,也成为用户组表

Permission表:

记录着角色和权限的关联关系,从而能够查出某个角色对应的权限,进而可以得到用户的权限信息。

以上就是这次的主要内容了,理解了各表之间的关联关系就可以轻而易举的理解了权限管理的核心内容。

练习

全面理解权限部分,并自己完成表设计。

转载于:https://www.cnblogs.com/myzhijie/p/4737074.html

老沙电信级项目教程-权限部分(1)相关推荐

  1. Linux服务器配置与管理项目教程(CentOS7 /RHEL 7)(第三版)题库带答案

    Linux服务器配置与管理项目教程 (CentOS7 /RHEL 7)(第三版)微课版 第1篇   系统安装与网络配置 项目1  安装CentOS 服务器 项目2  配置Linux基础网络 不积跬步, ...

  2. 毕业设计-课程设计-Spring+SpringMVC+Mybatis项目—企业权限管理系统(1)

    JavaEE:Spring+SpringMVC+Mybatis项目-企业权限管理系统 首先给出项目演示地址:http://www.youngxy.top:8080/SSM/ 项目架构图: 一:功能需求 ...

  3. 60.大数据之旅——电信日志项目03

    zookeeper概述 官方网址:http://zookeeper.apache.org/ What is ZooKeeper? ZooKeeper is a centralized service ...

  4. springboot+vue练手级项目,真实的在线博客系统

    文章目录 spring boot 练手实战项目说明 基础知识 面试准备 1. 工程搭建 1.1 新建maven工程 1.1.2遇到的bug 1.2 配置 1.3 启动类 2. 首页-文章列表 2.1 ...

  5. 电信级的RSA加密后的密码的破解方法

    一直以来,电信通过HTTP劫持推送广告的方式已经存在了很多年了,这种手段至今并未停止.这种手段月光博客曾经有多次曝光,见<电信级的网络弹出广告>.<获取了电信恶意弹出广告的罪证> ...

  6. (微信小程序)微信小程序-毕设级项目搭建-微信阅读小程序(内含源码,微信小程序+java逻辑后台+vue管理系统)~不求完美,实现就好

    转载地址:(微信小程序)微信小程序-毕设级项目搭建-微信阅读小程序(内含源码,微信小程序+java逻辑后台+vue管理系统)~不求完美,实现就好 转载请注明出处 作者:Happy王子乐 个人网站(整理 ...

  7. 视频教程-大型ERP实战项目教程-Java

    大型ERP实战项目教程 十年项目经验,曾经任职中国移动架构师,丰富的教学经验让无数人获得高薪 任亮 ¥1300.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 APP订 ...

  8. PyQt5 教科书级完整教程(一)安装与入门

    文章目录 一.安装与环境配置 1.1 外部库下载 1.2 Pycharm 配置 1.2.1 Qt Designer 1.2.2 PyUIC 1.2.2 Pyrcc 1.2.3 pyhton 程序打包 ...

  9. 大型ERP实战项目教程-任亮-专题视频课程

    大型ERP实战项目教程-11719人已学习 课程介绍         通过本ERP项目的学习,可以使学生形成开发的思想,产生真正的动手开发的能力,本项目是原公司的真实项目,如果你没有经验,那么学习这个 ...

最新文章

  1. Kafka背后公司获1.25亿融资,估值超25亿美元
  2. java如何监控cpu耗时_超级干货:3个性能监控和优化命令讲解
  3. 干货分享:插画家Anmi的创作技巧与练习方法
  4. sobel算子_OpenCV 学习:4 Sobel算子
  5. (二)利用Java WebService调用天气预报实践
  6. javaScript学习笔记总结(一)
  7. Android中Dialog的使用
  8. 8位PCM编码转换16位PCM
  9. LINE电脑PC无限多开助手,LINE电脑多开器
  10. 阿里面试官内部题库,阿里发布2022年Java岗(正式版)面试题
  11. 微信小程序顶部导航栏颜色修改
  12. 全国程序员【工资统计】, 你想去哪个城市工作?
  13. idea双击无反应,打不开的解决办法!
  14. JS中substr和substring
  15. 前端VUE面试题总结
  16. 百度清风算法打击下载违规网站说明
  17. 洛谷 P4725 【模板】多项式对数函数 ntt
  18. A. BNU ACM校队时间安排表
  19. Flate压缩(2019.10.23)
  20. 分享零基础学习游戏模型的方法

热门文章

  1. 阿里云域名解析与绑定过程
  2. java并发编程——并发编程的挑战
  3. Java基础 项目实例五 简易聊天系统
  4. 一站式轻监控轻运维系统nezha(上篇)
  5. MMA安装及使用优化
  6. sentos7查看网络配置_怎么查看centos7的网络配置
  7. css三种定位都脱离文档流了吗,CSS布局之脱离文档流详解——浮动、绝对定位脱离文档流的区别...
  8. 软件观念革命:交互设计精髓_万字干货,交互设计精髓105条设计原则(附中英PDF资料)...
  9. IOS性能检测工具-Instruments
  10. 多线程_多线程常见的面试题