77范文网 - 专业文章范例文档资料分享平台

通向架构师的道路06(第六天)之漫谈基于数据库的权限系统的设计

来源:网络收集 时间:2020-02-20 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

通向架构师的道路(第六天)之漫谈基于数据库的权限系统的设计

一、权限系统

这一天将讲述一个基本的基于数据库的权限管理系统的设计,在这一天的课程的最后将讲述“左右值无限分类实现算法”如何来优化“系统菜单”的结构而告终。今天的内容和前几天的基础框架是一样的它们都属于基础知识,在这些基础知识上还可以扩展出无数的变种与进化设计。

二、先来看客户的一个需求

2.1 用户实际需求

1. 所有的用户、角色可动态配置

2. 所有的系统菜单的权限要求具体到“增,删,改、查、打印、导出”这样的小权限的设计

3. 所有的权限基于角色来进行划分和判断 4. 一个用户可能属于多个角色

5. 系统菜单也能够动态的“增、删、改、查”

2.2 系统权限菜单样例

三、基于数据库的系统权限表设计

3.1 ER(Entity Relationship)图

围绕上述需求,我们可以在数据库内进行如下的表设计,下面直接给出ER图:

3.2 表关系详解

上述设计有6张表,其中: T_User表

用于存放用户信息,此处只存放基础信息

T_Role表

用于存放系统角色信息

T_User_Role表

用于存放系统用户与角色的匹配关系

T_Sys_Menu表

这张就是用于存放系统菜单的表了,这张表的设计主要使用了如下的表设计技巧:

注意这边的MENU_ID与MENU_PID

如果这个菜单项是一级菜单,那么我们把它的MENU_PID设为0

如果这个菜单是另一个菜单的子菜单,那么我们就把它的MENU_PID设为它的父菜单的MENU_ID。

有了这样的结构,我们一个递归就能把这颗“树”显示出来了,是不是?

此处以Oracle数据库为例,不使用递归,直接把树形结构在数据库中就造型造好(当然,还有更好的方法如:有人喜欢设level或者是deep这样的字段来简化程序解析树型结构菜单,稍后我们会来讲一个根本不需要用递归的树型菜单的设计来最大程度优化设计。) 显示整颗树型菜单结构的Oracle语句: SELECT *FROM T_SYS_MENU STARTWITH MENU_PID=0 CONNECTBYPRIOR MENU_ID=MENU_PID orderby MENU_ID 上述语句,已经用数据查询用句就将我们的这个“树”的层次关系理出来了,如果我们手上有一个控件叫dtree.js,那么一个循环就可以把这个树显示出来了,不是吗? 来看dtree.js的应用 //公式: d.add(menu_id, menu_pid, ?menudescr?, ?menu_url?); d = new dTree('d'); d.add(0,-1,'菜单'); d.add(1,0,'报表查询','example01.html'); d.add(2,1,'月报','example01.html'); d.add(3,1,'季报','example01.html'); d.add(4,1,'年报','example01.html'); d.add(5,0,'系统管理','example01.html'); d.add(6,5,'用户管理','example01.html'); d.add(7,6,'新增用户','example01.html'); d.add(8,6,'删除用户','example01.html'); d.add(9,5,'角色管理','example01.html'); d.add(10,9,'新增角色','example01.html'); d.add(11,9,'删除角色','example01.html') document.write(d); 大家看上面,这个是dtree.js插件,一个专门用于生成树的js插件的使用方法,那么如果我们附以上述的sql语句在数据库中把数据选出来后,是不是只要一个循环就可以给这个dtree.js插件显示了,不是吗? 我们如果不想显示整颗树只想显示如:

只显示系统管理菜单有其下列所有的子菜单,那么我们的Oracle中的Sql应该怎么写呢? 经查“系统管理”这个菜单的MENU_ID=?105?,于是我们的Sql语句如下: SELECT *FROM T_SYS_MENU STARTWITH MENU_ID='105' CONNECTBYPRIOR MENU_ID=MENU_PID orderby MENU_ID 对吧?很简单哈! T_Privilege表

用于存放系统每个菜单的详细子权限如“增,删,改,查”

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库通向架构师的道路06(第六天)之漫谈基于数据库的权限系统的设计在线全文阅读。

通向架构师的道路06(第六天)之漫谈基于数据库的权限系统的设计.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/jiaoyu/743793.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: