【自然框架】之通用权限(四):角色表组

      继续,这是第四章了。这里涉及到了资源方面的,不过有点绕,所以这里先介绍一下表结构,在后面的章节里面,再举例子详细介绍。

通用权限想要写的文章目录:(这是第四章)

1、 简介、数据库的总体结构 2、 介绍人员表组 3、 介绍组织结构表组 4、 介绍角色表组 5、 介绍“项目自我描述表组” 6、 权限到节点 7、 权限到按钮 8、 权限到列表(表单、查询) 9、 权限的验证 10、 资源方面的权限 11、 角色管理的程序(给客户用的) 12、 权限下放 13、 个性化设置 A、、 【自然框架】之通用权限(外传):杂谈

角色表组

      目前有七个表:(有四个是这两天才加上的)       一、Role_Roles ,记录角色信息,比如角色名称、角色描述、角色拥有的节点等。这个表我也打算可以做成n级分类的形式,因为如果角色多了(比如几百个),不分类的话,看起来就比较乱,但是如何来分类我又没有想好。当然对于一些简单的情况,也是可以不分类的。

      这个角色表Role_Roles记录的是操作方面的,并不包含资源方面。这个角色分为两种:正向角色、拒绝角色。

      1、正向角色:       记录可以做的权限,就是记录下来可以做哪些操作,正向角色不能继承,不能关联,但是可以组合。如果一个人拥有多个正向角色,那么只要有一个角色里面允许,那么他就可以做这个操作。

      2、拒绝角色:       和正向角色相反,他记录的是不可以做的操作。拒绝角色必须“继承”(或者叫做关联)一个或多个正向角色。拒绝角色不能继承拒绝角色。如果一个人拥有了一个拒绝角色,那么拒绝角色里面不允许做的操作就绝对不可以做,不管他拥有的其他的正向角色是如何规定的。

      至于给人员分配角色的时候如何来具体的区分,还没有太完善。

      3、“FunctionIDs”:角色拥有的节点的字段。这个字段的内容是“1,2,3,4”的形式。对于正向角色来说这里记录的就是可以操作的节点,而对于拒绝角色来说,这里记录的就是不可以操作的节点。 这个也是“权限到节点”的关键字段。

字段名

中文名

字段类型

大小

默认值

是否空

说明

RoleID

角色

int

4

1

0

主键

RoleName

角色名称

nvarchar

50

_

0

角色名称

RoleDescribe

角色描述

nvarchar

50

_

0

角色描述

RoleKind

角色类型

int

4

1

0

1:正向角色;2:拒绝角色

LinkRoleIDs

关联角色

nvarchar

50

_

0

拒绝角色有效。拒绝角色可以关联多个正向角色,但是不能关联拒绝角色。正向角色不能关联。

ParentID

父节点ID

int

4

1

0

父节点ID。为n级分类做预留

ParentIDPath

父节点ID的路径

nvarchar

30

_

0

父节点ID的路径。为n级分类做预留

RoleLevel

角色层数

int

4

1

0

第几级的角色

Sort

排序

int

4

1

0

序号

FunctionIDs

节点

nvarchar

500

_

0

角色拥有的功能节点。1,2,3的形式

AddedDate

添加日期

smalldatetime

4

GetDate()

0

记录添加日期

AddedUserID

添加人

int

4

1

0

记录哪个用户添加的

UpdatedDate

最后修改日期

smalldatetime

4

GetDate()

0

记录最后修改日期

UpdatedUserID

最后修改人

int

4

1

0

记录哪个用户最后修改的

      二、Role_RoleButton ,这个表要记录一个节点里的按钮的权限,就是说一个角色拥有的节点里的按钮的权限。如果他和正向角色关联,则说明可以使用这个按钮,如果和拒绝角色关联则说明不能使用这个节点。

字段名

中文名

字段类型

大小

默认值

是否空

说明

RoleID

角色

int

4

1

0

主键

FunctionID

节点

int

4

1

0

外键

ButtonIDs

人员ID

