要确定一个系统的需求,首先需要明确该系统的用户有哪些,然后针对每一类用户,确定其需求。对于博客网站来说,用户有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 创建时间

关注我

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

基于SpringBoot从零构建博客网站 - 确定需求和表结构的更多相关文章

  1. 基于SpringBoot从零构建博客网站 - 技术选型和整合开发环境

    技术选型和整合开发环境 1.技术选型 博客网站是基于SpringBoot整合其它模块而开发的,那么每个模块选择的技术如下: SpringBoot版本选择目前较新的2.1.1.RELEASE版本 持久化 ...

  2. 基于SpringBoot从零构建博客网站 - 新增创建、修改、删除专栏功能

    守望博客是支持创建专栏的功能,即可以将一系列相关的文章归档到专栏中,方便用户管理和查阅文章.这里主要讲解专栏的创建.修改和删除功能,至于专栏还涉及其它的功能,例如关注专栏等后续会穿插着介绍. 1.创建 ...

  3. 基于SpringBoot从零构建博客网站 - 设计可扩展上传模块和开发修改头像密码功能

    上传模块在web开发中是很常见的功能也是很重要的功能,在web应用中需要上传的可以是图片.pdf.压缩包等其它类型的文件,同时对于图片可能需要回显,对于其它文件要能够支持下载等.在守望博客系统中对于上 ...

  4. 基于SpringBoot从零构建博客网站 - 集成editor.md开发发布文章功能

    发布文章功能里面最重要的就是需要集成富文本编辑器,目前富文本编辑器有很多,例如ueditor,CKEditor.editor.md等.这里守望博客里面是集成的editor.md,因为editor.md ...

  5. 基于SpringBoot从零构建博客网站 - 开发设置主页标识和修改个人信息功能

    由于守望博客系统中支持由用户自己设置个人主页的URL的后半段,所以必须要用户设置该标识的功能,而且是用户注册登录之后自动弹出的页面,如果用户没有设置该标识,其它的操作是不能够操作的,同时要求主页标识只 ...

  6. 基于SpringBoot从零构建博客网站 - 开发文章详情页面

    文章详情页面是博客系统中最为重要的页面,登录用户与游客都可以浏览文章详情页面,只不过只有登录用户才能进行其它的一些操作,比如评论.点赞和收藏等等. 本次的开发任务只是将文章详情页面展示出来,至于一些收 ...

  7. 基于SpringBoot从零构建博客网站 - 整合ehcache和开发注册登录功能

    对于程序中一些字典信息.配置信息应该在程序启动时加载到缓存中,用时先到缓存中取,如果没有命中,再到数据库中获取同时放到缓存中,这样做可以减轻数据库层的压力.目前暂时先整合ehcache缓存,同时预留了 ...

  8. 基于SpringBoot从零构建博客网站 - 整合lombok和mybatis-plus提高开发效率

    在上一章节中<技术选型和整合开发环境>,确定了开发的技术,但是如果直接这样用的话,可能开发效率会不高,为了提高开发的效率,这里再整合lombok和mybatis-plus两个组件. 1.l ...

  9. 基于SpringBoot从零构建博客网站 - 分页显示文章列表功能

    显示文章列表一般都是采用分页显示,比如每页10篇文章显示.这样就不用每次就将所有的文章查询出来,而且当文章数量特别多的时候,如果一次性查询出来很容易出现OOM异常. 后台的分页插件采用的是mybati ...

随机推荐

  1. css 字体两端对齐

    我想作为一个前端工作者,总会遇到这样的场景,一个表单展示的字段标题有4个字也有2个字的时候,这样子同时存在想展示的美观一点,就需要字体两端对齐了,其实实现方式很简单,我针对其中一种来做下介绍,以后方法 ...

  2. 从数据库读取数据并动态生成easyui tree构结

    一. 数据库表结构 二.从后台读取数据库生成easyui tree结构的树 1.TreeNode树结点类(每个结点都包含easyui tree 的基本属性信息) import java.io.Seri ...

  3. 使用Selenium对新浪微博模拟登录

    Selenium的配置 在项目中引入Selenium库 下载chromedriver.exe 在项目代码中加入chromedriver位置的配置 使用Selenium Selenim语法 智能等待 隐 ...

  4. jvm GC

    JavaGC.新生代.老年代 Java 中的堆是 JVM所管理的最大的一块内存空间,主要用于存放各种类的实例对象. 在 Java 中,堆被划分成两个不同的区域:新生代 ( Young ).老年代 ( ...

  5. 免费Git客户端:sourcetree详细介绍

    一.简介:一个用于Windows和Mac的免费Git客户端.Sourcetree简化了如何与Git存储库进行交互,这样您就可以集中精力编写代码.通过Sourcetree的简单Git GUI可视化和管理 ...

  6. django管理数据库之中文字符编码问题

    django中通过models创建数据库字符编码文字mysql数据库中默认的字符编码都为latin1,插入中文时会出现以下的错误类型 1366 - Incorrect string value: '\ ...

  7. Java开源生鲜电商平台-推荐系统模块的设计与架构(源码可下载)

    Java开源生鲜电商平台-推荐系统模块的设计与架构(源码可下载) 业务需求: 对于一个B2B的生鲜电商平台,对于买家而言,他需要更加快速的购买到自己的产品,跟自己的餐饮店不相关的东西,他是不关心的,而 ...

  8. Mysql中外键的 Cascade ,NO ACTION ,Restrict ,SET NULL

    外键约束对子表的含义: 如果在父表中找不到候选键,则不允许在子表上进行insert/update 外键约束对父表的含义: 在父表上进行update/delete以更新或删除在子表中有一条或多条对应匹配 ...

  9. java的Calendar,获取月份少一月的问题及其它注意事项

    java的Calendar,获取月份少一月的问题及其它注意事项: import java.util.*; public class DateClass{ public static void main ...

  10. ARP协议与ARP攻击入门

    一 ARP协议 ARP协议是一个年代相当"久远"的网络协议.ARP协议制定于1982年11月,英文全称:Address Resolution Protocol,即"地址解 ...