本想着把前端脚手架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. 用了Dapper之后通篇还是SqlConnection,真的看不下去了

    一:背景 1. 讲故事 前几天看公司一个新项目的底层使用了dapper,大家都知道dapper是一个非常强大的半自动化orm,帮程序员解决了繁琐的mapping问题,用起来非常爽,但我还是遇到了一件非 ...

  2. cxuan读者的外包面试之旅

    最开始是打算面试外包公司刷经验,等经验差不多了,再去甲方尝试,可惜不太顺利. 一.迈思(面试了30分钟) 自我介绍 左连接(a 表左连接 b 表,a 表全部数据出来,b 表没有的数据为空) a 表左连 ...

  3. Python 超简单 提取音乐高潮(附批量提取)

    很多时候我们想提取某首歌的副歌部分(俗称 高潮部分),只能手动直接卡点剪切,但是对于大批量的获取就很头疼,如何解决? 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后 ...

  4. myBatis源码解析-数据源篇(3)

    前言:我们使用mybatis时,关于数据源的配置多使用如c3p0,druid等第三方的数据源.其实mybatis内置了数据源的实现,提供了连接数据库,池的功能.在分析了缓存和日志包的源码后,接下来分析 ...

  5. MyBatisPlus配置日志,CRUD的使用

    配置日志 我们所有的sql在mybatisplus是不可见的,所以在开发中需要配置日志,开发完成后,就可以取消日志了,因为日志也是损耗资源的 #配置日志 mybatis-plus: configura ...

  6. linux常用命令(二)服务器硬件资源信息

    内存:free -m 硬盘:df -h 负载:w/top cpu个数和核数:cat /proc/cpuinfo

  7. C - 一个C语言猜字游戏

    下面是一个简陋的猜字游戏,玩了一会儿,发现自己打不过自己写的游戏,除非赢了就跑,最高分没有过1000. 说明:srand(time(NULL))和rand(),srand,time和rand都是函数, ...

  8. 综合CSS3 transition、transform、animation写的一个动画导航

    打算好好写博客开始,就想把博客给装修下,近几个月一直处在准备找工作疯狂学习前端的状态.感觉博客装修要等到工作稳定下来才有时间和经历去想想要搞成什么样的了.也看过一些博主的博客导航有这种样式的,趁着回顾 ...

  9. noip复习——线性筛(欧拉筛)

    整数的唯一分解定理: \(\forall A\in \mathbb {N} ,\,A>1\quad \exists \prod\limits _{i=1}^{s}p_{i}^{a_{i}}=A\ ...

  10. 虚拟机安装mysql遇到的坑

    相信很多同学也跟我一样在家里,windows安装个虚拟机,再安装linux.然后在linux下模拟出一套运行环境.这次我装的是mysql 8.0.中间遇到很多坑,记录一下.(用的linux为redha ...