本想着把前端脚手架run起来了,然后就可以借着登录来捋一下前后端交互的过程。但是后端导入JPA的时候就发现了,还没有数据库。
既然是本着学习的目的,那咱也不想只在后端写死返回的数据,要做就做全套。
一、mysql
1.安装
数据库我在本地装的是mysql-8.0.21-winx64,下载地址:
怎么安装就不表了,网上都有。考虑到懒人童鞋,教程我也放这了:
但是当我在本地用Navicat连接数据库时,发现有报错:
Authentication plugin 'caching_sha2_password' cannot be loaded。
如果你也遇到了,去重置密码然后刷新下权限就好了,解决办法也附上:
二、建库
两行命令的事情:
DROP DATABASE IF EXISTS my_platform; CREATE DATABASE my_platform DEFAULT CHARACTER SET utf8;
三、建表
建表才是重头戏。
从目前我的需求来看,需要有4张表:用户表、项目表、mock接口表、以及各mock接口下的配置表。
那平常测试时候经常听到的“一对多”、“多对一”这时候要怎么分析呢?
1.表关系分析
因为功能实在是很简单,所以也不用怎么分析(行就行,不行就先这样,哈哈):
- 一个用户可以有多个项目
- 一个项目可以有多个mock接口
- 一个mock接口又可以有多个自定义返回的配置
2.建表
因为表和表之间有依赖关系,所以在建表过程中,要设置外键约束。
通常的话,先建立被外键指向的表,比如用户表,然后是项目表、mock接口表、配置表。
用户表
#用户表 CREATE TABLE user ( id int(11) NOT NULL AUTO_INCREMENT, username varchar(255) DEFAULT NULL, password varchar(255) DEFAULT NULL, createTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id) )ENGINE=InnoDB DEFAULT CHARSET=utf8;
项目表
这里就有外键约束了。
#项目表 CREATE TABLE project ( id int(11) NOT NULL AUTO_INCREMENT, uid int(11) DEFAULT NULL, projectName varchar(255) DEFAULT NULL, description varchar(255) DEFAULT NULL; createUser varchar(255) DEFAULT NULL, createTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), #这里就是外键约束了,project表中的uid指向user表里的id CONSTRAINT fk_project_user FOREIGN KEY (uid) REFERENCES user (id) )ENGINE=InnoDB DEFAULT CHARSET=utf8;
接口表
同样有外键,指向project表。
#接口表 CREATE TABLE interface ( id int(11) NOT NULL AUTO_INCREMENT, pid int(11) DEFAULT NULL, interfaceName varchar(255) DEFAULT NULL, requestMethod varchar(50) DEFAULT NULL, requestPath varchar(255) DEFAULT NULL, interfaceDescribe varchar(255) DEFAULT NULL, createUser varchar(255) DEFAULT NULL, createTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), CONSTRAINT fk_interface_project FOREIGN KEY (pid) REFERENCES project (id) )ENGINE=InnoDB DEFAULT CHARSET=utf8;
规则表
我的需求是:一个接口可以配置多种规则,然后匹配到对应规则,就返回对应的响应体。
所以规则表要指向接口表。
#规则表 CREATE TABLE rule ( id int(11) NOT NULL AUTO_INCREMENT, ruleName varchar(255) DEFAULT NULL, mockInterfaceId int(11) DEFAULT NULL, filterParams TEXT DEFAULT NULL, filterBody TEXT DEFAULT NULL, responseCode int(11) DEFAULT NULL, responseBody TEXT DEFAULT NULL, createUser varchar(255) DEFAULT NULL, createTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), CONSTRAINT fk_rule_interface FOREIGN KEY (mockInterfaceId) REFERENCES interface (id) )ENGINE=InnoDB DEFAULT CHARSET=utf8;
表建完了,但是我相信在后面实现的过程中肯定会遇到一些问题,比如字段设计不合理,字段类型有问题等等,这个就届时再说啦。