-- 创建数据表
create table T_user
(
user_id char(4) not null PRIMARY KEY,
user_name char(16) not null,
user_passwd char(16) not null,
dept_id char(3) not null,
telephone varchar(16) not null,
address varchar(32) not null,
handphone varchar(64) not null,
usb_no varchar(64) not null,
reserve varchar(64) not null
);
create table T_func_item
(
func_id char(3) not null PRIMARY KEY,
func_name char(32) not null,
reserve varchar(64) not null
);
create table T_func_role_def
(
func_role_id char(3) not null PRIMARY KEY,
func_role_name char(32) not null,
reserve varchar(64) not null
);
create table r1
(
func_id char(3),
func_role_id char(3),
CONSTRAINT pk_r1 PRIMARY KEY (func_id,func_role_id)
);
create table r2
(
func_role_id char(3),
user_id char(4),
CONSTRAINT pk_r2 PRIMARY KEY (func_role_id,user_id)
);
-- 创建数据表间的关系及约束
--在写源代码的时候要按他们的顺序关系写,不能颠倒不然会出错
ALTER TABLE r1
ADD FOREIGN KEY (func_id)
REFERENCES T_func_item(func_id);
ALTER TABLE r1
ADD FOREIGN KEY (func_role_id)
REFERENCES T_func_role_def(func_role_id);
ALTER TABLE r2
ADD FOREIGN KEY (func_role_id)
REFERENCES T_func_role_def(func_role_id);
ALTER TABLE r2
ADD FOREIGN KEY (user_id)
REFERENCES T_user(user_id);
insert T_user values ('id01','刘德华','123','KBB','5678900','湖南长沙','1389905678','ldh123','admin')
--查询出姓名为“刘德华”的操作员具有哪些功能权限
--如果看不懂的话,可以倒着看,可能会更明白一些
select func_name
from T_func_item
where func_id in
(select func_id
from r1
where func_role_id in
(
select func_role_id
from r2
where user_id in
(select user_id
from T_user
where user_name='刘德华')))
--查询出“投标责任人”角色所拥有的功能;
select func_id
from T_func_item
where func_id in
( select func_id
from r1
where func_role_id in
(
select func_role_id
from T_func_role_def
where func_role_name ='投标责任人'))
ps:如果想看关系图可以私信给我