⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 实现业务系统中的用户权限管理--设计篇.htm

📁 权限设计权限设计权限设计权限设计权限设计权限设计权限设计权限设计权限设计权限设计权限设计权限设计权限设计权限设计
💻 HTM
📖 第 1 页 / 共 2 页
字号:
                    <LI>
                    <DIV 
                    align=left><STRONG>权限映射表</STRONG>中仅仅记录着一个管理组可以执行的权限。</DIV>
                    <LI>
                    <DIV 
                    align=left>一旦<STRONG>权限表</STRONG>中的id更改,那么<STRONG>权限映射表</STRONG>中的记录也就更改了。</DIV>
                    <LI>
                    <DIV align=left>一个管理组可以执行的权限势必将出错,这是非常不希望的。</DIV></LI></UL>
                  <P align=left><FONT 
                  size=2><STRONG>  </STRONG></FONT>考虑到上面的情况,所以应该使用action字段相关联,因为:</P>
                  <UL>
                    <LI>
                    <DIV 
                    align=left>在<STRONG>权限表</STRONG>中,id可能发生变化,而action字段却是在任何情况下也不可能发生变化的。</DIV>
                    <LI>
                    <DIV 
                    align=left><STRONG>权限映射表</STRONG>中记录的action字段也就不会变。</DIV>
                    <LI>
                    <DIV align=left>一个管理组可以执行的权限就不会出错了。</DIV></LI></UL>
                  <P align=left><STRONG>二 人员映射表</STRONG> 如下图:</P>
                  <P align=left><FONT 
                  size=2><STRONG>  </STRONG></FONT>我们来了解一下<STRONG>人员映射表</STRONG>与<STRONG>管理组表</STRONG>以及<STRONG>人员表</STRONG>之间的字段关联,如下图:</P>
                  <P align=center><IMG height=324 
                  src="实现业务系统中的用户权限管理--设计篇.files/13.gif" width=442></P>
                  <P align=left>&nbsp;</P>
                  <P align=left><FONT 
                  size=2><STRONG>  </STRONG></FONT>看图中的红圈部分,先看groupid字段关联,这种关联方式在数据库中的表现如下图:</P>
                  <P align=center><IMG height=109 
                  src="实现业务系统中的用户权限管理--设计篇.files/10.gif" width=437></P>
                  <P align=left><FONT 
                  size=2><STRONG>  </STRONG></FONT>如图,“超级管理员”组的groupid为1,我们再看<STRONG>人员映射表</STRONG>,admin属于超级管理员组,而administrator属于超级管理员组,同时也属于管理员组。</P>
                  <P align=left><FONT 
                  size=2><STRONG>  </STRONG></FONT>使用这种关联方式,是为了查到一个管理组中的人员有谁。和上面一样,人员的详细信息是靠id字段(<STRONG>人员映射表</STRONG>中是masterid字段)关联查询到的。</P>
                  <P align=left><FONT 
                  size=2><STRONG>  </STRONG></FONT>id字段(<STRONG>人员映射表</STRONG>中是masterid字段)关联表现在数据库中的形式如下图:</P>
                  <P align=center><IMG height=108 
                  src="实现业务系统中的用户权限管理--设计篇.files/12.gif" width=526></P>
                  <P align=left><FONT 
                  size=2><STRONG>  </STRONG></FONT>一个人员可能同时属于多个“管理组”,如图中,administrator就同时属于两个“管理组”。所以,在<STRONG>人员映射表</STRONG>中关于administrator的记录就会是两条。</P>
                  <P align=left><FONT 
                  size=2><STRONG>  </STRONG></FONT>这种关联方式才查询到管理组中人员的详细信息有哪些。综合起来,才可以知道一个管理组中的人员有谁,以及这个人员的详细信息。</P>
                  <P align=left><FONT 
                  size=2><STRONG>  </STRONG></FONT>再结合上面谈到的<STRONG>权限表</STRONG>和<STRONG>权限映射表</STRONG>,就实现了需求中的“组”操作,如下图:</P>
                  <P align=center><IMG height=323 
                  src="实现业务系统中的用户权限管理--设计篇.files/14.gif" width=636></P>
                  <P align=left><FONT 
                  size=2><STRONG>  </STRONG></FONT>其实,<STRONG>管理组表</STRONG>中仅仅记录着组的基本信息,如名称,组id等等。至于一个组中人员的详细信息,以及该组能够执行的权限的详细信息,都记录在<STRONG>人员表</STRONG>和<STRONG>权限表</STRONG>中。两张<STRONG>映射表</STRONG>才真正记录着一个组有哪些人员,能够执行哪些权限。通过两张映射表的衔接,三张实体表之间的交互才得以实现,<STRONG>从而完成了需求中提到的“组”操作</STRONG>。</P>
                  <P align=left><FONT 
                  size=2><STRONG>  </STRONG></FONT>我们再来看一下<STRONG>权限分栏表</STRONG>与<STRONG>权限表</STRONG>之间的交互。这两张表之间的字段关联如下图:</P>
                  <P align=center><IMG height=142 
                  src="实现业务系统中的用户权限管理--设计篇.files/19.gif" width=334></P>
                  <P align=left><FONT 
                  size=2><STRONG>  </STRONG></FONT>两张表使用了actioncolumnid字段相关联,这种关联方式在数据库中的表现如下图:</P>
                  <P align=center><IMG height=363 
                  src="实现业务系统中的用户权限管理--设计篇.files/18.gif" width=531></P>
                  <P align=left><FONT 
                  size=2><STRONG>  </STRONG></FONT>如图所示,通过这种关联方式,我们可以非常清晰的看到<STRONG>权限表</STRONG>中的权限属于哪个分栏。</P>
                  <P align=left><FONT 
                  size=2><STRONG>  </STRONG></FONT>现在,数据库结构已经很清晰了,分配权限的功能以及“组”操作都已经实现。下面我们再来分析一下需求中提到的关于权限管理系统的重用性问题。</P>
                  <P align=left><FONT 
                  size=2><STRONG>  </STRONG></FONT>为什么使用这种数据库设计方式搭建起来的系统可以重用呢?</P>
                  <UL>
                    <LI>
                    <DIV 
                    align=left><STRONG>三张实体表中记录着系统中的三个决定性元素。</STRONG>“权限”,“组”和“人”。而这三种元素可以任意添加,彼此之间不受影响。无论是那种类型的业务系统,这三个决定性元素是不会变的,也就意味着结构上不会变,而变的仅仅是数据。</DIV>
                    <LI>
                    <DIV 
                    align=left><STRONG>两张映射表中记录着三个元素之间的关系。</STRONG>但这些关系完全是人为创建的,需要变化的时候,只是对数据库中的记录进行操作,无需改动结构。</DIV>
                    <LI>
                    <DIV 
                    align=left><STRONG>权限分栏表中记录着系统使用时显示的分栏</STRONG>。无论是要添加分栏,修改分栏还是减少分栏,也只不过是操作记录而已。</DIV></LI></UL>
                  <P align=left><FONT 
                  size=2><STRONG>  </STRONG></FONT>综上所述,这样设计数据库,系统是完全可以重用的,并且经受得住“变更”考验的。</P>
                  <P align=left><STRONG>总结:</STRONG></P>
                  <P align=left><FONT 
                  size=2><STRONG>  </STRONG></FONT>此套系统的重点在于,三张<STRONG>实体表</STRONG>牢牢地抓住了系统的核心成分,而两张映射表完美地映射出三张实体表之间的交互。其难点在于,理解映射表的工作,它记录着关系,并且实现了“组”操作的概念。而系统总体的设计是本着可以在不同的MIS系统中“重用”来满足不同系统的功能权限设置。</P>
                  <P align=left><STRONG>附录:</STRONG></P>
                  <P align=center><STRONG><A 
                  name=biao></A>权限管理系统数据表的字段设计</STRONG></P>
                  <P align=left><FONT 
                  size=2><STRONG>  </STRONG></FONT>下面我们来看看权限管理系统的数据库表设计,共分为六张表,如下图:</P>
                  <BLOCKQUOTE>
                    <P align=left>action表:</P></BLOCKQUOTE>
                  <P align=center><EM><IMG height=119 
                  src="实现业务系统中的用户权限管理--设计篇.files/datebase1.gif" 
                  width=502></EM></P>
                  <P align=left><FONT 
                  size=2><STRONG>  </STRONG></FONT>action表中记录着系统中所有的动作,以及动作相关描述。</P>
                  <BLOCKQUOTE>
                    <P align=left>actioncolumn表:</P></BLOCKQUOTE>
                  <P align=center><IMG height=75 
                  src="实现业务系统中的用户权限管理--设计篇.files/datebase2.gif" width=459></P>
                  <P align=left><FONT 
                  size=2><STRONG>  </STRONG></FONT>actioncolumn表中记录着动作的分栏,系统运行时,左侧菜单栏提供了几块不同的功能,每一块就是一个分栏,每添加一个分栏,该表中的记录就会增加一条,相对应的,左侧菜单栏中也会新增机一个栏。</P>
                  <BLOCKQUOTE>
                    <P align=left>actiongroup表:</P></BLOCKQUOTE>
                  <P align=center><IMG height=135 
                  src="实现业务系统中的用户权限管理--设计篇.files/datebase3.gif" width=498></P>
                  <P align=left><FONT 
                  size=2><STRONG>  </STRONG></FONT>actiongroup表记录着动作所在的组。</P>
                  <BLOCKQUOTE>
                    <P align=left>groupmanager表:</P></BLOCKQUOTE>
                  <P align=center><IMG height=135 
                  src="实现业务系统中的用户权限管理--设计篇.files/datebase4.gif" width=405></P>
                  <P align=left><FONT 
                  size=2><STRONG>  </STRONG></FONT>groupmanager表记录着管理组的相关信息,每添加一个管理组,这里的记录就会增加一条。</P>
                  <BLOCKQUOTE>
                    <P align=left>mastergroup表:</P></BLOCKQUOTE>
                  <P align=center><IMG height=150 
                  src="实现业务系统中的用户权限管理--设计篇.files/datebase6.gif" width=444></P>
                  <P align=left><FONT 
                  size=2><STRONG>  </STRONG></FONT>mastergroup表记录着管理员所在的管理组,由于一名管理员可能同同时属于多个组,所以该表中关于某一名管理员的记录可能有多条。</P>
                  <BLOCKQUOTE>
                    <P align=left>master表:</P></BLOCKQUOTE>
                  <P align=center><IMG height=300 
                  src="实现业务系统中的用户权限管理--设计篇.files/datebase5.gif" width=409></P>
                  <P align=left><FONT 
                  size=2><STRONG>  </STRONG></FONT>master表记录着所有管理员的信息,每添加一个管理员,该表就会增加一条记录。</P>
                  <P align=left>&nbsp;</P>   
                  <P>  欢迎继续阅读:<STRONG><A 
                  href="http://www.noahweb.net/mail/2/Project_1.htm">实现业务系统中的用户权限管理--实现篇</A></STRONG><BR></P>
                  <P></P>
                  <P>&nbsp;</P></TD></TR>
              <TR>
                <TD align=middle>&nbsp;</TD></TR></TBODY></TABLE><SPAN 
            style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: ZH-CN; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"></SPAN></DIV></TD></TR>
        <TR>
          <TD class=text vAlign=top align=right height=100>
            <P><BR><FONT color=#000000>
            <HR SIZE=1>
            </FONT><BR><EM><FONT color=#999999>           <SPAN 
            class=style2> </SPAN></FONT></EM> <SPAN class=style2><FONT 
            style="FONT-SIZE: 10px" 
            color=#000000><EM>NoahWeb</EM></FONT></SPAN><FONT 
            style="FONT-SIZE: 10px" color=#000000><EM>因您而精彩!</EM></FONT><FONT 
            style="FONT-SIZE: 10px" color=#000000><EM></EM></FONT><BR><FONT 
            style="FONT-SIZE: 10px" color=#999999><EM> </EM></FONT> 
            <P></P></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></DIV></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -