到这里,项目所需要的基本配置就已经配置好了,后续如果需要用到其他的我们再另行配置即可,下面我们进行数据库的设计,根据功能介绍,并将每个能用到的字段进行设计,这个非常重要。我们做的是个人博客,最大的数据量也就是我们发布的文章内容了,最多也就上千条博客数据,对的数据库的设计要求不是很高,所以我们就直接设计了,某些字段可能后期需要修改,目前先把基本的初始化表搭建好。
一、Navicat工具建表使用
我们有两种创建数据库的方式,一种是采用SQL语句进行创建数据库和表,另一种是利用数据库的可视化工具进行创建数据库,
我们这里采用利用SQL语句进行建表,但我们也要利用工具进行编写和执行工具,就会用到之前安装的Navicat工具,
打开Navicat,看到之前创建的表person_blog
有两种方式建表
第一种:点击数据库,选择新建表
当然不明觉厉的方法是SQL语句建表,我们选择这种
下面进行建表,我们在Navicat中点击查询
接下来会跳出一个查询编译器,我们将建表语句写在这里,然后点击执行
注:SQL语句需要以英文分号结尾
二、建表
在哪建表已经很清楚了,现在要把表建立起来,这里分成,先以表格的形式进行字段的规划,再附上建表语句,
2.1 创建数据库语句
create database person_blog; --创建表名为person_blog的表
drop database person_blog; --删除表名为person_blog的表
drop table if exists `person_blog`; --创建表时放在第一句,防止有重复的表名
2.2 文章管理表
数据库表字段的命名规则:使用小写英文字母,如果有多个单词使用下划线隔开,字段应当有注释,描述该字段的用途及可能存储的内容,
SQL语句
(注: `id` ` ` 这个符号 就是电脑键盘左侧Tab键上面那个,而 '主键' '' ' 这个单冒号是英文模式下的双冒号)
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.3 用户管理表
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 '用户管理表';
运行完成,右键person_blog选择刷新,下面会出现表名,创建成功
下面各个表的创建生成过程都一样,就不一一列举了
2.4 标签管理表
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 '标签管理表';
2.5 通知公告表
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 '通知公告表';
2.6 文章分类管理表
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 '文章分类管理表';
2.7 操作日志表
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 '操作日志表';
2.8 登录日志表
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文件中修改,提交代码,其他人就可以查看修改后的字段
但首先要做的,是把之前的代码提交
填写完成之后点击底部的Commit ,左下角显示提交信息成功
然后再点击push才能将项目推送到仓库中
在main目录下创建一个文件夹sql
sql文件下创建一个File命名为init.sql,,用于存放初始化的sql数据