日期: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