我的上两篇博客总结了一下不使用外键的优缺点
但是我还没试过,今天尝试了一下,用难一点的多对多关系实验
一:工具:
springboot
mybatis
mysql
二:材料:
五张表:
user--用户表
role--角色表
permission--权限表
user-role表
permission-role表
其中,user-role表和permission-role表是意义上的中间表,就是没有外键的,其他三张是基本表
sql语句:
1 /*
2 Navicat MySQL Data Transfer3
4 Source Server : root5 Source Server Version : 505496 Source Host : localhost:33067 Source Database : shiro8
9 Target Server Type : MYSQL10 Target Server Version : 5054911 File Encoding : 6500112
13 Date: 2018-05-30 14:42:0614 */
15
16 SET FOREIGN_KEY_CHECKS=0;17
18 ------------------------------
19 --Table structure for permission
20 ------------------------------
21 DROP TABLE IF EXISTS`permission`;22 CREATE TABLE`permission` (23 `pid` int(11) NOT NULLAUTO_INCREMENT,24 `name` varchar(255) NOT NULL DEFAULT '',25 `url` varchar(255) DEFAULT '',26 PRIMARY KEY(`pid`)27 ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;28
29 ------------------------------
30 --Records of permission
31 ------------------------------
32 INSERT INTO `permission` VALUES ('1', 'add', '');33 INSERT INTO `permission` VALUES ('2', 'delete', '');34 INSERT INTO `permission` VALUES ('3', 'edit', '');35 INSERT INTO `permission` VALUES ('4', 'query', '');36
37 ------------------------------
38 --Table structure for permission_role
39 ------------------------------
40 DROP TABLE IF EXISTS`permission_role`;41 CREATE TABLE`permission_role` (42 `rid` int(11) NOT NULL,43 `pid` int(11) NOT NULL,44 KEY`idx_rid` (`rid`),45 KEY`idx_pid` (`pid`)46 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;47
48 ------------------------------
49 --Records of permission_role
50 ------------------------------
51 INSERT INTO `permission_role` VALUES ('1', '1');52 INSERT INTO `permission_role` VALUES ('1', '2');53 INSERT INTO `permission_role` VALUES (