`
黄继华
  • 浏览: 45047 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

通用权限管理设计 之 数据库结构设计

 
阅读更多

一,前言

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

A,使用权限

B,分配权限

C,授权权限

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

二,初步分析

用户和角色

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

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

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

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

应用场景

有了用户和角色以后,就需要设计应用场景,比如一个应用程序有几大模块(系统模块、项目管理模块、销售模块),

类似这样的模块就是一种应用场景,常见的还有 菜单 、 操作 等等。

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

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

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

这样设计看起来没什么问题。是的,如果没有加入新的关系的话,这样是已经可以满足大部分的需求了。可是如果就是如果,新的关系(需求)往往会加入到系统进来。这个时候就需要再建立一个新的表。系统的复杂度也随着增加。

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

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

三,把问题简单化

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

其实不必想得那么复杂,权限可以简单描述为:

某某主体 在 某某领域 有 某某权限

1,主体可以是用户,可以是角色,也可以是一个部门

2,领域可以是一个模块,可以是一个页面,也可以是页面上的按钮

3,权限可以是“可见”,可以是“只读”,也可以是“可用”(如按钮可以点击)

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

分享到:
评论

相关推荐

    比较通用的权限数据库设计

    比较通用的权限数据库设计 权限数据库设计是业务系统中非常重要的一部分,它可以...通过这种设计,我们可以实现一个通用的权限数据库,满足大部分 B/S 系统中对用户功能权限控制的需求,并且可以实现用户权限管理。

    通用权限系统数据库

    通用权限系统数据库是一种精心设计的架构,用于管理用户访问控制和数据安全性,广泛应用于各种规模的企业和组织。这种系统的核心目标是确保只有经过授权的用户能够访问特定的资源,同时提供灵活的角色分配和权限管理...

    通用权限管理系统(设计文档,数据库,及Web和WPF两种实现方式)

    从"通用权限管理系统 _DataBind.rar"来看,这可能包含数据库脚本或者数据库模型,用于创建和初始化权限管理所需的数据表结构。开发者可以通过这些脚本或模型来建立符合系统需求的数据库,确保数据的一致性和完整性。...

    多种权限表的设计(数据库设计)

    在设计一个通用权限管理系统时,首要目的是为了提高效率,避免在每个独立的应用系统中重复进行权限设计。本文档详细介绍了权限管理系统的设计,包括总体设计、接口设计(此处略去)、数据结构设计以及安全策略。 1....

    吉日嘎啦 - 通用权限管理系统 V3.7(源代码、文档、数据库)

    《吉日嘎啦 - 通用权限管理系统 V3.7》是一款专为大型企业设计的高效权限管理系统,由C#编程语言基于.NET框架开发而成。该系统在2012年7月24日发布,其稳定性和实用性已被中国石油、中通快递等知名企业采用,并在...

    工资管理系统数据库设计报告(数据库课程设计).doc

    工资管理系统数据库设计报告是信息技术学院信息管理与信息系统专业的一份课程设计报告,旨在通过实际操作来学习和理解数据库系统的设计与实现。这份报告涵盖了多个关键阶段,包括需求分析、概念设计、逻辑设计以及...

    通用权限管理设计篇 权限管理设计

    通用权限管理设计是构建复杂应用系统的关键组成部分,其目的是实现灵活、通用且易于管理的权限控制,以适应不同用户和场景的需求。权限管理涉及到多个核心概念,包括权限、用户、角色和组,它们之间有着复杂的关系。...

    吉日嘎拉通用权限管理系统V3.7数据库

    这两个文件的结合,构成了吉日嘎拉权限管理系统的基础数据库结构。 权限管理系统的实现通常涉及以下几个关键技术点: 1. **角色与权限分配**:在吉日嘎拉系统中,用户被分配到不同的角色,每个角色拥有特定的权限...

    通用权限数据库设计

    ### 通用权限数据库设计 #### 一、设计背景与需求 在现代企业级应用系统中,尤其是基于浏览器/服务器(B/S)架构的系统,权限管理成为保障信息安全、规范操作流程的关键环节。与传统的客户端/服务器(C/S)架构...

    通用权限管理系统设计篇

    "通用权限管理系统设计篇"着重探讨了如何设计一个适用于多种场景、能够处理不同用户和角色权限的系统。在这个主题下,我们将深入理解权限管理的核心概念、设计原则以及实现策略。 一、权限管理基础 权限管理主要...

    通用企业管理系统数据库设计

    "通用企业管理系统数据库设计"聚焦于实现一个全面的权限管理解决方案,能够处理用户、角色、机构和组的多层次权限分配。这个系统的核心目标是确保数据安全,同时提供灵活的访问控制,以适应不同规模和类型的企业的...

    通用权限\通用权限管理概要设计说明书

    《通用权限管理概要设计说明书》V1.0是一份详细阐述权限管理系统的初步设计方案,旨在为系统开发提供基础架构和指导原则。本设计说明书涵盖了系统设计的目标、运行环境、网络结构以及模块化设计等多个方面。 1. **...

    Web通用权限管理的需求分析及数据库设计毕业论文.doc

    Web 通用权限管理的需求分析及数据库设计毕业论文 本文档主要探讨 Web 通用权限管理系统的需求分析及数据库设计,旨在提供一个通用的权限管理解决方案,满足不同类型的用户和组织的需求。 用户管理模块 用户管理...

    通用权限管理设计篇

    在IT行业中,权限管理是系统安全的关键...总之,通用权限管理设计是一个系统工程,需要综合考虑业务需求、安全性和扩展性。通过合理的数据库结构和关联关系,我们可以构建出一个灵活、高效且易于维护的权限管理系统。

    通用权限管理概要设计说明书

    综上所述,通用权限管理系统的概要设计需要覆盖用户、角色、权限和组织结构等多个维度,遵循一系列设计原则,并结合适当的技术选型以实现高效、安全的权限控制。在实际开发过程中,还需不断优化和调整,以适应业务...

    通用权限数据库设计1111

    总的来说,一个通用权限数据库设计应包括以下几个核心元素: 1. 权限表:定义所有可分配的权限。 2. 管理组表:组织权限相同的用户群体。 3. 人员表:存储用户信息。 4. 权限映射表:关联管理组和权限,实现权限分配...

    基于数据库的通用权限管理模块的设计与实现

    ### 基于数据库的通用权限管理模块设计与实现 #### 概述 在现代信息系统的设计与开发过程中,用户权限管理模块是不可或缺的一部分。它主要负责控制不同用户对系统资源的访问权限,确保数据安全的同时也提升了系统...

    通用权限的数据库示意图

    "通用权限的数据库示意图"通常是指一个设计用于不同场景、满足多种需求的权限管理系统在数据库层面的模型。这样的系统旨在规范用户对数据库资源的访问,防止未经授权的访问和操作,确保数据的完整性和一致性。 在...

    通用权限管理系统java权限处理及其实现思路

    为了实现这些需求,我们可以使用NoahWeb的动作编程理念,在设计阶段,系统设计人员无须考虑程序结构的设计,而是从程序流程以及数据库结构开始入手。 在数据库设计中,我们需要创建三个实体表:action表(记录权限...

    通用权限管理系统设计--数据库设计.doc

    在通用权限管理系统设计中,数据库设计是至关重要的环节,它为系统的功能实现提供数据存储的基础。根据描述,这个系统涉及到的表主要分为以下几个部分: 1. **用户表(TUser)**:用户表用于存储用户的个人信息,...

Global site tag (gtag.js) - Google Analytics