nvarchar

200

_

0

外键

      三、Role_RoleColumn,同上,这个表要记录一个角色拥有的节点里的列表、表单或者查询的字段的权限。如果粒度不需要做得这么细的话,那么这个表就可以省略了。 同样如果他和正向角色关联,则说明可以使用这些字段,如果和拒绝角色关联则说明不能使用这写字段。

字段名

中文名

字段类型

大小

默认值

是否空

说明

RoleID

角色

int

4

1

0

联合主键

FunctionID

节点

int

4

1

0

联合主键。外键

Kind

类型

int

4

1

0

1:列表;2:表单;3:查询

ColumnIDs

字段ID

nvarchar

200

_

0

外键

      四、Role_RoleUser,角色里的用户,角色和用户是多对多的关系,即一个人可以有多个角色,一个角色可以有多个用户,角色和UserID关联,但是也要加上PersonID的信息。 一个人可以拥有多个正向角色,也可以拥有多个拒绝角色。拒绝角色优先,只要拒绝了那么就不可以使用。

字段名

中文名

字段类型

大小

默认值

是否空

说明

RoleUserID

编号

int

4

1

0

主键

RoleID

角色

int

4

1

0

外键

UserID

用户

int

4

1

0

外键。角色里面拥有的账号ID

PersonID

人员

int

4

1

0

外键。角色里面拥有的用户ID

      五、Role_ResourceListCase,“记录列表”的资源过滤方案,就是记录过滤条件,即SQL语句里面的Where后面的查询条件。这个是给GridView级别的控件准备的,在自然架构里面可以给QuickPager的查询条件的属性赋值。这样就可以实现过滤的效果。这个只有“正向”没有“拒绝”。角色和功能节点起到“联合主键”的功能,一个节点可以有多个方案以供选择。但是一个角色和节点的组合只能选择一个方法。

字段名

中文名

字段类型

大小

默认值

是否空

说明

ListCaseID

编号

int

4

1

0

主键

FunctionID

关联节点

int

4

1

0

外键。0:不限制节点;其他:有效的节点

ResourceName

资源角色名称

nvarchar

50

_

0

资源角色名称

ResourceDescribe

资源角色描述

nvarchar

50

_

0

资源角色描述

SQL

过滤条件

nvarchar

200

_

0

SQL语句里的where后面的查询条件

ParentID

父节点ID

int

4

1

0

父节点ID。为n级分类做预留

ParentIDPath

父节点ID的路径

nvarchar

30

_

0

父节点ID的路径。为n级分类做预留

ResourceLevel

资源角色层数

int

4

1

0

第几级的角色

Sort

排序

int

4

1

0

序号

AddedDate

添加日期

smalldatetime

4

GetDate()

0

记录添加日期

AddedUserID

添加人

int

4

1

0

记录哪个用户添加的

UpdatedDate

最后修改日期

smalldatetime

4

GetDate()

0

记录最后修改日期

UpdatedUserID

最后修改人

int

4

1

0

记录哪个用户最后修改的

      六、Role_ResourceControlCase ,控件的资源过滤方案,就是记录过滤条件,即SQL语句里面的Where后面的查询条件。这个是给下拉列表框级别的控件准备的。通过这里的条件可以达到过滤数据的效果。同样,这个也有“正向”没有“拒绝”。  1、一个控件(比如下拉列表框)可以有多个方案,也可以不使用方案,即显示全部数据。  2、一个资源方案只能给一个控件使用。  3、一个功能节点里面有查询和表单,而一个表单(查询)里面有可能有多个下拉列表框。

字段名

中文名

字段类型

大小

默认值

是否空

说明

ControlCaseID

编号

int

4

1

0

主键

ColumnID

关联控件

int

4

1

0

外键。关联的控件,即字段

ResourceName

资源角色名称

nvarchar

50

_

0

资源角色名称

ResourceDescribe

资源角色描述

nvarchar

50

_

0

资源角色描述

SQL

过滤条件

nvarchar

200

_

0

