java用户权限管理图例解释.docx
依据上面的分析,我们进行数据库结构设计,如下图:点击这里杳看权限管理系统数据表字段设计actionctionidftctonnwactIoncolunrActionvactiongroupgroupanagerftctioncolunrnft11Mastergroup-7ii/rasteridJcroupdrstrid24三ternaneICrwda3asteridn>pz三vordbdttruen11cst×brtKdAydeptpositionpostion_descofficejhonenoblehghomenlnstridn三tmncrtdat为r能够进行良好的分析,我们将数据库结构图拆分开来,三张实体表的作用已经很清楚,现在我们来看下两张映射表的作用。一权限映射表如卜图:首先,我们来了解一下权限映射表与管理Ifl表以与权限表之间的字段关联。/a解酬团需/gr篇祖8最r,storidasternnccretedteactioxmnectIoncolunnidp>.IviewwodegroupnnpoupmEoCWridnftst«rn«rieCreatedate看图中的红圈,先看gorupid字段相关联,这种关联方式在实际数据库中的表现如下图:论表rjjroupBanager中的数楣如图中所示,管理组表中“超级管理员”的gr。UPid为1,那么权限映射表中groupid为1的权限也就是“超级管理员”所拥有的权限。运用groupid字段关联,是为了查到个管理组能够执行的权限有哪些。但这些权限的具体信息却是action字段关联所杳询到的。action字段相关联在数据库中的表现如下图:,UF软1.H7;?""in,'"¾表,林iongrG赢",中Ii)数据.QCtioiudIACtionnene.ctotJkidIactionIi1枚阳初始化安装尸而、(retup、2添Tt格理组ddnevroupI25ddn<*CrQUP3添加首建Ifi执行1.ddnQvaoupjxI(3addn"2TOuP4设置管理蛆权阻上八OQUPinfOI4三tgroupnfo5也坦曾鹤S权限司一0。UInRfO_in|(5三tgroupafo-n:6设置管理IS权俄M;。UsrOUInnfojx(6Sctgroupiafo«x:_7册除首理10Ul.group_QxJ(7UeICrOUP_exJ:通过这种关联,才杳询到权IRJ映射表之中那些权限的具体信息。综合起来,我们就知道了一个管理组可以执行的权限有哪些,以与这些权限的具体信息是什么。或许你会问,为什么不运用actionid字段相关联呢?因为: 权限表中的id字段在经过多次的数据库操作之后可能会发生更改。 权限映射表中仅仅记录着一个管理蛆可以执行的权限。 一I1.权限表中的id更改,那么权限映射表中的记录也就更改了。 一个管理蛆可以执行的权限势必将出错,这是特别不希望的。考虑到上面的状况,所以应当运用action字段相关联,因为: 在权限表中,id可能发生改变,而action字段却是在任何状况下也不行能发生改变的。 权限映射表中记录的action字段也就不会变。 个管理组可以执行的权限就不会出错了。二人员映射表如卜图:我们来了解一卜人员映射表与管理Ift表以与人员表之间的字段关联,如下图:“碎通编我Cr4晶院新器M艮表crotinfonast«ridn&stern&necrtdatQ7-T-i11DnonePaSSVordbdatetrunfA二CXbirthdyd«ptpositionpositioned®scofficej>honenobil«hone-phonenftilnasterxd>astrnncrtedteaztcrdj.00UPi)nsterid2nftst4rnttr4CreAtedate看图中的红圈部分,先看groupid字段关联,这种关联方式在数据库中的表现如下图:如图,“超级管理员”组的gr。UPid为1,我们再看人员映射表,admin属于超级管理员组,而administrator属于超级管理员组,同时也属于管理员组。运用这种关联方式,是为了查到个管理组中的人员有堆。和上面一样,人员的具体信息是宛id字段(人员映射表中是masterid字段)关联查泡到的。id字段(人员映射表中是masterid字段)关联表现在数据库中的形式如下图:¾1R由表*astcrw中的效位董:一个人员可能同时属于多个“管理组”,如图中,administrator就同时属于两个“管理组”。所以,在人员映射表中关于administrator的记录就会是两条。这种关联方式才杳询到管理组中人员的具体信息有哪些。综合起来,才可以知道,个管理组中的人员有谁,以与这个人员的具体信息。再结合上面谈到的权限表和权限映射表,就实现了需求中的“组”操作,如下图:X例限表二期嬲用需1XdaBidactOxmantctiitclunn>d(action;vievodtJt7)oupii)nftzTrdnasternanecrAtdftt-DJgroupnwpoupnfonasUriddornscCrdy4_WsSrid;)nineopj>na三tend2*nsPchordb<kStruenaisexbirthdaydeptpositionposition_drcoffice-PhonOmobilehon-phoneneulASteridm三ternanecrAtdt其实,管理ta表中仅仅记录着组的基本信息,如名称,组id等等.至干个蛆中人员的具体信息,以与该组能够执行的权限的具体信息,都记录在人员表和权限表中。两张映射表才真正记录着一个组彳哪些人员,能够执行哪些权限。通过两张映射表的连接,三张实体表之间的交互才得以实现,从而完成了It求中提到的“蛆”操作我们再来看一下权限分栏表与权限表之间的交互。这两张表之间的字XC超限哀tioidact©tinone段关联如卜图:4ti<MwolVBXki<)actoncolnnnane两张表运用了actioncolumnid字段相关联,这种关联方式在数据库中的表现如FS:i4_三。'l的票抠.f":",崎我"菽TtionCOIUai<",中的数梃tionid1acViorn*权阳初始化安装声1<ione1am1.:11.J商/m理权限2手及岩理殂1_O昔理权即345678手加合理洱执行设置管理组权阳设宜管理出权阳A设百N理殂权限删除管理阻查看管理员分妲1ii1H11敌脸理4个人设置9101112互看管理俎成员电百首理员权限设法昔理易秒F明设置管理员权B隹11M«1131415手扬修理员添加Sl理员执行更改管理员密码fT2216更改营理员密码S217更助它理员密阻218更奴合即员信息219更改管理员信息1220更改管理员信息4221即除指定管理员2如图所示,通过这种关联方式,我们可以特别清楚的看到权限表中的权限属于哪个分栏。现在,数据库结构已经很清焚了,安排权限的功能以与“组”操作都已经实现。下面我们再来分析一下需求中提到的关于权限管理系统的重用性问题C为什么运用这种数据库设计方式搭建起来的系统可以重用呢? 三张实体表中记录着系筑中的三个确定性元案。“权限”,“组”和“人”。而这三种元素可以随意添加,彼此之间不受影响。无论是那种类型的业务系统,这三个确定性元素是不会变的,也就意味着结构上不会变,而变的仅仅是数据。 两张映射表中记录着三个元索之间的关系。但这些关系完全是人为创建的,须要改变的时候,只是对数据库中的记隶进行操作,无需改动结构。 权限分栏表中记录着不端运用时显示的分栏无论是要添加分栏,修改分栏还是削减分栏,也只不过是操作记录而已。综上所述,这样设计数据库,系统是完全可以重用的,并且经受得住“变更”考验的。Mtt:此套系统的重点在于,三张实体表牢牢地抓住r系统的核心成分,而两张映射表完备地映射出三张实体表之间的交互。其难点在于,理解映射表的工作,它记录着关系,并且实现r“组”操作的概念C而系统总体的设计是本着可以在不同的MIS系统中“重用”来满意不同系统的功能权限设置。附录:权限管理系就到盘表的字段设计下面我们来看看权限管理系统的数据库表设计,共分为六张表,如下图:action表:'口action:表字号名称说明I人Vactond自动编号自*dactson11art*动作名称Qctigcolunnid数字动作分栏号(映射到actioncol5沃)action文本动作字符串vievnode文本是否可见action表中记录着系统中全部的动作,以与动作相关描述。actioncolumn表:actioncolumn表中记录若动作的分栏,系统运行时,左侧菜单栏供应了几块不同的功能,每一块就是一个分栏,每添加一个分栏,该表中的记录就会增加一条,相对应的,左侧菜单栏中也会新增机一个栏Cactiongroup表:actiongroup:表I-!l!0字段名称数凫壳里说明VId目增长Idaction动作名称(映射到acti。离)group'd动作所,星俎id(映射到rasSrgroUP表)n«:t«rid创建者2114三ternarte创建者名称createdte日JWIq创蜘间actiongroup表记录回动作所在的组。groupmanager表:KroupBanaccr:表字跄g*groupdroupnseCroupinfo<t.sterid翻膜型数字数字文本_tr)ftzt4rn«n«下Createdate目增长Id首理组名称若避殂信息创建者id创建者名称组包胜时间Igroupmanager表I已隶着管理组的相关信息,每添加个管理组,这里的记录就会增加一条。mastergroup表:Bastergroup:去回国字段名防数据英泡说明丁£id自增长IdTiastend首翌员d(映射到g"er表)nane首舞员名称bOUpld管理里id(映射到a。”表)妙改者Id5=t0rns0修改者名称CreatedatC日期.同问修改时间mastergroup表记录着管理员所在的管理组,由于一名管理员可能同同时属于多个组,所以该表中关于某一名管理员的记录可能有多条。master表:UJ三a三ter:表:J叵£字母名称VIdn¾11epasswordbdatotrurnexbirthdayd*ptpositionpo三ton-dc三co££ice_phoneGobIleh÷-phonr*A三trd4三ternaneCreatde说明IA自叫d者迎员名琮e三三创建时间其实姓名性别生日所展部门I职务职务说明办公主电话手机家JS电话电子郃件创建者Id创注者名师创建日期master表记录者全部管理员的信息,每添加一个管理员,该表就会增加一条记录C