用户,权限,角色表怎么设计

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用户,权限,角色表怎么设计相关的知识,希望对你有一定的参考价值。

比如我有5个角色,管理员,会员,游客,小区管理员,业联会,管理员可以操作全部,业联会我给几个模块给他管理,小区管理员在前台可以管理自己小区的内容,请问我该怎么设计。烦死了,帮帮我。

MSSQL的库
设计表:
Users 用户表 字段:userid,username,userpermission
Roles 角色表 字段:roleid,rolename,rolepermission
UserInRole 用户角色对应表 字段:userid,roleid
PermissionList 权限列表 字段:permissionid,permissionDescription,permissionGroup

权限设计:许可、禁止和未设置三种状态,Allow,Deny,Not Set

目标:
实现用户权限的定义。
首先定义角色权限,用户与角色间是多对多的关系。用户权限继承自角色权限。
情况一:用户所属的多个角色存在权限冲突时,取最小权限,即某权限角色A许可,角色B禁止,则该权限为禁止。
情况二:用户所属的角色均未对某权限进行设置时,即NotSet状态,则该权限同DENY
情况三:用户所属的角色对某权限为许可时,也可单独设置该权限为禁止。

功能:
设置用户权限:
默认情况下,用户权限继承自所属角色的权限
可单独设置某用户的权限
扩展权限
权限定义可随时增加,并可以分组。当增加权限时,默认的角色权限均为未设置状态

问题:
1、在MSSQL数据库中如何设置userpermission和rolepermission字段的字段类型?
2、如何存取用户权限?特别是当用户属于多个角色时,如何高效的设置用户权限的问题

网站专用制作,价格绝对优惠,不做网站也可以交流一下经验……
要做网站的加我122216605/541597237。
绝对让你的网站给浏览者最COOL的冲击……
参考技术A 数据元素——功能编号 (funid);功能名称(funname);功能说明(funintro)
角色(分组)表:
数据元素——角色编号(roleid);角色名称(rolename);角色说明(roleintro)
角色功能表:
数据元素——角色编号(roleid);功能编号(funid)
用户信息表:
数据元素——用户编号(userid);用户名称(username)
用户角色表:
数据元素——用户编号(userid);角色编号(roleid)

功能(模块)表:主要存储系统用户的操作功能。
角色(分组)表:存储系统使用人员扮演的角色和职位。
角色功能表:某个角色在系统中所具有的系统操作功能。
用户信息表:存储系统使用用户的信息
用户角色表:用户在使用系统时,所扮演的角色。
每个角色对应具体的功能,至少具有基本权限;每个用户至少拥有一个角色;这样很方便管理用户的权限功能。设置一个系统管理员用户,具有所有的权限,授权用户只有系统管理员,可以对用户的进行管理和用户权限的管理,对用户的权限判断,读取用户角色表取得用户的角色数据,通过角色功能表获得用户所扮演的角色所具有的系统功能。
系统由系统管理员进入进行功能的维护(添加、修改、删除),角色的维护(添加、修改、删除),用户的维护(添加、修改、删除),角色权限的维护(添加、修改、删除)、用户角色的维护(添加、修改、删除)。
参考技术B 权限设计你可以用一个编号
ADMIN 0表示超级管理员
1表示会员
2表示游客等
然后增加一个权限表
0是管理员的权限内容
1是会员的权限内容 不就OK了
一、申请自己的网站空间和域名;
二、制作自己的网站;[可以用Dreamwever2008、PS配合,也可以在硅谷动力看视频教程];
三、把自己做好的站上传上去;
四、网站的后期维护与管理;
五、可以联系我Q275423182

用户角色权限数据库设计

权限管理

权限管理,主要是人员和权限之间的关系,但是如果让人员直接和权限打交道,那么权限的赋值、权限的撤销以及权限的变动会非常的麻烦,这样引入了,角色,给角色赋权限,然后给用户分配角色。

这个设计主要涉及6张表,

用户表(用于存储用户的所有信息)

权限表(用于存储所有的权限)

角色表(用于存储所有的角色)

用户和角色的关联表(用户和角色的关联)

角色和权限的关联表(角色和权限的关联)

菜单表(里面关联了权限,主要是现实用的)

用户表

CREATE TABLE [dbo].[Users](
    [UserID] [int] IDENTITY(1,1) NOT NULL,
    [UserName] [nvarchar](50) primary key,--帐号
    [Password] [nvarchar](50) ,
    [UserDspName] [nvarchar](50) ,
    [Sex] [char](1),
    [Birthday] [datetime],
    [Phone] [nvarchar](20)  ,
    [Email] [nvarchar](100),
    [EmployeeID] [nvarchar](20) ,
    [Activity] [bit],--是否可用
    [UserType] [char](2) ,
    [Style] [nvarchar](50)
)

权限表:

CREATE TABLE [dbo].[Permission](
    [PermissionID] int identity,
    [Description] [nvarchar](50) --权限名称
)

角色表:

 

CREATE TABLE [dbo].[Roles](
    [RoleID] [int] IDENTITY,
    [Description] [nvarchar](200)--角色名称
)

 

 

用户和角色的关联表:

CREATE TABLE [dbo].[UserRoles](
    [UserID] [int] NOT NULL,--用户ID
    [RoleID] [int] not null ,--权限ID
 CONSTRAINT [PK_UserRoles] PRIMARY KEY CLUSTERED 
(
    [UserID] ASC,
    [RoleID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

角色和权限的关联表:

 

CREATE TABLE [dbo].[RolePermissions](
    [RoleID] int  NOT NULL,--角色ID
    [PermissionID]int NOT NULL,--权限ID
 CONSTRAINT [PK_RolePermissions] PRIMARY KEY CLUSTERED 
(
    [RoleID] ASC,
    [PermissionID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

 

菜单表:

CREATE TABLE [dbo].[menu](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [TextCH] [nvarchar](100)  NULL,--菜单的中文显示
    [TextEN] [nvarchar](200)  NULL,--菜单的英文名称
    [ParentID] [int] NULL,--父节点
    [orderID] [int] NULL,--同一个父节点下面的排序
    [Url] [nvarchar](200) ,--菜单对于的权限
    [PermissionID] [int] NULL,--权限ID
    [ImageUrl] [nvarchar](50) NULL--菜单图片链接
) ON [PRIMARY]

以上是关于用户,权限,角色表怎么设计的主要内容,如果未能解决你的问题,请参考以下文章

设计用户权限表

用户角色权限数据库设计

JavaWeb 角色权限控制——数据库设计

模块设计 - 权限管理

权限系统设计五张表

经典角色权限系统设计五张表及拓展应用