基于SpringBoot从零构建博客网站 - 确定需求和表结构

要确定一个系统的需求,首先需要明确该系统的用户有哪些,然后针对每一类用户,确定其需求。对于博客网站来说,用户有3大类,分别是:

  • 作者,也即是注册用户
  • 游客,也即非注册用户
  • 管理员,网站维护人员

那么从这3大类用户的角度分析,来确定博客网站的需求。

1、作者需求

作者是博客网站中最重要的用户,是博客网站内容的直接贡献者,那么从作者的角度来说,需求有:

  • 注册、登录、退出

    这是作者进入与离开网站必不可少的功能,同时管理员可以设置是否需要激活账号的功能,如果开启了账号激活功能,那么作者注册成功后,会收到一封激活账号的邮件。

  • 个人中心

    注册成本网站的用户后,就会有个人首页,这里就会涉及到个人相关信息的维护,例如:头像设置、个人简介、修改密码。

  • 关注其她作者

    关注其她作者,成为其粉丝,同时方便下次找到该作者

  • 私信其她作者

    增加本网站作者间的互动,例如:请教其她作者问题时,就可以发私信的方式进行交流

  • 收藏文章

    碰到其她作者写的好的文章,可以将其收藏起来,方便下次查看

  • 文章维护

    文章维护是作者最主要的功能,作者发表文章、修改文章、删除文章和查看文章

  • 专栏维护

    对于写同一系列的文章,可以创建专栏,将这一系列的文章都归档于该专栏,这样方便作者管理,也方便读者查阅

  • 评论文章

    作者与读者间沟通交流的方式

2、游客需求

对于游客来说,需求相关简单,就是检索和阅读文章:

  • 检索文章

    检索文章可以从4个渠道检索,即:关键字全文检索、文章分类检索、文章所属专栏检索、文章标签检索

  • 阅读文章

    这是游客最主要的功能,查看文章的内容

3、管理员需求

管理员的主要工作就是维护本网站,让网站正常运行,为此从管理员的角度来看,需求有:

  • 报表信息

    对于管理员来说,他需要了解本网站的各项指标统计信息,例如:今日注册用户数、今日活跃用户数、文章发表量等。可以将这些报表信息做在仪表盘里面。

  • 用户管理

    查看用户信息,当然可以禁用不合法用户、创建管理员用户

  • 文章管理

    查看文章信息,同时对于不合法的文章可以将其关闭,即不能在前台显示

  • 专栏管理

    查看专栏信息

  • 系统设置

    对于系统设置主要有设置注册用户是否需要激活、设置文章是否需要审核

根据前面《确定需求》,可知这个博客网站主要由三大模块构成,分别是:

  • 用户管理及权限相关模块
  • 文章及专栏等博文相关模块
  • 公共模块

那么从这三大模块的角度来分析,确定表结构。

4、用户管理及权限相关模块

这个模块最主要是有一张用户表,用于存储用户相关的信息,具体的表结构内容如下:

用户表:auth_user

字段名 类型 说明
userId varchar(64) 主键
code varchar(64) 用户代码,用于设置用户个人主页url上的一个唯一代码
loginName varchar(200) 用户名
email varchar(200) 电子邮箱
password varchar(200) 密码
realName varchar(200) 真实姓名
cellphone varchar(32) 手机号码
idCard varchar(32) 身份证号
idCardImgPath varchar(200) 身份证照片路径
realStatus int(11) 实名认证状态,0:未实名认证,1:已实名认证,-1:实名认证失败
sex int(11) 性别,0:表示女,1:表示男,-1:表示保密
picture varchar(200) 头像图片路径
introduce varchar(2000) 个人简介
isActive int(11) 是否激活,0:未激活,1:已激活
status int(11) 账号状态,0:禁用,1:启用
follows int(11) 关注用户数量
fans int(11) 粉丝数量
createTime datetime 创建时间,也即注册时间
createIp varchar(32) 创建时的ip地址
updateTime datetime 更新时间
lastLoginTime datetime 最近一次登录的时间
lastLoginIp varchar(32) 最近一次登录的ip

对于感兴趣的用户可以加关注,则有用户粉丝关注信息表,即:

用户粉丝关注信息表:auth_user_fans

字段名 类型 说明
followWho varchar(64) 被关注用户id
whoFollow varchar(64) 关注人的id
createTime datetime 创建时间

对于权限管理这一块,其实主要后台的管理人员会涉及到。这一块采用简单的用户绑定角色,角色绑定权限的方式来设计。

角色表:auth_role

字段名 类型 说明
roleId varchar(64) 主键
name varchar(200) 角色名
note varchar(2000) 描述

用户角色关系表:auth_user_role

字段名 类型 说明
userId varchar(64) 用户表主键
roleId varchar(64) 角色表主键

权限表:auth_action

字段名 类型 说明
actionId varchar(64) 主键
name varchar(200) 权限名
note varchar(2000) 描述

角色权限关系表:auth_role_action

字段名 类型 说明
roleId varchar(64) 角色表主键
actionId varchar(64) 权限表主键

5、文章及专栏等博文相关模块

这个模块是博客网站的核心模块,主要涉及文章和专栏相关表的设计。

一个博客网站里面文章和专栏都会归类,比如是属于架构设计、还是属于前端开发的内容,所以需要一张分类信息表,即:

分类信息表:blog_category

