建设工程监管信息系统的系统权限管理子模块

一、概要

作为《建设工程监管信息系统》项目开发组的程序员,按要求完成:
数据库的创建;
数据表的创建;
数据的操作。

二、实施步骤和内容

《系统权限管理》子模块的E-R图如图2.1 所示,逻辑数据模型如图2.2 所示,物理数据模型如图2.3所示,数据表字段名定义见表2.3。请按以下设计完成数据库创建、数据表创建和数据操作任务:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、代码

-- 创建用户表
CREATE TABLE T_user(
	User_id CHAR(4) NOT NULL COMMENT '用户id,主键',
	User_name CHAR(16) NOT NULL COMMENT'用户姓名',
	User_passwd CHAR(16) NOT NULL COMMENT'用户密码',
	Dept_id CHAR(3) NOT NULL COMMENT'所属部门',
	Telephone VARCHAR(16) COMMENT '联系电话',
	Address VARCHAR(32) COMMENT '联系地址',
	Handphone VARCHAR(16) COMMENT '手机号',
	Usb_no VARCHAR(64) NOT NULL COMMENT '密码锁号',
	Reserve VARCHAR(64) COMMENT '备注',
	PRIMARY KEY(User_id)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
 


-- 创建功能角色定义表
CREATE TABLE T_func_role_def(
	Func_role_id CHAR(3) NOT NULL COMMENT '功能角色id,主键',
	Func_role_name VARCHAR(32) NOT NULL COMMENT '角色名称',
	Reserve VARCHAR(64) COMMENT '备注',
	PRIMARY KEY(Func_role_id)
)ENGINE=INNODB DEFAULT CHARSET=utf8;

-- 创建一级功能权限表
CREATE TABLE T_func_item(
	Func_id CHAR(3) NOT NULL COMMENT '功能id,主键',
	Func_name VARCHAR(32) NOT NULL COMMENT '功能名称',
	Reserve VARCHAR(64) COMMENT '备注',
	PRIMARY KEY(Func_id)
)ENGINE=INNODB DEFAULT CHARSET=utf8;

-- 通过物理数据模型,再创建两张表,便于表跟表之间的关系

-- 用户---角色关联表 T_User_Role
CREATE TABLE T_User_Role(
	User_id CHAR(4) NOT NULL COMMENT '用户id',
	Func_role_id CHAR(3) NOT NULL COMMENT '角色id',
	PRIMARY KEY(User_id,Func_role_id) COMMENT '复合主键'
)ENGINE=INNODB DEFAULT CHARSET=utf8;

-- 角色----权限关联表T_Role_Func
CREATE TABLE T_Role_Func(
	Func_id CHAR(3) NOT NULL COMMENT '功能id',
	Func_role_id CHAR(3) NOT NULL COMMENT '角色id',
	PRIMARY KEY(Func_id,Func_role_id) COMMENT '复合主键'
)ENGINE=INNODB DEFAULT CHARSET=utf8;

-- 向T_user表插入数据
INSERT INTO T_user VALUES('id01','刘德华','123','KBB','5678900','湖南长沙','12345678963','ldh123','admin')
INSERT INTO T_user VALUES('id02','刘张三','123','CBB','5954900','湖南长沙','12398748963','lzs123','commom')

-- 向T_func_role_def表插入数据
INSERT INTO T_func_role_def VALUES('001','管理员','admin')
INSERT INTO T_func_role_def VALUES('002','普通角色','common')

-- 向T_func_item表插入数据
INSERT INTO T_func_item VALUES('1','增删改查','所有权限')
INSERT INTO T_func_item VALUES('2','查','查询权限')

-- 向`t_user_role`表插入数据
INSERT INTO T_user_role VALUES('id01','001');
INSERT INTO T_user_role VALUES('id02','002');

-- 向`t_role_func`表插入数据
INSERT INTO T_role_func VALUES('1','001');
INSERT INTO T_role_func VALUES('2','002');


-- 查询出所属部门为“KBB”的操作员的基本信息;
SELECT * FROM T_user WHERE Dept_id='KBB'

-- 查询出姓名为“刘德华”的操作员具有哪些功能权限;
SELECT Func_name FROM T_func_item WHERE Func_id = (
SELECT Func_id FROM T_role_func WHERE Func_role_id = (
SELECT Func_role_id FROM T_user_role WHERE User_id = (SELECT User_id FROM T_user WHERE User_name='刘德华')))

-- 查询出“普通角色”角色所拥有的功能;
SELECT Func_name FROM T_func_item WHERE Func_id = (
SELECT Func_id FROM T_role_func WHERE Func_role_id = (
SELECT Func_role_id FROM T_func_role_def WHERE Func_role_name='普通角色'))

-- 编写视图查询用户的姓名,密码和所属部门;
CREATE VIEW vw_userinfo
AS
SELECT User_name,User_passwd,Dept_id FROM T_user

SELECT * FROM vw_userinfo

-- 写存储过程,查询指定用户所具有的功能权限。
DELIMITER $$
CREATE PROCEDURE prcUserFunc(IN username CHAR(16),OUT result CHAR(16))
BEGIN
	SELECT Func_name FROM T_func_item WHERE Func_id = (
	SELECT Func_id FROM T_role_func WHERE Func_role_id = (
	SELECT Func_role_id FROM T_user_role WHERE User_id = (SELECT User_id FROM T_user WHERE User_name=username)));
END $$
DELIMITER ;

SET @func=NULL
CALL prcUserFunc('刘张三',@func)

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值