SpringBoot开源项目个人博客——(2)总体设计

        本人只是直接参考别人的项目来实现,并没有直接做出什么需求上设计。在视频中,李老师说:我们在做原型界面时,就是在某种程度上把需求转化为具体实现了,这样就更能更方便抽象需求为实体类。

一、功能需求

博客网站,当然要有博客类,把它抽象为一个类,它的title,conten......就可以作为它的属性;分类虽然可以作为博客的属性,但把分类抽出来作为一个类,更方便管理,可以对分类进行维护、查询、管理,让分类和博客建立一个关系。博客的一条条的评论也要抽出来作为一个类,让评论和博客也建立关系。

作为个人博客网站,虽然可以不用用户,但是有用户在后台可以进行管理,做登录的时候就会有权限限制了其他人随便操作,作为安全性保证。所以需要把用户抽出作为一个类,有了用户类也,博客就可以关联上用户的一些信息。

其余在前端设计的时候,做出的友链相册的需求就也要独立抽出来作为类。留言需求其实跟评论类似,只是缺少了博客的关联,也独立抽出来作为类。

引用oneStar博客的内容 ↓

总的下来,功能需求如下:

1.普通用户

  • 查看文章信息:文章列表、推荐文章、文章标题、文章内容、发布时间、访问量以及评论等信息

  • 查看分类文章:分类列表、分类文章信息

  • 查看时间轴:按照文章时间发布顺序查看文章

  • 搜索文章:导航栏右边搜索框根据关键字搜索

  • 听音乐:网易云外链

  • 留言:留言并回复

  • 查看友链:查看并访问博主在友链页面添加的友链连接

  • 查看相册信息:相册列表、照片名称、照片拍摄地点、时间、照片描述

2.管理员用户(栈主)

  • 拥有普通用户所有功能权限

  • 登录:在主页路径下加“/admin”,可进入登录页面,根据数据库的用户名和密码进行登录

  • 文章管理:查询文章列表、新增文章、编辑文章、删除文章、搜索文章

  • 分类管理:查询分类列表、新增分类、编辑分类、删除分类

  • 友链管理:查询友链列表、新增友链、编辑友链、删除友链

  • 相册管理:查询相册列表、新增照片、编辑照片、删除照片

  • 消息管理:登录后恢复评论留言会显示栈主的头像信息,并能显示删除消息按键,可以对消息进行删除

二、数据库设计

整个数据库沿用oneStar的设计

1.数据表

  • 博客数据表:t_blog

  • 分类数据表:t_type

  • 用户数据表:t_user

  • 评论数据表:t_comment

  • 留言数据表:t_message

  • 友链数据表:t_friend

  • 相册数据表:t_picture

2.实体关系

至于为什么不合原型视频一样,不把评论和博客进行物理外键关联

可能为了防止博客被删时,导致评论的关系约束的错误吧,这样也可以保留住评论的存储。

(具体可以询问oneStar老哥)

  • 数据库建立成功后的模型图

 这里就不画ER图来表明了,在此就用UML类图展示各个字段的含义即可。


  • 博客和 分类、用户的关系。

 

一个博客对应一个用户,一个用户对应多个博客。(用户可以发多篇博客)

一个博客对应一个分类,一个分类下可以有多篇博客。

  • 评论类自关联关系:

实现回复需要在父评论下,评论和回复间是有着 一对多的关系。

  • 留言类自关联关系

留言同理。

友链、图片数据表都是独立的。

本项目对于用户管理业务也较少,虽然有些User的一些字段在项目实现中尚未使用,但也可以先留着。

3.建表语句

/*
 Navicat MySQL Data Transfer

 Source Server         : localhost_3306
 Source Server Type    : MySQL
 Source Server Version : 50735
 Source Host           : localhost:3306
 Source Schema         : myblog

 Target Server Type    : MySQL
 Target Server Version : 50735
 File Encoding         : 65001

 Date: 29/05/2022 13:11:51
*/

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 COMMENT '主键id',
  `appreciation` bit(1) NOT NULL COMMENT '是否开启赞赏',
  `commentabled` bit(1) NOT NULL COMMENT '是否开启评论',
  `content` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '博客内容',
  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
  `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '博客描述',
  `first_picture` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '首图地址',
  `flag` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '是否为原创',
  `published` bit(1) NOT NULL COMMENT '是否发布',
  `recommend` bit(1) NOT NULL COMMENT '是否推荐',
  `share_statement` bit(1) NOT NULL COMMENT '是否开启版权',
  `title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '博客标题',
  `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
  `views` int(11) NULL DEFAULT NULL COMMENT '浏览次数',
  `type_id` bigint(20) NULL DEFAULT NULL COMMENT '博客的分类id',
  `user_id` bigint(20) NULL DEFAULT NULL COMMENT '博客的用户id',
  `comment_count` int(255) NULL DEFAULT NULL COMMENT '评论次数',
  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 = 14 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 COMMENT '评论主键id',
  `nickname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '评论者昵称',
  `email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '评论者邮箱',
  `content` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '评论内容',
  `avatar` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '评论者头像',
  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
  `blog_id` bigint(20) NULL DEFAULT NULL COMMENT '博客id',
  `parent_comment_id` bigint(20) NULL DEFAULT NULL COMMENT '父评论id',
  `admin_comment` bit(1) NOT NULL COMMENT '是否是管理员',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 45 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 COMMENT '友链主键id',
  `blogaddress` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '友链地址',
  `blogname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '友链名称',
  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
  `pictureaddress` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '友链图片地址',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 11 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 COMMENT '留言id',
  `nickname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '昵称',
  `email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邮箱',
  `content` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '留言内容',
  `avatar` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '头像',
  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
  `parent_message_id` bigint(20) NULL DEFAULT NULL COMMENT '父留言id',
  `admin_message` bit(1) NOT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 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 COMMENT '图片主键id',
  `pictureaddress` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图片地址',
  `picturedescription` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图片描述',
  `picturename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图片名称',
  `picturetime` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '拍摄地点和时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 7 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 = 13 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 COMMENT '用户主键id',
  `avatar` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '头像地址',
  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
  `email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邮箱',
  `nickname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '昵称',
  `password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '密码',
  `type` int(11) NULL DEFAULT NULL COMMENT '用户类型',
  `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
  `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户名',
  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;

在Navicat构建完成后的表结构如下:

  • 博客表

  • 评论表

  • 友链表

  • 留言表

  • 图片表

  • 分类表

  • 用户表

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值