SQL语句里的where后面的查询条件

AddedDate

添加日期

smalldatetime

4

GetDate()

0

记录添加日期

AddedUserID

添加人

int

4

1

0

记录哪个用户添加的

UpdatedDate

最后修改日期

smalldatetime

4

GetDate()

0

记录最后修改日期

UpdatedUserID

最后修改人

int

4

1

0

记录哪个用户最后修改的

      七、Role_RoleResource,角色、节点、资源方案的关系。 这是一个关联表,把角色、和资源方案关联起来,由于一个角色里面会有多个功能节点,一个功能节点可能有多种方案(但是只能选一个),有一个表单、有一个查询,而表单和查询里面会有多个下拉列表框这一类的控件, 所以在关联的时候是角色和功能节点做联合主键的作用。好像没说明白,暂时先这样吧,以后我举几个例子就好办了。

字段名

中文名

字段类型

大小

默认值

是否空

说明

RoleResourceID

编号

int

4

1

0

主键

RoleID

角色

int

4

1

0

外键

FunctionID

节点

int

4

1

0

外键

ListCaseID

列表过滤方案

int

4

1

0

外键,给分页控件的查询条件用

ControlCaseID

控件过滤方案

nvarchar

200

_

0

1,2,3的形式,下拉列表框级别的控件用

      角色表组里面涉及到了“FunctionIDs”、“ButtonIDs”、“ColumnIDs”三个字段,这三个字段就是“项目描述”里面的,“FunctionIDs”即功能节点的ID,“ButtonIDs”即功能按钮(比如添加、修改、删除等)的ID,“ColumnIDs”即字段的ID,也可以说是控件ID,因为一个字段都可以对应一个控件。可能您看着有点晕,不要着急,下一章写完了,您就不会晕了。

数据库说明文档已经更新,请到这里下载:http://www.cnblogs.com/jyk/archive/2009/06/06/1497616.html

希望大家多提宝贵意见 ,谢谢!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯云数据库(TencentDB)

【腾讯云CDB】如何快速删除InnoDB中的大表

在使用MySQL时,如果有大表的存储引擎是InnoDB,并且系统参数innodb_file_per_table设置为1,即每个文件对应一个独立的表空间,当对这些...

6401
来自专栏Albert陈凯

2018-11-23 当我们输入一条 SQL 查询语句时,发生了什么?

我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题。同样,对于 MySQL 的学习也是这样。平时我们使用数据库,看...

1655
来自专栏烂笔头

Django 1.10中文文档-第一个应用Part2-模型和管理站点

目录[-] 本教程继续Part1。我们将设置数据库,创建您的第一个模型,并快速介绍Django的自动生成的管理网站。 数据库设置 现在,编辑mysite/s...

3686
来自专栏我的博客

TP入门第十一天

1、数据库视图 视图通常是指数据库的视图,视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储...

3606
来自专栏小俊博客

真正完美解决wordpress文章ID不连续问题

WordPress默认情况下发布的文章ID不是连续的,因为自动草稿、文章修订版、页面、菜单、媒体等功能都要占用ID,所以使得ID不连续。百度了一圈,居然有人给出...

1801
来自专栏腾讯数据库技术

如何快速删除InnoDB中的大表?

2263
来自专栏云计算教程系列

如何在Ubuntu 18.04上安装带有LAMP的WordPress

WordPress是互联网上最受欢迎的CMS(内容管理系统)。它允许您使用PHP在MySQL后端上设置博客和网站。WordPress已经被大量采用,是一个快速启...

3083
来自专栏horstxu的博客

PHP Laravel框架中关于db migration的一个无解深坑

PHP Laravel框架提供了db migration的功能,用代码来管理数据库。

5926
来自专栏Samego开发资源

Thinkphp3.2多语言配置

1945
来自专栏Java呓语

第7章、备份与恢复

默认情况下mysqldump导出的是标准的SQL语法,因此你可以使用标准输出写入文件。

832

扫码关注云+社区

领取腾讯云代金券