日期:2014-05-16  浏览次数:20489 次

数据库权限设计学习笔记

数据库权限设计


用户需求
用有用户/角色可以动态分配
所有系统菜单的权限
所有权限基于角色来进行划分
用户可拥有多个解色
系统菜单可以动态修改


uml建表,导出sql语句
/*==============================================================*/
/* DBMS name: MySQL 5.0 */
/* Created on: 2012-11-7 19:20:19 */
/*==============================================================*/




drop table if exists t_menu_privilege;


drop table if exists t_privilege;


drop table if exists t_role;


drop table if exists t_sys_menu;


drop table if exists t_user;


drop table if exists t_user_role;


/*==============================================================*/
/* Table: t_menu_privilege */
/*==============================================================*/
create table t_menu_privilege
(
pkid numeric not null,
roleid varchar(16),
menuid numeric(16),
userid varchar(16),
privliegeid char(3),
primary key (pkid)
);


/*==============================================================*/
/* Table: t_privilege */
/*==============================================================*/
create table t_privilege
(
privliegeid char(3) not null,
privilegetype varchar(8),
primary key (privliegeid)
);


/*==============================================================*/
/* Table: t_role */
/*==============================================================*/
create table t_role
(
roleid varchar(16) not null,
roledescr varchar(32),
primary key (roleid)
);


/*==============================================================*/
/* Table: t_sys_menu */
/*==============================================================*/
create table t_sys_menu
(
menuid numeric(16) not null,
menudescr varchar(32),
menuurl varchar(255),
menupid varchar(16),
primary key (menuid)
);


/*==============================================================*/
/* Table: t_user */
/*==============================================================*/
create table t_user
(
userid varchar(16) not null,
password char(8),
username varchar(12),
primary key (userid)
);


/*==============================================================*/
/* Table: t_user_role */
/*==============================================================*/
create table t_user_role
(
userid varchar(16) not null,
roleid varchar(16) not null,
primary key (userid, roleid)
);


alter table t_menu_privilege add constraint FK_fk_menu_to_priv foreign key


(menuid)
references t_sys_menu (menuid) on delete restrict on update


restrict;


alter table t_menu_privilege add constraint FK_fk_privilege_typ_to_priv


foreign key (privliegeid)
references t_privilege (privliegeid) on delete restrict on update


restrict;


alter table t_menu_privilege add constraint FK_fk_role_to_priv foreign key


(userid, roleid)
references t_user_role (userid, roleid) on delete restrict on update


restrict;


alter table t_user_role add constraint FK_fk_role_id foreign key (roleid)
references t_role (roleid) on delete restrict on update restrict;


alter table t_user_role add constraint FK_fk_user_id foreign key (userid)
references t_user (userid) on delete restrict on update restrict;




添加表数据


/*插入数据*/
INSERT INTO Privilege_sys.t_user (userid,PASSWORD,username) VALUES


(1,