【自然框架】之通用权限:用PowerDesigner重新设计了一下数据库,有ER图和表关系图

      好像以前做的那个数据库设计大家都没太看懂,究其原因似乎大家都比较习惯使用PowerDesinger来设计。而我用Excel画出来的图大家看着特别别扭,而且还没有总体的图,也没有ER图,所以大家也就没有心情看了吧。呵呵。
      PowerDesinger学习了一下,感谢Hayden Han 写的《PowerDesigner使用教程 —— 概念数据模型 》,通过这个文章学会了如何使用PowerDesinger来画ER图,这回画出来的应该是ER图了吧,呵呵。除了ER图,还有表关联图,而且还是由简单(抽象)到具体(细节),一步一步过度的。相信这次大家应该可以看懂了吧。

1、 抽象——总体思路。

先看这个ER图。
【图一】

      很简单,就是说明一下人员和资源的关系,一个人可以使用多个资源,一个资源可以被多个人使用,就是多对多的关系了。这个就是所谓的权限吧。

      不知道这个是不是可以叫做“抽象”。这个就是在金字塔的顶端来看权限了,站在顶端来看,就这么一点,估计没有那种情况可以逃出这个描述吧。

      资源:这里指的资源是广义上的资源,包括很多的东东,模块、数据、记录,菜单、节点、按钮、控件,表、字段、存储过程、SQL语句、查询条件,页面、窗口、表单、图表、报表,什么都可以算作是一种资源。您也可以把您遇到的一些情况都来算作是一种资源。关于资源先说这些,下面还有详细的说明。

2、 加入权限

      第一个图也太简单了,我们把他详细一下,把人员分成两个表——人员基本信息和登录信息,在加入“权限”。就是下面这个表了。
【图二】

      人员分成两个表可以应对很多的情况,比如一个人可以有多个登录帐号,人员基本信息还可以和其他的表相关联,登录方面的需求有什么变化的话,只需要修改登录信息表就可以了,不会影响人员基本信息表,不会让其越来越臃肿。
      以前对于“权限”是很模糊的,似有似无的感觉,现在看来他其实就是一个多对多的关联表,呵呵。当然您可以说我的这个看法不对,呵呵,我只是说一下我的感觉。

3、 加入角色

      第二个图,是把帐号的资源直接联系起来,这个有一个不方便的地方,比如有五个业务员他们的功能都是一样的,但是我们却需要做五遍一样的操作才能给这五个业务员设置好权限,而当业务员可以做的事情有变化的时候,我就又需要做五次相同的操作,这个就很麻烦了,所以引用了“角色”。
【图三】

      我们可以建立一个业务员角色,设置业务员角色可以做的事情,然后把五个业务员和业务员角色关联起来。这样就方便了,业务员可以做得事情有变化的时候,我只需要修改业务员角色可以做得事情就可以了。
     

4、 表关联图

      我觉得ER图就是ER图,不能代替表关系图,所以我就又做了一个表关系图。
【图四】

      左面从上往下看,人员、登录帐号、角色、资源,右面是两个多对多的关联表。这个看起来就比较清晰了吧。

      这个设计还可以吧,资源保罗万象什么都可以往里放,您可以展开您的联想,帮想到的东东都放进去就可以了。

      这个图从设计的角度来说应该是挺简洁的,五六个表就搞定了。而且也可以适合很大的范围,因为那个资源的定义实在是太广泛了,到了无所不包的程度了。但是这个设计真的好吗?或者是实用吗?

=================================================
插播一个笑话

甲:把大象关冰箱里需要几步?
乙:三步,把冰箱门打开,把大象放进去,把冰箱门关上。
甲:回答的很好。现在我这里有一头大象,你把它给放到冰箱里面吧。
乙:…… ……

计划归计划,实现归实现,往往计划的挺好,但是到了实施的时候就会遇到很多的问题。比如大象太大了,冰箱太小了,放不下呀?是不是要把大象给切了,或者定制一个大个的冰箱??

这个就是在做计划的时候没有考虑到细节,没有考虑到可能遇到的难题,想当然了。

=================================================

      回归正题,如果我把这个权限的设计交给十个人,让他们用代码的方式来给实现出来,会是什么情况呢?
      有两个人一头雾水,不知道该如何下手,不知道资源到底是什么,要做到什么程度。
      有七个人开始动手,结果做出了七种实现方式,保证随便选两个都是不一样的。
      剩下的一个人,他已经构思出来了第50种具体的实现方案,但是不知道选哪一种好,都被推翻了,正在构思第51种实现方案。

      我上面的猜测不夸张吧。

 
5、 何为“资源”

      既然上面的设计有点粒度太大了,那么应该怎么办呢?其实也只是“资源”这个表太模糊了,问题就出现在这里,那么是不是要把这个“资源”给详细化一下呢?规定一下这个资源到底是什么,到底是什么样子的,应该在编码的时候如何去实现这个资源?这个恐怕每个人的想法就有都不一样了,这个就没有对错之分了,只有适合不适合的问题。下面我就说一下我对资源的详细设计,这个只是我的想法和理解,并不是唯一的方法。

      这个资源,到现在我都没有敢展开来,为什么?怕大家不接受,说我的表又多了,设计又复杂了,不通用了,不对了等等。所以放在后在展开来的。
