本想着把前端脚手架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. C++类、函数、指针

    1.初始化所有指针. 2. (1)指向常量的指针: (2)常量指针:指针本身为常量: 3.若循环体内部包含有向vector对象添加元素的语句,则不能使用范围for循环. 4.字符数组要注意字符串字面值 ...

  2. DeepVO: Towards End-to-End Visual Odometry with Deep Recurrent Convolutional Neural Networks

    1.Introduction DL解决VO问题:End-to-End VO with RCNN 2.Network structure a.CNN based Feature Extraction 论 ...

  3. Codechef May Challenge 2020 Division 1 记录

    目录 Triple Sort Sorting Vases Buying a New String Chef and Bitwise Product Binary Land Not a Real Wor ...

  4. Spring的第一个程序

    目录 一.Spring概述 1. Spring是什么? 2. IOC控制反转 二.Spring的第一个程序 1. 创建Maven项目 2. 加入maven依赖pom.xml 3. 定义接口和实体类 4 ...

  5. Nginx安装与运行配置总结

    Nginx安装与运行配置总结 1. 去官网下载对应的nginx包,推荐使用稳定版本 2. 上传nginx到linux系统 3. 安装依赖环境 (1)安装gcc环境 yun install gcc-c+ ...

  6. 将Asp.Net Core3.1项目,使用Docker 部署到Centos 8

    一.准备工具 Win 10 Centos 8 Visual Studio 2019 Docker Desktop  下载地址:https://download.docker.com/win/stabl ...

  7. 关于在Visual Studio 2019预览版中的用户体验和界面的变化

    原文地址:https://blogs.msdn.microsoft.com/visualstudio/2018/11/12/a-preview-of-ux-and-ui-changes-in-visu ...

  8. Eclipse怎么调整字体大小和主题

    调整字体 哈哈哈哈哈 ( ̄▽ ̄),直接Ctrl + -/+号,....在英文输入法状态. 或者,你想更细致的调整字体类型,可以在Winodw -> Preferences中调整: 换主题 你可以 ...

  9. 坚持第一天:HashMap和Hashtable的区别

    其实,到底是用HashMap和Hashtable主要看需求, 1.它们俩都共同实现了:Map接口,但是Hashtable实现是基于Dictionary抽象类的,在java5的时候提供了Concurre ...

  10. 题解 UVA10457

    题目大意:另s = 路径上的最大边权减最小边权,求u到v上的一条路径,使其s最小,输出这个s. 很容易想到枚举最小边然后跑最小瓶颈路. so,如何跑最小瓶颈路? 利用Kruskal,因为树上两点路径唯 ...