4,018
社区成员




CREATE DATABASE ConstructionDB;
use ConstructionDB;
CREATE TABLE T_user(
User_id CHAR ( 4 ) PRIMARY KEY COMMENT '用户ID',
User_name CHAR ( 16 ) COMMENT '用户姓名',
User_password CHAR ( 16 ) COMMENT '用户密码',
Dept_id CHAR ( 3 ) COMMENT '所属部门',
Telephone VARCHAR ( 16 ) COMMENT '联系电话',
Address VARCHAR ( 32 ) COMMENT '联系地址',
Handphone VARCHAR ( 16 ) COMMENT '手机号',
Usb_no VARCHAR ( 64 ) COMMENT '密码锁号',
Reserv VARCHAR ( 64 ) COMMENT '备注'
);
CREATE TABLE T_func_item(
Func_id CHAR ( 3 ) PRIMARY KEY COMMENT '功能ID',
Func_name VARCHAR ( 32 ) COMMENT '功能名称',
Reserv VARCHAR ( 64 ) COMMENT '备注'
);
CREATE TABLE T_func_role_def(
Func_role_id CHAR ( 3 ) PRIMARY KEY COMMENT '角色ID',
Func_role_name VARCHAR ( 32 ) COMMENT '角色名称',
Reserv VARCHAR ( 64 ) COMMENT '备注'
);
CREATE TABLE Realationship_1(
Func_id CHAR ( 3 ) COMMENT '功能ID',
Func_role_id CHAR ( 3 ) COMMENT '功能角色ID',
PRIMARY KEY ( Func_id, Func_role_id ),
CONSTRAINT FK_RELATION_RELATIONS_T_FUNC_I FOREIGN KEY ( Func_id ) REFERENCES T_func_item ( Func_id ),
CONSTRAINT FK_RELATION_RELATIONS_T_FUNC_R FOREIGN KEY ( Func_id ) REFERENCES T_func_role_def ( Func_role_id )
);
CREATE TABLE Realationship_2(
Func_role_id CHAR ( 3 ) COMMENT '功能角色ID',
User_id CHAR ( 4 ) COMMENT '用户ID',
PRIMARY KEY ( Func_role_id, User_id ),
CONSTRAINT FK_RELATION_RELATIONS_T_FUNC_R1 FOREIGN KEY ( Func_role_id ) REFERENCES T_func_role_def ( Func_role_id ),
CONSTRAINT FK_RELATION_RELATIONS_T_USER FOREIGN KEY ( User_id ) REFERENCES T_user ( User_id )
);
INSERT into T_user values
('01','刘德华','123','KBB','5678900','湖南长沙','13899005678','ldh123','admin');
SELECT
*
FROM
T_user
WHERE
Dept_id = 'KBB';
SELECT
f.Func_name '功能权限'
FROM
T_user u,Realationship_2 r2,Realationship_1 r1,T_func_item f
WHERE
Dept_id = '刘德华'
AND
u.User_id = r2.User_id
AND
r2.Func_role_id = r1.Func_role_id
AND
r1.Func_id = f.Func_id;
SELECT
fi.Func_name '功能权限'
FROM
T_user u,
Realationship_2 r2,
Realationship_1 r1,
T_func_item fi,
T_func_role_def fr
WHERE
u.User_id = r2.User_id
AND
r2.Func_role_id = r1.Func_role_id
AND
r1.Func_id = fi.Func_id
AND
r2.Func_role_id = fr.Func_role_id
AND
fr.Func_role_name = '投标责任人';
CREATE VIEW view_T_user AS
SELECT
User_name '姓名',User_password '密码',Dept_id '所属部门'
FROM
T_user;
delimiter $$
CREATE PROCEDURE check_func(IN user_name CHAR(16))
BEGIN
SELECT
f.Func_name '功能权限'
FROM
T_user u,Realationship_2 r2,Realationship_1 r1,T_func_item f
WHERE
Dept_id = input_name
AND
u.User_id = r2.User_id
AND
r2.Func_role_id = r1.Func_role_id
AND
r1.Func_id = f.Func_id;
END $$
delimiter;
# 创建数据库ConstructionDB
CREATE DATABASE ConstructionDB;
# 使用ConstructionDB
use ConstructionDB;
# 创建数据表操作员基本信息表
CREATE TABLE T_user(
User_id CHAR ( 4 ) PRIMARY KEY COMMENT '用户ID',
User_name CHAR ( 16 ) COMMENT '用户姓名',
User_password CHAR ( 16 ) COMMENT '用户密码',
Dept_id CHAR ( 3 ) COMMENT '所属部门',
Telephone VARCHAR ( 16 ) COMMENT '联系电话',
Address VARCHAR ( 32 ) COMMENT '联系地址',
Handphone VARCHAR ( 16 ) COMMENT '手机号',
Usb_no VARCHAR ( 64 ) COMMENT '密码锁号',
Reserv VARCHAR ( 64 ) COMMENT '备注'
);
# 创建一级功能权限定义表
CREATE TABLE T_func_item(
Func_id CHAR ( 3 ) PRIMARY KEY COMMENT '功能ID',
Func_name VARCHAR ( 32 ) COMMENT '功能名称',
Reserv VARCHAR ( 64 ) COMMENT '备注'
);
# 创建功能角色定义表
CREATE TABLE T_func_role_def(
Func_role_id CHAR ( 3 ) PRIMARY KEY COMMENT '功能ID',
Func_role_name VARCHAR ( 32 ) COMMENT '功能名称',
Reserv VARCHAR ( 64 ) COMMENT '备注'
);
# 创建关系表1
CREATE TABLE Realationship_1(
Func_id CHAR ( 3 ) COMMENT '功能ID',
Func_role_id CHAR ( 3 ) COMMENT '功能角色ID',
PRIMARY KEY ( Func_id, Func_role_id ),
CONSTRAINT FK_RELATION_RELATIONS_T_FUNC_I FOREIGN KEY ( Func_id ) REFERENCES T_func_item ( Func_id ),
CONSTRAINT FK_RELATION_RELATIONS_T_FUNC_R FOREIGN KEY ( Func_id ) REFERENCES T_func_role_def ( Func_role_id )
);
# 创建关系表2
CREATE TABLE Realationship_2(
Func_role_id CHAR ( 3 ) COMMENT '功能角色ID',
User_id CHAR ( 4 ) COMMENT '用户ID',
PRIMARY KEY ( Func_role_id, User_id ),
CONSTRAINT FK_RELATION_RELATIONS_T_FUNC_R1 FOREIGN KEY ( Func_role_id ) REFERENCES T_func_role_def ( Func_role_id ),
CONSTRAINT FK_RELATION_RELATIONS_T_USER FOREIGN KEY ( User_id ) REFERENCES T_user ( User_id )
);
# 插入数据
INSERT into T_user values
('01','刘德华','123','KBB','5678900','湖南长沙','13899005678','ldh123','admin');
# 查询出所属部门为“KBB”的操作员的基本信息;
SELECT
*
FROM
T_user
WHERE
Dept_id = 'KBB';
# 查询出姓名为“刘德华”的操作员具有哪些功能权限;
SELECT
f.Func_name '功能权限'
FROM
T_user u,Realationship_2 r2,Realationship_1 r1,T_func_item f
WHERE
Dept_id = '刘德华'
AND
u.User_id = r2.User_id
AND
r2.Func_role_id = r1.Func_role_id
AND
r1.Func_id = f.Func_id;
# 查询出“投标责任人”角色所拥有的功能;
SELECT
fi.Func_name '功能权限'
FROM
T_user u,
Realationship_2 r2,
Realationship_1 r1,
T_func_item fi,
T_func_role_def fr
WHERE
u.User_id = r2.User_id
AND
r2.Func_role_id = r1.Func_role_id
AND
r1.Func_id = fi.Func_id
AND
r2.Func_role_id = fr.Func_role_id
AND
fr.Func_role_name = '投标责任人';
# 创建视图查询操作员的姓名,密码和所属部门;
CREATE VIEW view_T_user AS
SELECT
User_name '姓名',User_password '密码',Dept_id '所属部门'
FROM
T_user;
# 创建存储过程,查询指定操作员所具有的功能权限
delimiter $$
CREATE PROCEDURE check_func(IN user_name CHAR(16))
BEGIN
SELECT
f.Func_name '功能权限'
FROM
T_user u,Realationship_2 r2,Realationship_1 r1,T_func_item f
WHERE
Dept_id = input_name
AND
u.User_id = r2.User_id
AND
r2.Func_role_id = r1.Func_role_id
AND
r1.Func_id = f.Func_id;
END $$