【图五】

      这个是自然框架里面需要的资源,功能节点可以生成树状菜单,功能按钮是列表页面里的按钮(添加、修改、删除等),可以设置各种各样的按钮,不只限于添加、修改。每个列表页面都有自己的按钮,按钮是不重复的。
      这个其实和权限是没有什么关系的,就是说没有权限他们也是存在的,也是必须的。通过这些资源就可以做到功能到节点、功能到按钮、功能到字段。

 

      关于模块,我觉得模块就是若干功能节点的集合。

      那么功能节点是什么呢?看下面的图,就是左面的那个功能菜单。角色管理、登录帐号、登录日志、操作日志等是一个个小的功能节点,他们几个和在一起就是一个“系统管理模块”。

6、 角色和过滤方案
【图六】

      这个图是把角色和过滤方案和在一起了,应该分开的,我这里偷了个懒,截图也不是容易的事情呀,呵呵。看图就差不多理解了吧。

 


7、 全家福

【图七】

      把这几个图和在一起,来个全家福。现在您不会觉得表多了吧。

      这个就是比较详细的设计了,看了这个设计您不会一头雾水,不知如何下手的感觉了吧。也不会有那么多不同的解决方案了吧,因为都被我限制死了,呵呵。您可以说这个设计太死板了,这些就把所有的情况都包含进去了吗?出现了新的情况怎么办?好办,建立新的表就可以了。其实一开始只有角色到节点,角色到按钮的功能,没有权限到字段的功能,没有资源过滤的功能,这两个都是在做项目的时候遇到了具体的问题,才总结加上来的。就是说可以不断的扩展的。

 

ps:
1、请大家注意图七里面的四个大框框(人员表组、角色表组、资源过滤方案、资源),这个就是我所说的“表组”,看这个全家福的时候,第一步映入眼帘的就是这四个红色的大字吧,这个就是要说明我的这些个表是哪些范围的,哪些表在一起表达一个意思。第二步再看框框里面的表。每一个框框里的表的数量就不多了。虽然一共有18个表,但是分成四大部分之后,每一部分的表都不超过10个,这样看起来就很容易了。再看资源的相关的表的时候,不会被人员表干扰,因为他们在两个框框里面。这样就避免了迷宫,避免了复杂的乱七八糟的连线。呵呵。

2、俺英文很烂,所以除了主外建使用了英文单词,其他的就都直接使用中文了,呵呵。我还是觉得看中文舒服:)

3、写这个的目的
 给自己用,工作7年的工作总结、思路总结,四、五个项目的权限的总结。
 和大家分享,交流。看看大家的意见,否则不就更是闭门造车吗?

4、您可能会问,客户的人少,每个人做得事情都不一样,这个怎么办呀?
      这也好办呀,一个人一个角色就可以了。虽然对于这种情况多用了一个角色,有点绕远的感觉,但是总体来说是可以接受的。角色初期设置一下就可以了,角色和人员“绑定”之后,修改角色可以做什么事情,和修改人员可以做什么事情,操作步骤都是一样的。

      您可能又问了,客户是一个很大的公司,设置了n个角色之后,客户提出了一个需求:张三这个人比较特殊,他可以做XX事情,但是有没有对应的角色,也不想再多设置一个角色了,需要直接给张三设置可以做这件事情就可以了。
      这个又要怎么处理呢?是不是要修改表结构了呢?我是不想改的,还是用角色绑定的方法来处理,增加一个“张三专用角色”,这个角色是“隐藏”的,不和其他的角色一样的管理,需要通过对“张三”来管理。这个好像说不太清楚,先这样吧,呵呵。

相关文章:

【自然框架】之通用权限的Demo(一):角色的添加和修改 这里是角色的维护程序,角色、权限的维护也是很简单的事情。

1、 简介、数据库的总体结构
2、 介绍人员表组
3、 介绍组织结构表组
4、 介绍角色表组
5、 介绍“项目自我描述表组”
6、 权限到节点
7、 权限到按钮
8、 权限到列表(表单、查询)
9、 权限的验证

数据库设计文件(PowerDesigner格式)的下载:http://www.cnblogs.com/jyk/archive/2008/07/29/1255891.html

时间: 2024-09-30 23:47:29

【自然框架】之通用权限:用PowerDesigner重新设计了一下数据库,有ER图和表关系图的相关文章

【自然框架】通用权限的视频演示(一):添加角色,权限到功能节点和按钮

      写了几个关于权限的东东,好像大家都不大理解,也不太清楚我的权限到底能做什么,所以想来想去还是弄点视频吧,就是屏幕录像,这样大家看起来就方便了吧.       为了大家便于观看视频,我先说一下视频的步骤.      1.添加角色,选择角色可以使用的功能节点和按钮.      2.选择用户,就是给角色里面添加用户.      3.用用户的账号登录,查看效果.      4.修改角色可以使用的按钮,查看效果.       这里举了一个很简单的例子--新闻维护,有两个角色,一个是"新闻维护&

