权限管理数据库设计

 

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

一、用户表

用户表是肯定需要的,并且在用户表中需要有个唯一标识,可以是主键,在多主键的情况下可以加个自增列或者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的外键

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