【SpringBoot搭建個人博客】- 技術需求(二)

本文將從技術棧、功能需求、數據庫設計來講述,前端頁面展示可以看我上一篇文章:【SpringBoot搭建個人博客】- 前端頁面展示(一)

一、技術棧

1.前端

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;

下一篇將講述後端框架的搭建

【點關注,不迷路,歡迎關注本站】

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章