一种基于角色的安全性的数据表设计

将不同的用户赋予不同角色,从而具有不同权限,是对用户进行分类管理的一个办法.而由此基于数据库的实现可参考如下实例.

 

1.users用户表

USE [数据库]
GO
/****** Object:  Table [dbo].[Users]    Script Date: 05/17/2006 15:18:41 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Users](
 [UserId] [nvarchar](63) COLLATE Chinese_PRC_CI_AS NOT NULL,
 [Password] [nvarchar](63) COLLATE Chinese_PRC_CI_AS NOT NULL,
 [RoleId] [int] NOT NULL,
 CONSTRAINT [Users_PK] PRIMARY KEY CLUSTERED
(
 [UserId] ASC
) ON [PRIMARY]
) ON [PRIMARY]

GO
USE [Pkc_Demo]
GO
ALTER TABLE [dbo].[Users]  WITH CHECK ADD  CONSTRAINT [Roles_Users_FK1] FOREIGN KEY([RoleId])
REFERENCES [dbo].[Roles] ([RoleId])

2.roles数据表

USE [数据库]
GO
/****** Object:  Table [dbo].[Roles]    Script Date: 05/17/2006 15:21:56 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Roles](
 [RoleId] [int] NOT NULL,
 [RoleName] [nvarchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
 [Description] [nvarchar](127) COLLATE Chinese_PRC_CI_AS NULL,
 CONSTRAINT [Roles_PK] PRIMARY KEY CLUSTERED
(
 [RoleId] ASC
) ON [PRIMARY]
) ON [PRIMARY]

3.一个roles表的实例

1系统管理员帐户系统管理员帐户
5银行查询帐户银行查询帐户
10银行报告账户银行报告账户
20学校报告账户 

4.ID为什么是1,5,10,20我想这可能主要是为了以后增加方面,比如对于系统管理员账户可以生成相关的有多种权限的管理员,可以由1,2,3,....等等ID组成.如果对于其它10可以生成11,12,13,等帐户这样又可进行分组,而且便于编程.

所以推荐采用,1 ,10,20,30,40作为角色的ID的分组,如进一步细分就成了11,21等等情况.便于以后扩展.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值