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

来源:互联网 发布:ubuntu vmdk 下载 编辑:程序博客网 时间:2024/06/05 11:46

前言:对数据库知识回顾,创建数据库、创建表、主键约束、外键约束、表关系(多对多)。

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

以下为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);-- 错误信息

二、架构设计图
这里写图片描述

原创粉丝点击