您的位置:首页 > 数据库 > MySQL

MySql练习 多对多表练习-用户角色权限表

2017-12-16 11:55 267 查看
前言:对数据库知识回顾,创建数据库、创建表、主键约束、外键约束、表关系(多对多)。

一、表描述

一张用户表,一张角色表,一张权限表。一个用户对应多个角色,一个角色对应多个用户同时对应多个权限,一个权限可以对应多个角色。

以下为Sql语句:

-- 创建数据库
CREATE DATABASE day19hometest;

-- 切换到指定数据库
USE day19hometest;

-- 创建用户表
CREATE TABLE `user`(
uid INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20),
`password` VARCHAR(20)
);
-- 创建角色表
CREATE TABLE role(
rid INT PRIMARY KEY AUTO_INCREMENT,
rname VARCHAR(20)
);

-- 创建用户与角色关联表
CREATE TABLE user_role(
u_uid INT,
u_rid INT
);

/*
一个用户对应多个角色,一个角色对应多个用户

*/
-- 添加外键约束
ALTER TABLE user_role ADD CONSTRAINT fk_u_rid FOREIGN KEY(u_rid) REFERENCES `user`(uid);

ALTER TABLE user_role ADD CONSTRAINT fk_u_uid FOREIGN KEY(u_uid) REFERENCES role(rid);

-- 为用户表插入数据
INSERT INTO `user` VALUE
(NULL,'大家都说名字长不会被发现','ccc12345'),
(NULL,'都说名字长不会被发现','xxx12345'),
(NULL,'名字好长好像不容易被发现','zzz12345');
-- 为角色表中插入数据
INSERT INTO role VALUE
(NULL,'用户'),
(NULL,'会员用户'),
(NULL,'超级会员用户');

-- 测试关联表
INSERT INTO user_role VALUE
(1,3);-- 正确信息

INSERT INTO user_role VALUE (1,4);-- 错误信息

-- 增加权限表
CREATE TABLE privilege(
pid INT PRIMARY KEY AUTO_INCREMENT,
pdescription VARCHAR(50)
);

-- 为权限表添加数据
INSERT INTO privilege VALUE
(NULL,'普通学习资料'),
(NULL,'付费学习资料'),
(NULL,'超级会员特有付费学习资料');

-- 创建角色与权限关联表
CREATE TABLE role_pri(
r_p_rid INT,
r_p_pid INT
);
/*
一个角色
*/
-- 添加外键约束
ALTER TABLE role_pri ADD CONSTRAINT fk_r_p_rid FOREIGN KEY (r_p_rid) REFERENCES role(rid);
ALTER TABLE role_pri ADD CONSTRAINT fk_r_p_pid FOREIGN KEY (r_p_pid) REFERENCES privilege(pid);

-- 测试关联表
INSERT INTO role_pri VALUE (1,3); -- 正确信息
INSERT INT role_pei VALUE (1,4);-- 错误信息


二、架构设计图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  回顾 mysql 数据库 sql