个人第一个python web开发框架(35)——权限数据库结构设计

  接下来要作的是权限系统的数据库结构设计,在上一章咱们了解了权限系统是经过什么来管理好权限的,咱们选用其中比较经常使用的权限系统来实现当前项目管理要求。html

  下面是咱们选择的权限系统关系模型:前端

 

  从以上关系能够看到,用户登陆成功之后,经过读取管理员帐号信息获取当前管理员所在部门与职位,读取职位中的权限信息。进入系统之后,经过职位权限信息筛选出显示的菜单项;访问各功能页面并进行增删改查操做时,经过权限信息判断当前管理员是否有操做权限,从而实现对系统管理员操做权限的控制。下面分别解说一下各数据表的用途。python

 

  菜单表是用来注册(绑定)菜单、管理页面和接口用的,没有将接口和菜单项添加到菜单表的话,程序是不清楚有那些菜单项和接口的,菜单项与接口之间存在什么相的关系。sql

  因此须要在开发时,手动将它们添加到菜单表中,才能对各功能进行对应的管理。数据库

  在开始设计菜单表以前,你们要思考的是,咱们须要存储什么信息,它们之间有什么关联,每一个字段有什么用途,为何要增长这个字段或减小这个字段?服务器

  对于菜单表字段,多数字段你们都很容易定下来,好比说菜单名称、菜单url(绑定的html页面名称或路径)、菜单小图标(增长菜单的美观度)、上一菜单id(用于创建树级菜单目录)、排序、是否显示(对于有些页面或按键功能,不在菜单列表中显示)、是否禁用(有些功能暂时不使用时,能够将它禁用掉)。除了之些以外,咱们还须要增长菜单路由地址字段,用于存储当前菜单所绑定页面所须要使用到的路由地址项,好比说编辑菜单页面,咱们在开发时须要先读取这条记录出来,而后再进行编辑,最后再提交,这里就会涉及到两个路由,一个是菜单记录读取的的路由,和菜单记录修改的路由,在作权限判断时,就能够权限当前操做页面与绑定的路由地址,跟权限信息进行比较,判断是否有操做权限,具体会在后面对应章节详细说明。因为咱们前端使用的是jqGrid组件的树列表功能,组件要求服务器端在返回列表时,还须要返回树列表深度、当前节点是不是最终节点、当前节点是否展开三个字段,因此须要将它们加入菜单表中。cookie

  根据这些要求,咱们的菜单表的数据结构以下数据结构

  

  最终完成的菜单管理页面效果以下:架构

  

 


  部门表它至关于权限分组,能够根据企业的部门结构,建立对应的结构记录,这样也方便企业对系统权限关系更加容易理解。固然也能够根据须要设置虚拟部门出来管理。框架

  对于部门表,首先它也是树状关系,因此它跟菜单表结构基本相似。

  为了之后扩展须要,须要添加部门编码字段,编码从01开始一直累加到99,固然若是部门超过99个的话,要么增长到3位数,要么当前框架已不能支持业务的发展须要思考新的架构了。

  编码每增长一级,在01后面自动增长”0x“,编码的长度跟部门分级深度相关。

  下面是部门表结构,看起来好像是在菜单表的基础上删减了不少字段得来的同样。

  

 

 

  职位表是绑定在部门下的权限角色,它直接与菜单项进行关联,不一样职位能够设置不一样的权限(设置可查看与操做的菜单项)

  因此职位表须要存储与部门表的关联项:部门表id、部门编码、和部门名称(直接存储这个冗余字段,是为在须要显示职位所属部门时,不须要从部门表中关联查询,由于部门名称几乎设置后就不会再进行更改了)

  另外,它还须要拥有职位名称、菜单权限两个字段

  

  页面效果图:

  

  

 

  

  而管理员帐号管理,主要管理的是后台管理员登陆帐号与密码,管理员的基本信息,还有操做权限。

  而权限的管理只须要绑定对应的部门与职位,在用户登陆时就能够经过这个绑定获取对应的操做权限。

  通常来讲,管理员帐号须要记录:登录帐号、登陆密码、登陆密钥(若是须要经过APP端登陆、须要对访问连接加密或是启用cookies验证登陆的,须要这个字段来存储用户本身对应的密钥)、最后登陆时间、最后登陆id、登陆次数、注册时间等信息

  而管理员的基本信息,则是根据不一样企业的管理需求不一样而不一样,有的将人事管理也添加到系统中,则须要记录每一个员工的全部基本信息,固然经常使用的信息有:用户中文名称、性别、出生日期、手机号码、邮箱、备注,你们根据须要自行添加或删减。

  而用户的权限相关字段,主要是绑定部门与职位,和工做状态和帐号状态它些字段了。

  具体数据结构:

  

  页面效果图:

  

  

 

  作来管理系统,固然还须要记录管理员的全部操做记录,好比登陆、退出、浏览了什么页面,操做过什么,因此还要增长一个管理员操做日志表,方便查看分析问题,分清责任

  

 

  权限管理数据表建立sql下载 (PS:为了方便操做,sql会将以前建立的manager表删除,而后从新添加admin管理员帐号进去)

 

 

版权声明:本文原创发表于 博客园,做者为 AllEmpty 本文欢迎转载,但未经做者赞成必须保留此段声明,且在文章页面明显位置给出原文链接,不然视为侵权。

python开发QQ群:669058475(本群已满)、733466321(能够加2群)    做者博客:http://www.cnblogs.com/EmptyFS/

相关文章
相关标签/搜索