用户、角色、权限数据库设计
2015-09-07 13:50
609 查看
分类: Linux
权限管理
权限管理,主要是人员和权限之间的关系,但是如果让人员直接和权限打交道,那么权限的赋值、权限的撤销以及权限的变动会非常的麻烦,这样引入了,角色,给角色赋权限,然后给用户分配角色。
这个设计主要涉及6张表,
用户表,(用于存储用户的所有信息)
权限表,(用于存储所有的权限)
角色表,(用于存储所有的角色)
用户和角色的关联表,(用户和角色的关联)
角色和权限的关联表,(角色和权限的关联)
菜单表,(里面关联了权限,主要是现实用的)
用户表
![](http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
代码
权限表:
角色表:
用户和角色的关联表:
![](http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
代码
角色和权限的关联表:
![](http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
代码
菜单表:
![](http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
代码
权限管理
权限管理,主要是人员和权限之间的关系,但是如果让人员直接和权限打交道,那么权限的赋值、权限的撤销以及权限的变动会非常的麻烦,这样引入了,角色,给角色赋权限,然后给用户分配角色。
这个设计主要涉及6张表,
用户表,(用于存储用户的所有信息)
权限表,(用于存储所有的权限)
角色表,(用于存储所有的角色)
用户和角色的关联表,(用户和角色的关联)
角色和权限的关联表,(角色和权限的关联)
菜单表,(里面关联了权限,主要是现实用的)
用户表
![](http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
代码
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)--角色名称 )
用户和角色的关联表:
![](http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
代码
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]
角色和权限的关联表:
![](http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
代码
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]
菜单表:
![](http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
代码
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,--同一个父节点下面的排序 " target=_blank> [nvarchar](200) ,--菜单对于的权限
[PermissionID] [int] NULL,--权限ID
[ImageUrl] [nvarchar](50) NULL--菜单图片链接
) ON [PRIMARY][/code]
以上便是所有的数据库结构,代码正在实现中;
最后权限的最终呈现和表现是通过菜单来实现的,个人感觉粒度太大了(最小是页面),现在我想知道能否将权限加到某一个按钮上面,请大家指点
[url=http://blog.itpub.net/16436858/viewspace-627049/#][url=http://blog.itpub.net/16436858/viewspace-627049/#]
相关文章推荐
- ORACLE 全局索引和本地索引
- PLSQL Developer使用技巧整理
- oracle客户端精简绿色版-环境变量配置
- Oracle中获取执行计划的几种方法分析
- redis-3.0.3集群功能试用
- Oracle多表连接优化和效率解读
- 如何使每条sql语句都变化定义的变量
- SQL Server Join的使用
- zabbix监控mysql
- Sqlserver和Oracle上的定时任务创建
- ORACLE 创建作业JOB例子
- Hitting the 2100 parameter limit (SQL Server) when using Contains()
- MySQL数据库的一些操作
- sql语句查询txt 文件
- 防止SQL注入
- Mysqldump --single-transaction 选项解析
- MYSQL常用集群方案
- sqlserver锁表查看
- Mysql数据库命令大全
- mysql触发器编写