个人博客数据库设计(无E-R图 粗略版)

数据库设计

在每个表都包含Id,创建时间(gmt_create),修改时间(gmt_modified)
本数据库设计没有列出索引,这个根据自己的查询情况去自己设计就好了。

用户表(user)

最开始想设计用户等级和用户最近活动时间,最后感觉没有必要,如若不需要的可以进行删减,如果后面有空再弄个论坛的数据库设计出来。
这里使用了逻辑删除(deleted)

字段: 用户Id,用户昵称,用户名(账号),用户密码,用户等级(看自己需求),
用户头像,最近活动时间(看自己需求),是否是管理员,创建时间,修改时间,是否删除。

在这里插入图片描述

文章表(article)

字段: 文章ID,文章标题,文章内容html,文章内容md,文章分类(分类表Id),文章简要描述,
是否允许评论, 是否置顶, 创建时间, 修改时间,是否删除。

在这里插入图片描述

分类表(categories)

字段: 分类Id,分类名,分类描述,包含文章数,分类图片,创建时间,修改时间,是否删除(可以添加)。

在这里插入图片描述

标签表(tags)

字段: 标签Id,标签名,标签描述,包含文章数量,创建时间,修改时间,是否删除(可以添加)。

在这里插入图片描述

文章统计表(statistics)

在文章创建的时候自动添加一个文章对应的统计数据,数据默认为0.

字段: 文章统计Id,文章Id,文章点击数,文章评论数,创建时间,修改时间

在这里插入图片描述

日志表(journal)

这个表可以根据自己需要进行设计,我这里设计只是为了记录文章发布,删除的动态而已。

字段: 日志ID,操作描述,操作状态(1正常,2删除,3移动),创建时间,修改时间

在这里插入图片描述

评论表(comment)

注意: 不是子评论的时候可以将父评论Id设置为0或者其他特殊数据。

在获取子评论的时候只需要在实体类中添加一个List Comment

@Data
@Accessors(chain = true)
public class CommentVo {
   

    @ApiModelProperty(value = "评论Id")
    private Integer id;

    @ApiModelProperty(value = "父评论Id")
    private Integer parentCommentId;

    @ApiModelProperty(value = "用户Id")
    private Integer userId;

    @ApiModelProperty(value = "评论内容")
    private String content;

    @ApiModelProperty(value = "是否置顶")
    private Boolean topping;

    @ApiModelProperty(value = "评论时间")
    private LocalDateTime gmtCreate;

    @ApiModelProperty(value = "用户昵称")
    private String nickname;

    @ApiModelProperty(value = "用户头像")
    private String avatar;

    @ApiModelProperty(value = "是否是管理员")
    private Boolean position;

    @ApiModelProperty(value = "回复的评论")
    private List<Comment> childrenComments;
}

字段: 评论Id,文章Id,父评论Id(用户回复功能,只能两级评论),评论内容,
是否置顶,评论时间,更新时间,是否删除。

在这里插入图片描述

留言表(message)

这里同样只支持两级留言。

字段: 留言Id,父留言Id,留言内容,留言者id,是否置顶,创建时间,修改时间,是否删除留言。

在这里插入图片描述

草稿表(draft)

用户存放文件草稿。

注意: 这个是文章保存草稿的时候需要先判断该文章是否存在草稿箱,如果存在则进行更新操作,如果不存在则插入新的草稿(这时候可以将文章Id设置为0获取其他特殊数据)。

字段: 草稿Id,文章Id,文章标题,文章内容html,文章内容md,创建时间,修改时间,是否删除

在这里插入图片描述

个人信息表(personal_info)

这个是用于存在个人博客页面显示的个人信息,这个数据一般只有一条数据,可以用redis中存放也可以。看自己需求放mysql还是redis中都行的。(我这里放mysql,项目这个数据使用了Redis进行了缓存处理。)

字段: 个人信息的id,名字,描述,标签描述,qq,github,gitee,csdn,小程序。

在这里插入图片描述

文章和标签中间表(article_tags)

这个表做为文章和标签的中间表,修改标签信息的时候不用去修改多个表。

字段: 文章和标签中间表Id,标签Id,文章Id,创建时间,修改时间

在这里插入图片描述

SQL文件(仅结构)

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for article
-- ----------------------------
DROP TABLE IF EXISTS `article`;
CREATE TABLE `article`  (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '文章ID',
  `title` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文章标题',
  `content_html` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文章内容html',
  `content_md` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文章内容md',
  `categories` int(11) NULL DEFAULT NULL COMMENT '文章分类',
  `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文章简要描述',
  `allow_comment` tinyint(1) NOT NULL COMMENT '是否允许评论',
  `topping` tinyint(1) NOT NULL 
  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值