本想着把前端脚手架run起来了,然后就可以借着登录来捋一下前后端交互的过程。但是后端导入JPA的时候就发现了,还没有数据库。

既然是本着学习的目的,那咱也不想只在后端写死返回的数据,要做就做全套。

一、mysql

1.安装

数据库我在本地装的是mysql-8.0.21-winx64,下载地址:

这是mysql下载地址

怎么安装就不表了,网上都有。考虑到懒人童鞋,教程我也放这了:

这是安装教程地址

但是当我在本地用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,
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,
request_method varchar(50) DEFAULT NULL,
request_path varchar(255) DEFAULT NULL,
interface_descibe 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,
rule_name varchar(255) DEFAULT NULL,
interface_id int(11) DEFAULT NULL,
filter_params TEXT DEFAULT NULL,
filter_body TEXT DEFAULT NULL,
response_code int(11) DEFAULT NULL,
response_body TEXT DEFAULT NULL,
createUser varchar(255) DEFAULT NULL,
createTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
#外键约束
CONSTRAINT fk_rule_interface FOREIGN KEY (interface_id) REFERENCES interface (id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

表建完了,但是我相信在后面实现的过程中肯定会遇到一些问题,比如字段设计不合理,字段类型有问题等等,这个就届时再说啦。

【平台开发】— 4.mysql建库建表的更多相关文章

  1. MySQL建库建表

    一直使用SQL SERVER 数据库:最近项目使用MY SQL感觉还是有一点不适应.不过熟悉之后就会好很多. MY SQL 安装之后会有一个管理工具MySQL Workbench 感觉不太好用,数据库 ...

  2. mysql那些事(4)建库建表编码的选择

    mysql建数据库或者建表的时候会遇到选择编码的问题,以前我们都是习惯性的选择utf8,但是在mysql在5.5.3版本后加了utf8mb4的编码,utf8mb4可以存4个字节Unicode,mb4就 ...

  3. 【ITOO 2】.NET 动态建库建表:使用SQL字符串拼接方式

    导读:在最近接手的项目(高效云平台)中,有一个需求是要当企业用户注册时,给其动态的新建一个库和表.刚开始接手的时候,是一点头绪都没有,然后查了一些资料,也问了问上一版本的师哥师姐,终于有了点头绪.目前 ...

  4. 【ITOO 3】.NET 动态建库建表:实用EF框架提供的codeFirst实现动态建库

    导读:在上篇博客中,介绍了使用SQL字符拼接的方式,实现动态建库建表的方法.这样做虽然也能够实现效果,但是,太麻烦,而且,如果改动表结构,字段的话,会对代码修改很多.但是EF给我们提供了一种代码先行的 ...

  5. 使用T-sql建库建表建约束

    为什么要使用sql语句建库建表? 现在假设这样一个场景,公司的项目经过测试没问题后需要在客户的实际环境中进行演示,那就需要对数据进行移植,现在问题来了:客户的数据库版本和公司开发阶段使用的数据库不兼容 ...

  6. C# 利用*.SQL文件自动建库建表等的类

    /// <summary> /// 自动建库建表 /// </summary> public class OperationSqlFile { SqlConnection sq ...

  7. SQL Server建库-建表-建约束

    ----------------------------------------SQL Server建库-建表-建约束创建School数据库------------------------------ ...

  8. {MySQL的库、表的详细操作}一 库操作 二 表操作 三 行操作

    MySQL的库.表的详细操作 MySQL数据库 本节目录 一 库操作 二 表操作 三 行操作 一 库操作 1.创建数据库 1.1 语法 CREATE DATABASE 数据库名 charset utf ...

  9. day 36 MySQL的库、表的详细操作

    MySQL的库.表的详细操作   MySQL数据库 本节目录 一 库操作 二 表操作 三 行操作 一 库操作 1.创建数据库 1.1 语法 CREATE DATABASE 数据库名 charset u ...

  10. Mysql查询库、表存储量(Size)

    Mysql查询库.表存储量(Size) 1.要查询表所占的容量,就是把表的数据和索引加起来就可以了. SELECT SUM(DATA_LENGTH) + SUM(INDEX_LENGTH) FROM ...

随机推荐

  1. nginx多个server的配置,同一端口

    nginx多个server的配置,同一端口 #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/e ...

  2. Python3 网络爬虫:漫画下载,动态加载、反爬虫这都不叫事

    一.前言 作者:Jack Cui 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识.那 ...

  3. JavaScript中为什么需要!!?

    1. 布尔值为false的值 在JavaScript中,布尔值为 false的值有如下几个: undefined null false 0 NaN ""或''(空字符串) 2. ! ...

  4. 剑指Offer顺时针打印矩阵

    题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数 ...

  5. Solon 的 PathVariable 不需注解

    相对于 Spring boot 的 path variable :Solon 的不需注解,只要变量名对上即可: //path var demo // @XMapping("e/{p_q}/{ ...

  6. Vue+Spring Boot 前后端分离的商城项目开源啦!

    新蜂商城 Vue 移动端版本开源啦! 去年开源新蜂商城项目后,就一直在计划这个项目 Vue 版本的改造,2020 年开始开发并且自己私下一直在测试,之前也有文章介绍过测试过程和存在的问题,修改完成后, ...

  7. 什么是c/c++编译

    GCC是什么 GNU Compiler Collection的缩写,一开始是c语言的编译器,但现今可以支持多种语言的编译工作,也支持了多个硬件平台的编译.总而言之,主流的c语言编译器就是这个gcc了. ...

  8. 【AHOI 2015】 小岛 - 最短路

    描述 西伯利亚北部的寒地,坐落着由 N 个小岛组成的岛屿群,我们把这些小岛依次编号为 1 到 N . 起初,岛屿之间没有任何的航线.后来随着交通的发展,逐渐出现了一些连通两座小岛的航线.例如增加一条在 ...

  9. 【原创】Linux虚拟化KVM-Qemu分析(一)

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: KVM版本:5.9 ...

  10. Python 使用BrowserMob Proxy + selenium 获取Ajax加密数据

    BrowserMob Proxy,简称 BMP,它是一个 HTTP 代理服务,我们可以利用它截获 HTTP 请求和响应内容. 第一步:先安装 BrowserMob Proxy 的包. pip inst ...