日期:2014-05-16 浏览次数:20547 次
以角色、用户、权限、模块为例。理解他们之间的关系。
一,目的
--针对大型企业中不同用户登录系统时,所显示的模块也是根据该用户的权限决定。
--每个用户含有不同角色,同理一个角色可以被多个用户共有
--每个用户,含有的角色的权限并不一定要相同,所以不同用户相同角色的权限可以完全不同
二,模型结构
--角色表rose
roseid? number(14)
rosename? varchar2(50)
--用户表user
userid number(14)
username? varchar2(50)
--角色与用户中间表rose2user(角色与用户之间是多对多的关系,这里通过中间表,来建立)
rose2userid? number(14)
roseid number(14)
userid number(14)
--权限表rights
rightid number(14)
rightname varchar2(50)
righturl varchar2(50)
--用户与权限的中间表
user2rightid number(14)
userid number(14)
rightid number(14)
--模块表module(模块与权限之间是一对多的关系)
moduleid number(14)
modulename varchar2(50)
moduleurl varchar2(50)
rightid number(14)
三,数据库表结构(这里用的是mysql环境下的表)
---创建数据库
create database liucg default charset GBK;
use liucg;
set names gbk;
---角色表
create table rose(
roseid int(14) primary key,
rosename varchar(50) not null unique
);
---用户表
create table user(
userid int(14) primary key,
username varchar(50) not null
)
DEFAULT CHARSET=gbk;
---角色与用户中间表
create table rose2user(
r2uid int(14) primary key,
roseid int(14),
userid int(14)
);
alter table rose2user add constraint rosefkrose2user foreign key(roseid) references rose(roseid);
alter table rose2user add constraint userfkrose2user foreign key(userid) references user(userid);
---权限表
create table qright(
rightid int(14) primary key,
rightname varchar(50) not null,
righturl varchar(200) not null default'http://www.baicu.com'
);
---权限与用户中间表
create table user2right(
u2rid int(14) primary key,
userid int(14),
rightid int(14)
);
alter table user2right add constraint userfkuser2right foreign key(userid) references user(userid);
alter table user2right add constraint rightfkuser2right foreign key(userid) references qright(rightid);
---模块表
create table module(
moduleid int(14),
modulename varchar(50) not null,
moduleurl varchar(200) not null default'http:\\www.google.com',
rightid int(14)
);
alter table module add constraint modulefkright foreign key(rightid) references qright(rightid);
四,插入数据
-- 管理员表数据
insert into user values(1,'张三');
insert into user values(2,'李四');
insert into user values(3,'王五');
insert into user values(4,'钱六');
insert into user values(5,'赵大');
insert into user values(6,'孙二');
insert into user values(7,'李八');
insert into user values(8,'周五');
insert into user values(9,'吴二');
insert into user values(10,'郑久');
insert into user values(11,'冯三');
insert into user values(12,'楚六');
commit;
-- 角色表数据
insert into rose values(1,'管理员');
insert into rose values(2,'财务总监');
insert into rose values(3,'人事总监');
insert into rose values(4,'审计总监');
insert into rose values(5,'办公室秘书');
insert into rose values(6,'普通员工');
commit;
---角色与用户中间表
insert into rose2user(r2uid,roseid,userid) values(1,1,5);
insert into rose2user(r2uid,roseid,userid) values(2,2,4);
insert into rose2user(r2uid,roseid,userid) values(3,3,3);
insert into rose2user(r2uid,roseid,userid) values(4,4,1);
insert into rose2user(r2uid,roseid,userid) values(5,5,12);
insert into rose2user(r2uid,roseid,userid) values(6,6,11);
insert into rose2user(r2uid,roseid,userid) values(7,6,10);
insert into rose2user(r2uid,roseid,userid) values(8,5,9);
insert into rose2user(r2uid,roseid,userid) values(9,4,8);
insert into rose2user(r2uid,roseid,userid) values(10,3,7);
insert into rose2user(r2uid,roseid,userid) values(11,3,6);
insert into rose2user(r2uid,roseid,userid) values(12,2,5);
insert into rose2user(r2uid,roseid,userid) values(13,1,4);
insert into rose2user(r2uid,roseid,userid) values(14,2,3);
insert into rose2user(r2uid,roseid,userid) values(15,4,2);
insert into rose2user(r2u