Spring Boot + vue-element 开发个人博客项目实战教程(七、创建数据库表)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Spring Boot + vue-element 开发个人博客项目实战教程(七、创建数据库表)

⭐ 作者简介:码上言



⭐ 代表教程:Spring Boot + vue-element 开发个人博客项目实战教程



⭐专栏内容:零基础学Java个人博客系统

项目部署视频

https://www.bilibili.com/video/BV1sg4y1A7Kv/?vd_source=dc7bf298d3c608d281c16239b3f5167b

文章目录

到此,项目的基础配置已基本上完成了,后续用到其他的配置再添加,下面我们将进行数据库的设计,根据我们的功能介绍,并将每个功能用的字段进行设计,这个很重要。我们做的是个人博客,最大的数据也就是我们发布的文章内容了,最多也就上千条的博客数据,对数据库的设计要求不是很高,所以我们直接设计就好了,某些字段可能后期要修改,目前先把基本的初始化的表搭建好。

一、Navicat工具建表使用

我们有两种创建数据库的方式,一种是采用SQL语句进行创建数据库和表,另一种是利用数据库的可视化工具进行创建数据库,我们采用的是SQL语句进行创建数据库,既然是学习,我们要多接触一些东西。


虽然是采用SQL语句进行建表,但是我们也要利用工具进行编写和执行工具,则就会用到我们之前安装的Navicat工具,现在让我们打开工具,会看到之前创建好的数据库personal_blog。

我们先教软件的操作方法再进行建表,授人以鱼不如授人以渔。接下来可以两种方式建表,第一种是傻瓜式操作,点击新建表,然后输入字段名称和类型即可
这是一种建表的方式,简单直接,但是为了逼格高一点,我们选择SQL语句建表。
下面进行建表,我们在Navicat中点击查询

接下来会弹出一个查询编译器,我们将建表语句写在这里,然后执行即可。


二、建表

在哪建表已经清楚了,我们现在就要把表建立起来,我主要分为两块,一个是以表格的形式进行字段的规划,然后再附上建表的语句,因为在真是的项目中和写论文中,项目文档都是以表格或者三行表的形式进行字段展示,所以我这里两个都兼容一下。

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 密码
email 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 开发个人博客项目实战教程(八、用户中心功能实现)

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
2月前
|
存储 缓存 自然语言处理
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
57 8
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
|
4月前
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
198 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
3月前
|
SQL 调度 数据库
开发YashanDB数据库?用 DBeaver for YashanDB 更顺手
数据库开发复杂易错,尤其在企业级场景中。为提升效率,YashanDB 团队基于 DBeaver 开源工具打造专属解决方案——DBeaver for YashanDB。它支持多类型数据库对象管理(表、视图、函数等),适配 YashanDB 特有表结构(HEAP、LSC),提供智能补全、语法高亮、SQL 调试等功能,让开发更高效流畅。推荐用于数据库应用开发团队、高频调试用户及中大型企业统一工具栈场景。
|
3月前
|
SQL 数据可视化 IDE
开发数据库不想写命令?YashanDB Developer Center 帮你轻松搞定
YashanDB Developer Center(YDC)是一款可视化的数据库开发工具,专为提升数据库开发效率而设计。它通过图形化对象管理让数据库对象清晰可见,提供智能SQL编辑器支持语法高亮与自动补全,实现PL调试的图形化操作,帮助快速定位问题。此外,操作记录可追溯,多端灵活部署,适配多种场景。无论是中大型企业研发团队,还是不熟悉命令行的业务开发者,YDC都能显著优化开发体验,堪称YashanDB的“可视化IDE”。
|
5月前
|
人工智能 JavaScript 关系型数据库
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
171 14
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
|
5月前
|
人工智能 JavaScript 安全
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
205 13
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
|
5月前
|
存储 关系型数据库 分布式数据库
PolarDB 开源基础教程系列 8 数据库生态
PolarDB是一款开源的云原生分布式数据库,源自阿里云商业产品。为降低使用门槛,PolarDB携手伙伴打造了完整的开源生态,涵盖操作系统、芯片、存储、集成管控、监控、审计、开发者工具、数据同步、超融合计算、ISV软件、开源插件、人才培养、社区合作及大型用户合作等领域。通过这些合作伙伴,PolarDB提供了丰富的功能和服务,支持多种硬件和软件环境,满足不同用户的需求。更多信息请访问[PolarDB开源官方网站](https://openpolardb.com/home)。
213 4
|
6月前
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
233 2
|
6月前
|
存储 设计模式 JavaScript
Vue 组件化开发:构建高质量应用的核心
本文深入探讨了 Vue.js 组件化开发的核心概念与最佳实践。
389 1
|
4月前
|
前端开发 Java 数据库
微服务——SpringBoot使用归纳——Spring Boot集成Thymeleaf模板引擎——Thymeleaf 介绍
本课介绍Spring Boot集成Thymeleaf模板引擎。Thymeleaf是一款现代服务器端Java模板引擎,支持Web和独立环境,可实现自然模板开发,便于团队协作。与传统JSP不同,Thymeleaf模板可以直接在浏览器中打开,方便前端人员查看静态原型。通过在HTML标签中添加扩展属性(如`th:text`),Thymeleaf能够在服务运行时动态替换内容,展示数据库中的数据,同时兼容静态页面展示,为开发带来灵活性和便利性。
117 0