基于角色的权限访问控制数据库设计 - cychai的专栏 - CSDN博客

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于角色的权限访问控制数据库设计- cychai的专栏-

CSDN博客

对于权限、角色、组、用户之间的关系,四者之间均是多对多的关系:

设计的原则:数据是数据,关系是关系。

1. 要求:

用户、客户、员工,这三者是一种继承的关系。分配角色,赋予不同的权限。

下面的设计并没有引入“组”的概念,只是涉及用户、权限、角色三者。

2. 数据库设计中实体表:

1) 用户表user

2) 角色role

3) 权限permission

3. 关系表:

1) 用户角色表

userRole

2) 角色权限表

rolePermission

下面是使用PowerDesigner设计的PDM图:

主外键关系命名:

Fk_parent_<主键>_child_<外键>

表关系建立原则:

Table A 字段:aid(主键)

Table B 字段:bid(主键)

1. 一对一

Table A

Table B 分别设置各自的主键

2. 一对多(A对B:1-n)

Table B中设置外键aid

3. 多对多

必须设置一张单独的关系表

Table C 中设置外键aid bid

下面是使用PowerDesigner设计后生成的SQL Server 2005脚本文件:

/*=========================================== ===================*/

/* DBMS name: Microsoft SQL Server 2005

*/

/* Author: ChaiChunyan

/* Created on: 2008-11-11 20:28:05

*/

/*=========================================== ===================*/

if exists (select 1

from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')

where r.fkeyid = object_id('RolePermission') and

= 'FK_ROLEPERM_FK_PERMIS_PERMISSI') alter table RolePermission

drop constraint

FK_ROLEPERM_FK_PERMIS_PERMISSI

go

if exists (select 1

from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')

where r.fkeyid = object_id('RolePermission') and

= 'FK_ROLEPERM_FK_ROLE_R_ROLE')

alter table RolePermission

drop constraint FK_ROLEPERM_FK_ROLE_R_ROLE go

if exists (select 1

from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')

where r.fkeyid = object_id('customer') and = 'FK_CUSTOMER_FK_USER_I_USER')

alter table customer

drop constraint FK_CUSTOMER_FK_USER_I_USER go

if exists (select 1

from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')

where r.fkeyid = object_id('employee') and = 'FK_EMPLOYEE_FK_USER_I_USER')

alter table employee

drop constraint FK_EMPLOYEE_FK_USER_I_USER go

if exists (select 1

from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')

where r.fkeyid = object_id('guest') and =

'FK_GUEST_FK_USER_I_USER')

alter table guest

drop constraint FK_GUEST_FK_USER_I_USER

go

if exists (select 1

from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')

where r.fkeyid = object_id('userRole') and =

相关文档
最新文档