关闭

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

712人阅读 评论(0) 收藏 举报

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

 

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等等情况.便于以后扩展.

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:122922次
    • 积分:2009
    • 等级:
    • 排名:第19800名
    • 原创:66篇
    • 转载:29篇
    • 译文:0篇
    • 评论:7条