精华内容
下载资源
问答
  • 权限管理 数据库设计

    2010-06-30 09:58:54
    权限管理数据库设计,分了很多权限,适合于多数数据库权限管理
  • 权限管理数据库设计

    千次阅读 2011-05-06 15:16:00
    权限管理数据库设计 在开发过程当中,权限管理是不可或缺的一个模块,用户在系统中可使用的模块和操作都需要权限管理来控制。最近正好在做权限管理这个模块,所以就对于权限管理的数据库设计做个小结,本文纯属个人...

     

    权限管理数据库设计

     

    在开发过程当中,权限管理是不可或缺的一个模块,用户在系统中可使用的模块和操作都需要权限管理来控制。最近正好在做权限管理这个模块,所以就对于权限管理的数据库设计做个小结,本文纯属个人观点。

    一、用户表

    用户表是肯定需要的,并且在用户表中需要有个唯一标识,可以是主键,在多主键的情况下可以加个自增列或者GUID来做唯一标识。


    是否主键 列名 类型 描述 是否可空 备注
    USERNAME VARCHAR(20) 用户名  
    PASSWORD VARCHAR(20) 密码  

    二、角色表

    角色表可以设计成树形结构,这样就可以对角色进行分组。

     

    是否主键 列名 类型 描述 是否可空 备注
    ROLEID INT 角色编号 自增列
    ROLENAME VARCHAR(20) 角色名称  
    PARENTID INT 父角色编号  

    三、用户角色表

    关联用户表和角色表的中间表。

    是否主键 列名 类型 描述 是否可空 备注
    USERNAME VARCHAR(20) 用户名 用户表中USERNAME的外键
    ROLEID INT 角色编号 角色表中ROLEID的外键

    四、模块表

    模块包含子模块和父模块,这里也可以做成树形表。

    是否主键 列名 类型 描述 是否可空 备注
    MODULE_TAG VARCHAR(7) 模块标识  
    MODULE_NAME VARCHAR(50) 模块中文名称  
    MODULE_EN VARCHAR(50) 模块英文名称  
    MODULE_HREF VARCHAR(100) 模块链接  
    MODULE_ICO VARCHAR(100) 模块图标路径  
    MODULE_PARENT_TAG VARCHAR(7) 父模块标识  
    MODULE_FLAG BIT 模块停用标识 默认值为0,0可用,1不可用

    五、模块权限表

    一个模块中包含多个权限,个人感觉权限中加个父权限会比较直观,实际用途有待研究。

    是否主键 列名 类型 描述 是否可空 备注
    PERMISSION_TAG VARCHAR(7) 权限标识  
    MODULE_TAG VARCHAR(7) 模块标识  
    PERMISSION_NAME VARCHAR(50) 权限中文名称  
    PERMISSION_EN VARCHAR(50) 权限英文名称  
    PERMISSION_PARENT_TAG VARCHAR(7) 父权限标识  
    PERMISSION_FLAG BIT 权限停用标识 默认值为0,0为可用,1为不可用

    六、角色权限表

    角色和权限是多对多关系,所以要建张中间表。这张表决定用户的最大权限,具体拥有什么权限由用户权限表决定。

    是否主键 列名 类型 描述 是否可空 备注
    ROLEID INT 角色编号 角色表中ROLEID的外键
    PERMISSION_TAG VARCHAR(7) 权限标识 权限模块表中PERMISSION_TAG的外键

    七、用户权限表

    用户和权限是多对多关系,所以要建张中间表。用户权限由这张表决定。

    是否主键 列名 类型 描述 是否可空 备注
    USERNAME VARCHAR(20) 用户名 用户表中USERNAME的外键
    PERMISSION_TAG VARCHAR(7) 权限标识 权限模块表中PERMISSION_TAG的外键

    小结:模块和权限归到一起,拥有该模块中的任何一个权限就能使用该模块,由于角色表是树形结构,所以可以划分用户组,然后给予不同角色的用户不同的最大权限,具体权限由用户权限表里决定。

    展开全文
  • 权限管理数据库设计文档,提供全面的数据库设计详情,请下载!
  • 基于角色的权限管理数据库设计。内有建表语句及测试语句。
  • 一,前言 ...说到权限管理,首先应该想到,当然要设计一个用户表,一个权限表。这样就决定了一个人有什么样的权限。 做着做着就会发现这样设计太过繁琐,如果公司里面所有员工都有这样的权限呢,每...

    一,前言

    权限管理系统的应用者应该有三种不同性质上的使用:

    • A、使用权限
    • B、分配权限
    • C、授权权限

    本文只从《使用权限》和《分配权限》这两种应用层面分析,暂时不考虑《授权权限》这种。

    二,初步分析

    用户和角色

    说到权限管理,首先应该想到,当然要设计一个用户表,一个权限表。这样就决定了一个人有什么样的权限。

    做着做着就会发现这样设计太过繁琐,如果公司里面所有员工都有这样的权限呢,每一个人都要配置?那是一件很痛苦的事情。因此再添加一个角色表,把某些人归为一类,然后再把权限分配给角色。角色属下的用户也就拥有了权限。

    用户、角色之间的关系是一个用户可以对应多个角色,一个角色可以对应多个用户。多对多关系。

    所以需要一个中间表,相信大家都很熟悉,自然不会有疑问。

    应用场景

    有了用户和角色以后,就需要设计应用场景,比如一个应用程序有几大模块(系统模块、项目管理模块、销售模块),类似这样的模块就是一种应用场景,常见的还有 菜单、操作 等等。

    假设现在我们设计好了,应用场景包括 模块、菜单和操作,那么应该有以下六种关系:

    1. 一个用户可以对应多个模块,一个模块可以对应多个用户。多对多关系。
    2. 一个用户可以对应多个菜单,一个菜单可以对应多个用户。多对多关系。
    3. 一个用户可以对应多个操作,一个操作可以对应多个用户。多对多关系。
    4. 一个角色可以对应多个模块,一个模块可以对应多个角色。多对多关系。
    5. 一个角色可以对应多个菜单,一个菜单可以对应多个角色。多对多关系。
    6. 一个角色可以对应多个操作,一个操作可以对应多个角色。多对多关系。

    于是建立六张表来维护这六种关系。

    这样设计看起来没什么问题。是的,如果没有加入新的关系的话,这样是已经可以满足大部分的需求了。

    可是如果就是如果,新的关系(需求)往往会加入到系统进来。这个时候就需要再建立一个新的表。系统的复杂度也随着增加。

    可以看出,这样的设计有几个问题:

    • 数据表设计太复杂
    • 应对系统方案过于固定

    三,把问题简单化

    不同的应用场合,你可能会想出不同的需求,提了一个新的需求以后,可能会发现原来的设计没方法实现了,于是还要添加一个新的表。这也是上面所提到的问题。

    其实不必想得那么复杂,权限可以简单描述为:某某主体 在 某某领域 有 某某权限

    • 主体可以是一个模块,可以是一个页面,也可以是页面上的按钮
    • 权限可以是用户,可以是角色,也可以是一个部门
    • 领域可以是“可见”,可以是“只读”,也可以是“可用”(如按钮可以点击)

    其实就是Who、What、How的问题

    因此上面所提到的六张表其实可以设计一张表:

    权限管理数据库设计
    权限管理数据库设计

    四,实例说明

    下面用一个例子做设计说明。“用户、角色在页面上的是使用权限”

    详细设计:

    1、把菜单的配置放在数据库上,每一个菜单对于一个唯一的编码MenuNo,每一个“叶节点”的菜单项对于一个页面(url)。

    2、把按钮的配置放在数据库上,并归属于一个菜单项上(其实就是挂在某一个页面上)。应该一个页面可能会有几个按钮组,比如说有两个列表,这两个列表都需要有“增加、修改、删除”。所以需要增加一个按钮分组的字段来区分。

    3、把菜单权限分配给用户/角色,PrivilegeMaster为"User"或"Role",PrivilegeMasterValue为UserID或RoleID,PrivilegeAccess为“Menu",PrivilegeAccessValue为MenuNo,PrivilegeOperation为"enabled"

    4、把按钮权限分配给用户/角色,PrivilegeMaster为"User"或"Role",PrivilegeMasterValue为UserID或RoleID,PrivilegeAccess为“Button",PrivilegeAccessValue为BtnID,PrivilegeOperation为"enabled"

    5、如果需要禁止单个用户的权限,PrivilegeOperation 设置为"disabled"。

    如果不清楚的可以看下图:

    通用型权限管理数据库设计「数据库结构设计」
    通用型权限管理数据库设计「数据库结构设计」

     

    数据库设计:

    通用型权限管理数据库设计「数据库结构设计」
    通用型权限管理数据库设计「数据库结构设计」- 软盟商城

     

    四,结语

    说了这么多,其实我推荐的只是Privilege的表设计。这个表是who、what、how问题原型的设计。不仅扩展性、灵活性都很好,而且将复杂的权限管理系统浓缩成一句话。

    而PrivilegeOperation不仅仅只是使用和禁止两种,包括分配权限、授权权限,都可以用这个字段定义。只是这无疑加大了应用程序的设计难度,但是对于表设计可以不做出任何的修改就可以完成,可以看出其灵活性。

    部分内容参考:www.ruanally.com

     

    展开全文
  • 用户权限管理.用户权限管理.用户权限管理.用户权限管理.
  • RBAC用户权限管理数据库设计

    万次阅读 多人点赞 2014-07-25 02:11:54
    RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限...这样,就构造成“用户-角色-权限”的授权模型。在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系。(如下图)

    RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型。在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系。(如下图)

    角色是什么?可以理解为一定数量的权限的集合,权限的载体。例如:一个论坛系统,“超级管理员”、“版主”都是角色。版主可管理版内的帖子、可管理版内的用户等,这些是权限。要给某个用户授予这些权限,不需要直接将权限授予用户,可将“版主”这个角色赋予该用户。 
     
    当用户的数量非常大时,要给系统每个用户逐一授权(授角色),是件非常烦琐的事情。这时,就需要给用户分组,每个用户组内有多个用户。除了可给用户授权外,还可以给用户组授权。这样一来,用户拥有的所有权限,就是用户个人拥有的权限与该用户所在用户组拥有的权限之和。(下图为用户组、用户与角色三者的关联关系)

    在应用系统中,权限表现成什么?对功能模块的操作,对上传文件的删改,菜单的访问,甚至页面上某个按钮、某个图片的可见性控制,都可属于权限的范畴。有些权限设计,会把功能操作作为一类,而把文件、菜单、页面元素等作为另一类,这样构成“用户-角色-权限-资源”的授权模型。而在做数据表建模时,可把功能操作和资源统一管理,也就是都直接与权限表进行关联,这样可能更具便捷性和易扩展性。(见下图)

    请留意权限表中有一列“权限类型”,我们根据它的取值来区分是哪一类权限,如“MENU”表示菜单的访问权限、“OPERATION”表示功能模块的操作权限、“FILE”表示文件的修改权限、“ELEMENT”表示页面元素的可见性控制等。
     
    这样设计的好处有二。其一,不需要区分哪些是权限操作,哪些是资源,(实际上,有时候也不好区分,如菜单,把它理解为资源呢还是功能模块权限呢?)。其二,方便扩展,当系统要对新的东西进行权限控制时,我只需要建立一个新的关联表“权限XX关联表”,并确定这类权限的权限类型字符串。
     
    这里要注意的是,权限表与权限菜单关联表、权限菜单关联表与菜单表都是一对一的关系。(文件、页面权限点、功能操作等同理)。也就是每添加一个菜单,就得同时往这三个表中各插入一条记录。这样,可以不需要权限菜单关联表,让权限表与菜单表直接关联,此时,须在权限表中新增一列用来保存菜单的ID,权限表通过“权限类型”和这个ID来区分是种类型下的哪条记录。
     
    到这里,RBAC权限模型的扩展模型的完整设计图如下:

    随着系统的日益庞大,为了方便管理,可引入角色组对角色进行分类管理,跟用户组不同,角色组不参与授权。例如:某电网系统的权限管理模块中,角色就是挂在区局下,而区局在这里可当作角色组,它不参于权限分配。另外,为方便上面各主表自身的管理与查找,可采用树型结构,如菜单树、功能树等,当然这些可不需要参于权限分配。
     
    以上,是从基本的RBAC模型进行了扩展,具体的设计要根据项目业务的需要作调整。欢迎大家提出批评意见!

    展开全文
  • 现在总结一下关于权限管理数据库设计方案(简化版)。工具PowerDesigner 15.1。下面对各个表作用进行讲解:Ø 用户信息表用户信息表主要记录着用户相关的基本信息,如用户名,姓名,性别,密码,政治面貌等等。Ø...

    权限管理模块

    权限管理是每个系统都要有的,经过最近几个项目的设计开发。现在总结一下关于权限管理的数据库设计方案(简化版)。工具PowerDesigner 15.1。下面对各个表作用进行讲解:

    Ø 用户信息表

    用户信息表主要记录着用户相关的基本信息,如用户名,姓名,性别,密码,政治面貌等等。

    Ø 角色表

    角色表主要用于定义该系统的所有角色,每一个角色代表一种权限。以此来实现权限的控制。

    Ø 用户角色关联表

    该表用于记录每个用户的角色信息,一个用户可以对应多个角色。每个角色也可以对应多个用户。

    Ø 部门表

    部门表主要记录着与用户相关的部门信息,其中部门表有一个自关联的外键,这个外键使得部门当中有子部门信息。

    Ø 如果做的复杂一点还要有一个功能表(资源表),这个功能表要与权限表相关联,从而控制某个用户可以访问的相应资源。基本的功能的数据库设计如下图所示:

     

    展开全文
  • 这样,就构造成“用户-角色-权限”的授权模型。在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系。(如下图)  角色是什么?可以理解为一定数量的权限的集合,权限的载体。例如:一个论坛...
  • 此文章来自也算赌徒的我的关于'基于角色的访问控制'的权限管理数据库设计 请发邮件到freeget.one@gmail.com获得翻强软件。 */ use [master] go -- 检查数据库 [RBAC]是否存在,如果存在则删除(只测试用,...
  • create database scaffold; use scaffold; CREATE TABLE resource ( id int not null primary key auto_increment, resourcename varchar(64) COMMENT '资源名称',...权限管理可能需要编写的接口:    
  • 权限管理数据库设计 权限管理数据库设计 最新设计的
  • 数据库权限管理设计

    热门讨论 2012-05-09 11:42:37
    数据库设计权限管理数据库设计权限管理数据库设计权限管理数据库设计权限管理数据库设计权限管理数据库设计权限管理数据库设计权限管理
  • SQL Server2005数据库,权限管理系统数据库设计
  • 权限管理数据库设计表,个人总结了下,特截图分享下,希望对你有所帮助
  • 主要介绍了详解spring整合shiro权限管理数据库设计,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 基于RBAC权限管理数据库设计

    热门讨论 2013-01-15 17:25:36
    基于RBAC权限管理数据库设计
  • 最新版系统权限管理数据库设计建模文件;此模式基本符合大众对系统权限管理的需求。
  • java权限管理系统数据库设计 java权限管理系统数据库设计
  • spring整合shiro权限管理数据库设计

    万次阅读 多人点赞 2017-01-19 11:05:56
    之前的文章中我们完成了基础框架的搭建,现在基本上所有的后台系统都逃不过权限管理这一块...首先要先设计好我们的数据库,先来看一张比较粗糙的数据库设计图: 具体的数据库设计代码,请查看:https://git.oschina.
  • Java 权限管理系统数据库设计(实用)
  • 权限管理模块数据库设计

    千次阅读 2019-06-05 19:56:57
    今天面试谈到一个权限管理,总结下权限管理模块的数据库部分设计 我们比较常见的就是基于角色的访问控制,用户通过角色与权限进行关联。简单地说,一个用户拥有多个角色,一个角色拥有多个权限。这样,就构造成...
  • 数据库设计用户权限管理.ppt
  • 数据库权限管理设计方法,权限管理设计方法,权限管理设计方法
  • 权限管理模块源码 及数据库设计,适合初学者
  • 通用权限管理数据库设计,支持用户、角色、机构、组级别的权限管理。
  • 权限数据库设计

    2015-04-23 08:16:19
    通用权限管理mysql数据库设计脚本,包括用户、角色、权限以及用户组等

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 234,917
精华内容 93,966
关键字:

权限管理数据库设计