【自然框架】之通用权限:数据库设计的几种使用方式

        上次<[自然框架]之通用权限:用PowerDesigner重新设计了一下数据库,有ER图和表关系图 >里说了一大堆的表,好多人说太复杂了,做到权限到模块就可以了.       这个嘛,我也没有说所有的表都要一起使用呀.用哪些表那是根据情况来定的.也就是客户需求.项目需求和经验来决定了.       如果项目很简单,客户的需求也不复杂,那么做到权限到模块就可以了,大家都方便.那么这个时候"资源表组"里面就只需要用一个表就ok了,其他的表就不用了.       

【自然框架】 权限 的视频演示(二): 权限到字段、权限到记录

      继续.这里演示权限到字段和权限到记录.            权限到字段有两种安全级别,      1.低安全级别.有些项目不需要做到控制每一个字段是否显示,那么就可以采用这种级别.低安全级别就是:如果一个节点里面没有设置可以访问哪些字段,那么就默认为不需要做到控制字段的程度,就是说节点里的字段都是可以访问的.这么做是为了操作方便.       2.高安全级别.有些项目要求非常严格,要严格控制每一个字段是否可以访问,那么就可以采用这种安全级别.高安全级别:如果一个节点里面没有设置可以

【自然框架 免费视频】资源角色的思路介绍(整理了一下以前帖子的目录,请刷新)

  请大家不要忘记点推荐!   源码下载: 自然框架的源代码.Demo.数据库.配置信息管理程序下载 这里介绍一下资源权限的思路,我们来设计一个场景,这个场景大家比较常见的,也是我遇到过的.我们来通过这个简单的实例,来看看资源权限可以如何实现. 资源权限,就是同样的一个表,一些人可以看到一部分信息,另一些人可以看到另一部分信息,还有些人可以看到全部信息,还有--.总之就是根据员工的权力,进行适当的筛选.可以看到一部分,或者可以看到全部.一级可以做什么样的操作(增删改查,导出等).   这里先只介

自然框架开源社区的第一次活动——实现会员注册

  活动方式 由社区提出一个需求,大家按照自己的习惯.方式来实现这个需求,然后上传代码.上传后其他人都可以看到,并且可以提出自己的看法.上传人可以根据大家的看法修改代码,再次上传. 可以查看.学习别人上传的代码,进行讨论.发表自己的看法.找一个大家都有空的时间(暂定4月24日),集中讨论.可以用语音群聊的方式.   活动目的 上传.介绍自己的代码,学习别人的代码,通过讨论,取长补短,达到共同提高的目的. 活动时间 4月1日到4月23:大家上传自己的实现代码.同时也可以进行讨论. 4月24日:集中

【自然框架】之“元数据”的威力

  定义      元数据最本质.最抽象的定义为:data about data (关于数据的数据).它是一种广泛存在的现象,在许多领域有其具体的定义和应用.       我的理解就是对数据进行说明.描述.不知道我的这个理解对不对?呵呵.       SQL Server 里面有两个表,我们可以用这个SQL语句来查看一下,我们可以看到数据库里面的表和字段的信息.那么这些数据是不是可以看做是一种"元数据"呢? SELECT TOP 100 PERCENT tbl.name AS 表名, 

【自然框架】之通用权限(二):人员表组

        继续,这是第二章了.本来想在这一章里面介绍三个表组来着,但是我有点写不好的感觉,还是多分几章吧,这一章就只介绍人员表组.第二章到第五章主要是介绍表结构.我是习惯使用Excel来设计表,一开始的时候只能记录表名.字段名.字段类型.字段说明等信息,但是一直没能找到如何使用Excel来体现出来表之间的关系.前一阵子(好像是去年)突然想到了可以使用"图表"+图形(比如箭头)的方式来做表关系,第一章里的那几个图就是这么弄出来的,看着还凑合吧.       至于为什么不用Power

【自然框架】之通用权限(八):权限到字段(列表、表单、查询)

   通用权限想要写的文章目录:(这是第八章)   1. 简介.数据库的总体结构2. 介绍人员表组3. 介绍组织结构表组4. 介绍角色表组5. 介绍"项目自我描述表组"6. 权限到节点7. 权限到按钮8. 权限到列表(表单.查询)9. 权限的验证10. 资源方面的权限11. 角色管理的程序(给客户用的)12. 权限下放13. 个性化设置 A. [自然框架]之通用权限(外传):杂谈     列表 myGrid 先说一下myGrid,我会根据Manage_FunListCol表和Manag

【自然框架】之通用权限(四):角色表组

        继续,这是第四章了.这里涉及到了资源方面的,不过有点绕,所以这里先介绍一下表结构,在后面的章节里面,再举例子详细介绍. 通用权限想要写的文章目录:(这是第四章)   1. 简介.数据库的总体结构2. 介绍人员表组3. 介绍组织结构表组4. 介绍角色表组5. 介绍"项目自我描述表组"6. 权限到节点7. 权限到按钮8. 权限到列表(表单.查询)9. 权限的验证10. 资源方面的权限11. 角色管理的程序(给客户用的)12. 权限下放13. 个性化设置 A.. [自然框架]