1. 程式人生 > 實用技巧 >【平臺開發】— mysql建庫建表

【平臺開發】— mysql建庫建表

本想著把前端腳手架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;

表建完了,但是我相信在後面實現的過程中肯定會遇到一些問題,比如欄位設計不合理,欄位型別有問題等等,這個就屆時再說啦。