字段名 类型 说明
categoryId varchar(64) 主键
name varchar(200) 分类名称
introduce varchar(2000) 说明
parentId varchar(64) 父节点id
orderId int(11) 排序号

在写文章时,可以为文章写相应标签,有利于文章的检索,那么就得有一张标签表,即;

标签表:blog_tag

字段名 类型 说明
tagId varchar(64) 主键
tag varchar(200) 标签
createTime datetime 创建时间

在写一系列相关的文章时,可以创建一个专栏,也检索文章增加专栏这样一个维度,那么专栏信息表结构如下:

专栏信息表:blog_group

字段名 类型 说明
groupId varchar(64) 主键
name varchar(200) 名称
logo varchar(200) 图标logo路径
introduce varchar(2000) 介绍
status int(11) 审核状态,0:未审核,1:已审核,-1:审核不通过
categoryId varchar(64) 所属分类id
creator varchar(64) 创建者,也即用户表主键
createTime datetime 创建时间
updateTime datetime 更新时间

用户对感兴趣的专栏可以进行关注,那么就有一个专栏的关注信息表,即:

关注专栏信息表:blog_group_fans

字段名 类型 说明
groupId varchar(64) 主键
userId varchar(64) 用户表主键
createTime datetime 创建时间

博客网站最主要的内容就是文章,为此文章信息表极为重要,它的结构如下:

文章信息表:blog_article

字段名 类型 说明
articleId varchar(64) 主键
groupId varchar(64) 专栏信息表主键
type int(11) 文章类型,1:原创,2:翻译,3:转载
title varchar(200) 标题
description varchar(2000) 描述
content longtext 内容
status int(11) 文章状态,1:待审核,2:审核通过,-1:审核不通过
canTop int(11) 是否置顶,0:不置顶,1置顶
canComment int(11) 是否可以评论,0:不可评论,1:可以评论
viewCount bigint(20) 浏览次数
goodNum bigint(20) 点赞次数
badNum bigint(20) 踩的次数
checkAdmin varchar(64) 审核管理员id
createTime datetime 创建时间
createIp varchar(64) 创建时ip
publishTime datetime 发布时间
updateTime datetime 更新时间
userId varchar(64) 用户表主键

可以为文章打上标签,为此文章与标签的关系表,即:

文章标签关系表:blog_article_tag

字段名 类型 说明
articleId varchar(64) 文章表主键
tagId varchar(64) 标签表主键
createTime datetime 创建时间

用户对于好的文章可以进行收藏,则有一个收藏文章信息表,即:

收藏文章信息表:blog_collect_article

字段名 类型 说明
userId varchar(64) 用户表主键
articleId varchar(64) 文章表主键
createTime datetime 创建时间

6、公共模块

站点有一些配置信息,对于相关的配置信息也可以是放在配置文件中,这里将一些配置信息放置于数据库中,即站点相关配置信息表:

站点相关配置信息表:comm_config

字段名 类型 说明
configId varchar(200) 配置项key
configValue varchar(1024) 配置项value
description varchar(2000) 描述

对于记录文件上传下载信息,则需要上传文件信息表:

上传文件信息表:comm_upload_file

字段名 类型 说明
uploadFileId varchar(64) 主键
path varchar(200) 保存文件路径
orignalName varchar(200) 文件原始名称
fileSize bigint(20) 文件大小
fileType varchar(200) 文件类型
distType varchar(200) 实体类型
userId varchar(64) 用户id
createTime datetime 创建时间
downloadNum bigint(20) 下载次数

评论模块对于网站来说也是必不可少的,所以记录评论信息的表如下:

评论信息表:comm_comment

字段名 类型 说明
commentId varchar(64) 主键
distId varchar(64) 评论目标id
distType varchar(200) 目标类型
content text 评论内容
userId varchar(64) 评论人的id
goodNum bigint(20) 点赞数
createTime datetime 创建时间
createIp varchar(32) 评论时的ip

评论回复信息表:comm_comment_reply

字段名 类型 说明
commentReplyId varchar(64) 主键
replyDistId varchar(64) 回复目标id
replyDistType varchar(200) 回复目标类型
content text 回复内容
fromUserId varchar(64) 回复用户id
toUserId varchar(64) 被回复人的id
goodNum bigint(20) 点赞数
createTime datetime 回复时间
createIp varchar(32) 回复时的ip
commentId varchar(64) 评论id

根据前面的需求,是有一个私信的功能,那么私信相关的表如下:

私信信息表:comm__message

字段名 类型 说明
messageId varchar(64) 主键
senderId varchar(64) 发信者ID
receiverId varchar(64) 收信者ID
content text 私信内容
isRead int(10) 是否已读标识,1表示已读;0表示未读
senderDel int(10) 发信者是否删除,1表示删除;0表示未删除
receiverDel int(10) 收信者是否删除,1表示删除;0表示未删除
createTime datetime 创建时间

记录业务日志信息,可以为查找问题提供很好证明,为些日志信息表为:

日志信息表:comm_log

字段名 类型 说明
logId varchar(64) 主键
userId varchar(64) 用户表主键
ip varchar(32) 操作时的ip
distType varchar(200) 操作目标类型
distId varchar(64) 操作目标id
content varchar(2000) 日志内容
createTime datetime 创建时间

关注我

以你最方便的方式关注我:
微信公众号:

posted @ 2019-04-15 13:44  架构与我  阅读(600)  评论(0编辑  收藏  举报