本文已参与「新人创作礼」活动,一起开启掘金创作之路。
前言
到此,项目的基础配置已基本上完成了,后续用到其他的配置再添加,下面我们将进行数据库的设计,根据我们的功能介绍,并将每个功能用的字段进行设计,这个很重要。我们做的是个人博客,最大的数据也就是我们发布的文章内容了,最多也就上千条的博客数据,对数据库的设计要求不是很高,所以我们直接设计就好了,某些字段可能后期要修改,目前先把基本的初始化的表搭建好。
一、Navicat工具建表使用
我们有两种创建数据库的方式,一种是采用SQL语句进行创建数据库和表,另一种是利用数据库的可视化工具进行创建数据库,我们采用的是SQL语句进行创建数据库,既然是学习,我们要多接触一些东西。
虽然是采用SQL语句进行建表,但是我们也要利用工具进行编写和执行工具,则就会用到我们之前安装的Navicat工具,现在让我们打开工具,会看到之前创建好的数据库personal_blog。 我们先教软件的操作方法再进行建表,授人以鱼不如授人以渔。
接下来可以两种方式建表,第一种是傻瓜式操作,点击新建表,然后输入字段名称和类型即可。
这是一种建表的方式,简单直接,但是为了逼格高一点,我们选择SQL语句建表。
下面进行建表,我们在Navicat中点击查询
接下来会弹出一个查询编译器,我们将建表语句写在这里,然后执行即可。
注意:SQL语句要以英文分号结尾。
二、建表
在哪建表已经清楚了,我们现在就要把表建立起来,我主要分为两块,一个是以表格的形式进行字段的规划,然后再附上建表的语句,因为在真是的项目中和写论文中,项目文档都是以表格或者三行表的形式进行字段展示,所以我这里两个都兼容一下。
0、创建数据库
SQL语句的注释是两个线加空格。
create database personal_blog; -- 创建数据库
drop database personal_blog; -- 删除数据库
复制代码
1、文章管理表
数据库表字段的命名规则:使用小写英文单词,如果有多个单词使用下划线隔开。字段应当有注释,描述该字段的用途及可能存储的内容,如枚举值则建议将该字段中使用的内容都定义出来;
名称 | 数据类型 | 长度 | 允许空值 | 主键 | 注释 |
---|---|---|---|---|---|
id | INT | 0 | NOT NULL | 是 | 主键(自增) |
author | VARCHAR | 128 | NOT NULL | 否 | 作者 |
title | VARCHAR | 255 | NOT NULL | 否 | 文章标题 |
tag_id | INT | 11 | NOT NULL | 否 | 文章标签id |
user_id | INT | 11 | NOT NULL | 否 | 用户id |
category_id | INT | 0 | NOT NULL | 否 | 分类id |
content | LONGTEXT | 0 | NULL | 否 | 文章内容 |
views | BIGINT | 0 | NOT NULL | 否 | 文章浏览量 |
total_words | BIGINT | 0 | NOT NULL | 否 | 文章总字数 |
commentable | INT | 0 | NULL | 否 | 评论id |
art_status | TINYINT | 0 | NOT NULL | 否 | 发布,默认0, 0-发布, 1-草稿 |
description | VARCHAR | 255 | NOT NULL | 否 | 描述 |
image_url | VARCHAR | 255 | NOT NULL | 否 | 文章logo |
create_time | DATETIME | 0 | NULL | 否 | 创建时间 |
update_time | DATETIME | 0 | NULL | 否 | 修改时间 |
SQL语句:
DROP TABLE IF EXISTS `person_article`; -- 删除表
CREATE TABLE `person_article` (
`id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
`author` VARCHAR(128) NOT NULL COMMENT '作者',
`title` VARCHAR(255) NOT NULL COMMENT '文章标题',
`tag_id` INT(11) NOT NULL COMMENT '文章标签id',
`user_id` INT(11) NOT NULL COMMENT '用户id',
`category_id` INT(11) NOT NULL COMMENT '分类id',
`content` LONGTEXT NULL COMMENT '文章内容',
`views` BIGINT NOT NULL DEFAULT 0 COMMENT '文章浏览量',
`total_words` BIGINT NOT NULL DEFAULT 0 COMMENT '文章总字数',
`commentable` INT NULL COMMENT '评论id',
`art_status` TINYINT NOT NULL DEFAULT 0 COMMENT '发布,默认0, 0-发布, 1-草稿',
`description` VARCHAR(255) NOT NULL COMMENT '描述',
`image_url` VARCHAR(255) NOT NULL COMMENT '文章logo',
`create_time` DATETIME NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) ENGINE = InnoDB
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_bin
ROW_FORMAT = Dynamic
COMMENT '文章管理表';
复制代码
2、用户管理表
名称 | 数据类型 | 长度 | 允许空值 | 主键 | 注释 |
---|---|---|---|---|---|
id | INT | 0 | NOT NULL | 是 | 主键(自增) |
username | VARCHAR | 255 | NOT NULL | 否 | 用户名 |
password | VARCHAR | 255 | NOT NULL | 否 | 密码 |
VARCHAR | 64 | NULL | 否 | 邮箱 | |
last_login_time | datetime | 0 | NULL | 否 | 上次登录时间 |
phone | BIGINT | 11 | NOT NULL | 否 | 手机号 |
nickname | VARCHAR | 64 | NULL | 否 | 昵称 |
create_time | DATETIME | 0 | NULL | 否 | 创建时间 |
update_time | DATETIME | 0 | NULL | 否 | 修改时间 |
SQL语句: |
DROP TABLE IF EXISTS `person_user`;
CREATE TABLE `person_user` (
`id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
`username` VARCHAR(255) NOT NULL COMMENT '用户名',
`password` VARCHAR(255) NOT NULL COMMENT '密码',
`email` VARCHAR(64) NULL COMMENT '邮箱',
`last_login_time` datetime NULL COMMENT '上次登录时间',
`phone` BIGINT(11) NOT NULL DEFAULT 0 COMMENT '手机号',
`nickname` VARCHAR(64) NULL COMMENT '昵称',
`create_time` DATETIME NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) ENGINE = InnoDB
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_bin
ROW_FORMAT = Dynamic
COMMENT '用户管理表';
复制代码
3、标签管理表
名称 | 数据类型 | 长度 | 允许空值 | 主键 | 注释 |
---|---|---|---|---|---|
id | INT | 0 | NOT NULL | 是 | 主键(自增) |
tag_name | VARCHAR | 255 | NULL | 否 | 标签名 |
create_time | DATETIME | 0 | NULL | 否 | 创建时间 |
update_time | DATETIME | 0 | NULL | 否 | 修改时间 |
SQL语句:
DROP TABLE IF EXISTS `person_tag`;
CREATE TABLE `person_tag` (
`id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
`tag_name` VARCHAR(255) NULL COMMENT '标签名',
`create_time` DATETIME NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) ENGINE = InnoDB
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_bin
ROW_FORMAT = Dynamic
COMMENT '标签管理表';
复制代码
4、通知公告表
名称 | 数据类型 | 长度 | 允许空值 | 主键 | 注释 |
---|---|---|---|---|---|
notice_id | INT | 0 | NOT NULL | 是 | 主键(自增) |
notice_title | VARCHAR | 255 | NOT NUL | 否 | 标签名 |
notice_type | TINYINT | 0 | NOT NULL | 否 | 公告类型,默认0, 0-公告, 1-通知, 2-提醒 |
notice_status | TINYINT | 0 | NOT NULL | 否 | 状态,默认0, 0-正常, 1-关闭 |
noticeContent | text | NULL | 否 | 公告内容 | |
createBy | VARCHAR | 128 | NOT NULL | 否 | 创建者 |
create_time | DATETIME | 0 | NULL | 否 | 创建时间 |
update_time | DATETIME | 0 | NULL | 否 | 修改时间 |
SQL语句:
DROP TABLE IF EXISTS `person_notice`;
CREATE TABLE `person_notice` (
`notice_id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
`notice_title` VARCHAR(255) NOT NULL COMMENT '公告标题',
`notice_type` TINYINT NOT NULL DEFAULT 0 COMMENT '公告类型,默认0, 0-公告, 1-通知, 2-提醒',
`status` TINYINT NOT NULL DEFAULT 0 COMMENT '状态,默认0, 0-正常, 1-关闭',
`noticeContent` text NULL COMMENT '公告内容',
`createBy` VARCHAR(128) NOT NULL COMMENT '创建者',
`create_time` DATETIME NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) ENGINE = InnoDB
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_bin
ROW_FORMAT = Dynamic
COMMENT '通知公告表';
复制代码
5、文章分类管理表
名称 | 数据类型 | 长度 | 允许空值 | 主键 | 注释 |
---|---|---|---|---|---|
category_id | INT | 0 | NOT NULL | 是 | 主键(自增) |
category_name | VARCHAR | 128 | NOT NUL | 否 | 分类名称 |
create_time | DATETIME | 0 | NULL | 否 | 创建时间 |
update_time | DATETIME | 0 | NULL | 否 | 修改时间 |
SQL语句:
DROP TABLE IF EXISTS `person_category`;
CREATE TABLE `person_category` (
`category_id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
`category_name` VARCHAR(128) NOT NULL COMMENT '分类名称',
`create_time` DATETIME NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) ENGINE = InnoDB
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_bin
ROW_FORMAT = Dynamic
COMMENT '文章分类管理表';
复制代码
6、操作日志表
名称 | 数据类型 | 长度 | 允许空值 | 主键 | 注释 |
---|---|---|---|---|---|
id | INT | 0 | NOT NULL | 是 | 主键(自增) |
operation_ip | VARCHAR | 128 | NUL | 否 | 主机地址 |
operation_location | VARCHAR | 255 | NULL | 否 | 操作地点 |
method | TEXT | 0 | NULL | 否 | 方法名 |
args | TEXT | 0 | NULL | 否 | 参数 |
operation_name | VARCHAR | 50 | NOT NULL | 否 | 操作人 |
operation_type | VARCHAR | 50 | NOT NULL | 否 | 操作类型 |
return_value | TEXT | 0 | NULL | 否 | 返回参数 |
create_time | DATETIME | 0 | NULL | 否 | 创建时间 |
update_time | DATETIME | 0 | NULL | 否 | 修改时间 |
SQL语句:
DROP TABLE IF EXISTS `person_operation_log`;
CREATE TABLE `person_operation_log` (
`operation_id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
`operation_ip` VARCHAR(128) NULL DEFAULT 0 COMMENT '主机地址',
`oper_location` VARCHAR(255) NULL DEFAULT '' COMMENT '操作地点',
`method` TEXT NULL COMMENT '方法名',
`args` TEXT NULL COMMENT '参数',
`operation_name` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '操作人',
`operation_type` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '操作类型',
`return_value` TEXT NULL COMMENT '返回参数',
`create_time` DATETIME NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) ENGINE = InnoDB
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_bin
ROW_FORMAT = Dynamic
COMMENT '操作日志表';
复制代码
7、登录日志表
名称 | 数据类型 | 长度 | 允许空值 | 主键 | 注释 |
---|---|---|---|---|---|
id | INT | 0 | NOT NULL | 是 | 主键(自增) |
login_name | VARCHAR | 50 | NUL | 否 | 登录账号 |
ip_address | VARCHAR | 128 | NULL | 否 | 登录IP地址 |
login_location | VARCHAR | 255 | NULL | 否 | 登录地点 |
browser_type | VARCHAR | 50 | NULL | 否 | 浏览器类型 |
os | VARCHAR | 50 | NOT NULL | 否 | 操作系统 |
log_status | TINYINT | 0 | NOT NULL | 否 | 登录状态,默认0, 0-成功, 1-失败 |
msg | VARCHAR | 255 | NULL | 否 | 提示消息 |
create_time | DATETIME | 0 | NULL | 否 | 创建时间 |
SQL语句:
DROP TABLE IF EXISTS `person_login_log`;
CREATE TABLE `person_login_log` (
`info_id` BIGINT(20) NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '登录访问id',
`login_name` VARCHAR(50) NULL DEFAULT '' COMMENT '登录账号',
`ip_address` VARCHAR(128) NULL DEFAULT '' COMMENT '登录IP地址',
`login_location` VARCHAR(255) NULL DEFAULT '' COMMENT '登录地点',
`browser_type` VARCHAR(50) NULL DEFAULT '' COMMENT '浏览器类型',
`os` VARCHAR(50) NULL DEFAULT '' COMMENT '操作系统',
`status` TINYINT NULL DEFAULT 0 COMMENT '登录状态,默认0, 0-成功, 1-失败',
`msg` VARCHAR(255) NULL DEFAULT '' COMMENT '提示消息',
`create_time` DATETIME NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
) ENGINE = InnoDB
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_bin
ROW_FORMAT = Dynamic
COMMENT '登录日志表';
复制代码
三、项目中创建初始化的数据库
数据表都初始化完成后,我们将SQL语句文件放到项目中统一修改管理,尤其是多人开发的时候,某个字段需要修改,直接在项目的sql文件中修改,提交代码,其他人就可以查看修改后的字段。 我们现要把原来的代码提交。
出现这种提交成功
然后点击push才能将项目推送到仓库中
新建一个sql文件,然后放置一些初始化的sql数据
到此,我们的数据库表创建完成,接下来,我们要实现功能模块了,正式开始敲代码。
上一篇:Spring Boot + vue-element 开发个人博客项目实战教程(六、项目包创建和配置Mybatis) 下一篇:Spring Boot + vue-element 开发个人博客项目实战教程(八、用户中心功能实现)