- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
通向架构师的道路06(第六天)之漫谈基于数据库的权限系统的设计教程
HYPERLINK /lifetragedy/article/details/7734864 通向架构师的道路(第六天)之漫谈基于数据库的权限系统的设计
一、权限系统
这一天将讲述一个基本的基于数据库的权限管理系统的设计,在这一天的课程的最后将讲述“左右值无限分类实现算法”如何来优化“系统菜单”的结构而告终。今天的内容和前几天的基础框架是一样的它们都属于基础知识,在这些基础知识上还可以扩展出无数的变种与进化设计。
二、先来看客户的一个需求
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
您可能关注的文档
- 选修3-1电场教程.docx
- 选修2第二讲化学与资源的开发利用教程.doc
- 选修2-2第二第三章教案教程.doc
- 迷雾碎层(沼泽关)教程.docx
- 2015福建德化红星美凯龙项目可行性研究报告65页要点.ppt
- 选修4-4第一章坐标系教案教程.doc
- 选修2-2_1.5_定积分的概念教程.doc
- 逆作法工艺教程.doc
- 2015管理会计试题及答案要点.doc
- 2015第二讲哲学和哲学基本问题要点.pptx
- 浙江衢州市卫生健康委员会衢州市直公立医院高层次紧缺人才招聘11人笔试模拟试题参考答案详解.docx
- 浙江温州泰顺县退役军人事务局招聘编外工作人员笔试备考题库及参考答案详解一套.docx
- 江苏靖江市数据局公开招聘编外工作人员笔试模拟试题及参考答案详解.docx
- 广东茂名市公安局电白分局招聘警务辅助人员40人笔试模拟试题带答案详解.docx
- 江苏盐城市大丰区住房和城乡建设局招聘劳务派遣工作人员4人笔试模拟试题带答案详解.docx
- 浙江舟山岱山县东沙镇人民政府招聘笔试模拟试题及参考答案详解1套.docx
- 最高人民检察院直属事业单位2025年度公开招聘工作人员笔试模拟试题含答案详解.docx
- 浙江金华市委宣传部、中共金华市委网信办所属事业单位选调工作人员笔试备考题库及答案详解1套.docx
- 广东深圳市党建组织员招聘40人笔试模拟试题及答案详解1套.docx
- 江苏南京水利科学研究院招聘非在编工作人员4人笔试模拟试题及参考答案详解.docx
最近下载
- 《中国结核病预防控制工作技术规范(2020年版)》.PDF VIP
- 2023年北京市中考英语真题(含答案) .pdf VIP
- 南通大学2023-2024学年《病理学》期末考试试卷(A卷)附参考答案.docx
- 胸部损伤-教学课件.ppt VIP
- 某银行数据中心搬迁整体实施方案.pdf VIP
- 麦肯锡中国银行业CEO季刊(2020年秋)-麦肯锡-224页正式版.pdf VIP
- 国家公务员录用考试体检标准.doc VIP
- 入党申请书时事政治精选五篇.docx VIP
- 农村公路安全生命防护工程监理规划49943.doc VIP
- 高中英语3500词【打印版】乱序版3500词汇(带音标120页).pdf VIP
文档评论(0)