sql server 查询一个角色所拥有的全部权限

 -- 创建数据表
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:如果想看关系图可以私信给我
 

猜你喜欢

转载自blog.csdn.net/qq_41810514/article/details/87966688