本文將從技術棧、功能需求、數據庫設計來講述,前端頁面展示可以看我上一篇文章:【SpringBoot搭建個人博客】- 前端頁面展示(一)
一、技術棧
1.前端
- JS框架:JQuery
- CSS框架:Semantic UI官網
- Markdown編輯器:編輯器 Markdown
- 代碼高亮:代碼高亮 prism
- 動畫效果:動畫 animate.css
- 文章目錄:目錄生成 Tocbot
- 音樂盒:zplayer
- 照片牆:lightbox插件
2.後端
- 核心框架:SpringBoot 2.2.5
- 項目構建:jdk1.8、Maven 3
- 持久層框架:Mybatis
- 模板框架:Thymeleaf
- 分頁插件:PageHelper
- 加密:MD5加密
- 運行環境:騰訊雲Centos7
3.數據庫
- MySQL 5.7
二、功能需求
因爲是個人博客,所以沒有做用戶權限管理,只是簡單的區分了一下普通用戶和管理員用戶,這裏就根據普通用戶和管理員用戶來講述功能需求,其實從上一篇博文的前端頁面就能大致的看出需求了
1.普通用戶
- 查看文章信息:文章列表、推薦文章、文章標題、文章內容、發佈時間、訪問量以及評論等信息
- 查看分類文章:分類列表、分類文章信息
- 查看時間軸:按照文章時間發佈順序查看文章
- 搜索文章:導航欄右邊搜索框根據關鍵字搜索
- 聽音樂:上一曲、下一曲、音量控制、播放順序控制、查看歌詞等
- 留言:留言並回復
- 查看友鏈:查看並訪問博主在友鏈頁面添加的友鏈連接
- 查看相冊信息:相冊列表、照片名稱、照片拍攝地點、時間、照片描述
2.管理員用戶(棧主)
- 擁有普通用戶所有功能權限
- 登錄:在主頁路徑下加“/admin”,可進入登錄頁面,根據數據庫的用戶名和密碼進行登錄
- 文章管理:查詢文章列表、新增文章、編輯文章、刪除文章、搜索文章
- 分類管理:查詢分類列表、新增分類、編輯分類、刪除分類
- 友鏈管理:查詢友鏈列表、新增友鏈、編輯友鏈、刪除友鏈
- 相冊管理:查詢相冊列表、新增照片、編輯照片、刪除照片
- 消息管理:登錄後恢復評論留言會顯示棧主的頭像信息,並能顯示刪除消息按鍵,可以對消息進行刪除
三、數據庫設計
由於博主最開始是使用jpa作爲持久層開發此博客的,數據表是由jpa框架自動生成的,在使用mybatis爲持久層的時候就沿用了jpa生成的數據庫,但是對評論表和留言表進行了改動,如果同樣是先用jpa,再用mybatis開發的夥伴這裏要注意一下,如果直接使用mybatis開發的則可以忽略
1.數據表
- 博客數據表:t_blog
- 分類數據表:t_type
- 用戶數據表:t_user
- 評論數據表:t_comment
- 留言數據表:t_message
- 友鏈數據表:t_friend
- 相冊數據表:t_picture
2.實體關係
- 博客和分類是多對一的關係:一個博客對應一個分類,一個分類可以對應多個博客
- 博客和用戶是多對一的關係:一個博客對應一個用戶,一個用戶可以對應多個博客
- 博客和評論是一對多的關係:一個博客可以對應多個評論,一個評論對應一個博客
- 評論和回覆是一對多的關係:一個評論可以對應多個回覆,一個回覆對應一個評論
留言和評論是一樣的,還有友鏈和相冊數據表和其他表沒有關聯
3.實體屬性
博客屬性:
分類屬性:
用戶屬性:
評論屬性:
留言屬性:
友鏈屬性:
相冊屬性:
- 博客屬性:標題、內容、首圖、標記、瀏覽次數、讚賞開啓、版權開啓、評論開啓、是否發佈、創建時間、更新時間、描述
- 分類屬性:分類名稱
- 用戶屬性:暱稱、用戶名、密碼、郵箱、類型、頭像、創建時間、更新時間
- 評論屬性:暱稱、郵箱、頭像、評論內容、創建時間、博客id、父評論id、管理員id
- 留言屬性:暱稱、郵箱、頭像、留言內容、創建時間、父留言id、管理員id
- 友鏈屬性:網址、名稱、創建時間、圖片地址
- 相冊屬性:圖片地址、圖片描述、圖片名稱、拍攝時間地點
4.表結構
博客表:
分類表:
用戶表:
評論表:
留言表:
友鏈表:
相冊表:
4.建表語句
/*
Navicat MySQL Data Transfer
Source Server : myblog-localhost
Source Server Type : MySQL
Source Server Version : 50717
Source Host : localhost:3306
Source Schema : myblog
Target Server Type : MySQL
Target Server Version : 50717
File Encoding : 65001
Date: 30/04/2020 17:02:10
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for t_blog
-- ----------------------------
DROP TABLE IF EXISTS `t_blog`;
CREATE TABLE `t_blog` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`appreciation` bit(1) NOT NULL,
`commentabled` bit(1) NOT NULL,
`content` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL,
`create_time` datetime(0) NULL DEFAULT NULL,
`description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`first_picture` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`flag` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`published` bit(1) NOT NULL,
`recommend` bit(1) NOT NULL,
`share_statement` bit(1) NOT NULL,
`title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`update_time` datetime(0) NULL DEFAULT NULL,
`views` int(11) NULL DEFAULT NULL,
`type_id` bigint(20) NULL DEFAULT NULL,
`user_id` bigint(20) NULL DEFAULT NULL,
`comment_count` int(255) NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
INDEX `FK292449gwg5yf7ocdlmswv9w4j`(`type_id`) USING BTREE,
INDEX `FK8ky5rrsxh01nkhctmo7d48p82`(`user_id`) USING BTREE,
CONSTRAINT `FK292449gwg5yf7ocdlmswv9w4j` FOREIGN KEY (`type_id`) REFERENCES `t_type` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
CONSTRAINT `FK8ky5rrsxh01nkhctmo7d48p82` FOREIGN KEY (`user_id`) REFERENCES `t_user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 62 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for t_comment
-- ----------------------------
DROP TABLE IF EXISTS `t_comment`;
CREATE TABLE `t_comment` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`nickname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`content` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`avatar` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`create_time` datetime(0) NULL DEFAULT NULL,
`blog_id` bigint(20) NULL DEFAULT NULL,
`parent_comment_id` bigint(20) NULL DEFAULT NULL,
`admin_comment` bit(1) NOT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 28 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for t_friend
-- ----------------------------
DROP TABLE IF EXISTS `t_friend`;
CREATE TABLE `t_friend` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`blogaddress` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`blogname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`create_time` datetime(0) NULL DEFAULT NULL,
`pictureaddress` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 58 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for t_message
-- ----------------------------
DROP TABLE IF EXISTS `t_message`;
CREATE TABLE `t_message` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`nickname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`content` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`avatar` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`create_time` datetime(0) NULL DEFAULT NULL,
`parent_message_id` bigint(20) NULL DEFAULT NULL,
`admin_message` bit(1) NOT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 100 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for t_picture
-- ----------------------------
DROP TABLE IF EXISTS `t_picture`;
CREATE TABLE `t_picture` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`pictureaddress` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`picturedescription` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`picturename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`picturetime` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 19 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for t_type
-- ----------------------------
DROP TABLE IF EXISTS `t_type`;
CREATE TABLE `t_type` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 58 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for t_user
-- ----------------------------
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`avatar` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`create_time` datetime(0) NULL DEFAULT NULL,
`email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`nickname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`type` int(11) NULL DEFAULT NULL,
`update_time` datetime(0) NULL DEFAULT NULL,
`username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
下一篇將講述後端框架的搭建
【點關注,不迷路,歡迎關注本站】