基于SpringBoot从零构建博客网站 - 确定需求和表结构
要确定一个系统的需求,首先需要明确该系统的用户有哪些,然后针对每一类用户,确定其需求。对于博客网站来说,用户有3大类,分别是:
- 作者,也即是注册用户
- 游客,也即非注册用户
- 管理员,网站维护人员
那么从这3大类用户的角度分析,来确定博客网站的需求。
1、作者需求
作者是博客网站中最重要的用户,是博客网站内容的直接贡献者,那么从作者的角度来说,需求有:
注册、登录、退出
这是作者进入与离开网站必不可少的功能,同时管理员可以设置是否需要激活账号的功能,如果开启了账号激活功能,那么作者注册成功后,会收到一封激活账号的邮件。
个人中心
注册成本网站的用户后,就会有个人首页,这里就会涉及到个人相关信息的维护,例如:头像设置、个人简介、修改密码。
关注其她作者
关注其她作者,成为其粉丝,同时方便下次找到该作者
私信其她作者
增加本网站作者间的互动,例如:请教其她作者问题时,就可以发私信的方式进行交流
收藏文章
碰到其她作者写的好的文章,可以将其收藏起来,方便下次查看
文章维护
文章维护是作者最主要的功能,作者发表文章、修改文章、删除文章和查看文章
专栏维护
对于写同一系列的文章,可以创建专栏,将这一系列的文章都归档于该专栏,这样方便作者管理,也方便读者查阅
评论文章
作者与读者间沟通交流的方式
2、游客需求
对于游客来说,需求相关简单,就是检索和阅读文章:
检索文章
检索文章可以从4个渠道检索,即:关键字全文检索、文章分类检索、文章所属专栏检索、文章标签检索
阅读文章
这是游客最主要的功能,查看文章的内容
3、管理员需求
管理员的主要工作就是维护本网站,让网站正常运行,为此从管理员的角度来看,需求有:
报表信息
对于管理员来说,他需要了解本网站的各项指标统计信息,例如:今日注册用户数、今日活跃用户数、文章发表量等。可以将这些报表信息做在仪表盘里面。
用户管理
查看用户信息,当然可以禁用不合法用户、创建管理员用户
文章管理
查看文章信息,同时对于不合法的文章可以将其关闭,即不能在前台显示
专栏管理
查看专栏信息
系统设置
对于系统设置主要有设置注册用户是否需要激活、设置文章是否需要审核
根据前面《确定需求》,可知这个博客网站主要由三大模块构成,分别是:
- 用户管理及权限相关模块
- 文章及专栏等博文相关模块
- 公共模块
那么从这三大模块的角度来分析,确定表结构。
4、用户管理及权限相关模块
这个模块最主要是有一张用户表,用于存储用户相关的信息,具体的表结构内容如下:
用户表:auth_user
| 字段名 | 类型 | 说明 |
|---|---|---|
| userId | varchar(64) | 主键 |
| code | varchar(64) | 用户代码,用于设置用户个人主页url上的一个唯一代码 |
| loginName | varchar(200) | 用户名 |
| 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从零构建博客网站 - 确定需求和表结构的更多相关文章
- 基于SpringBoot从零构建博客网站 - 技术选型和整合开发环境
技术选型和整合开发环境 1.技术选型 博客网站是基于SpringBoot整合其它模块而开发的,那么每个模块选择的技术如下: SpringBoot版本选择目前较新的2.1.1.RELEASE版本 持久化 ...
- 基于SpringBoot从零构建博客网站 - 新增创建、修改、删除专栏功能
守望博客是支持创建专栏的功能,即可以将一系列相关的文章归档到专栏中,方便用户管理和查阅文章.这里主要讲解专栏的创建.修改和删除功能,至于专栏还涉及其它的功能,例如关注专栏等后续会穿插着介绍. 1.创建 ...
- 基于SpringBoot从零构建博客网站 - 设计可扩展上传模块和开发修改头像密码功能
上传模块在web开发中是很常见的功能也是很重要的功能,在web应用中需要上传的可以是图片.pdf.压缩包等其它类型的文件,同时对于图片可能需要回显,对于其它文件要能够支持下载等.在守望博客系统中对于上 ...
- 基于SpringBoot从零构建博客网站 - 集成editor.md开发发布文章功能
发布文章功能里面最重要的就是需要集成富文本编辑器,目前富文本编辑器有很多,例如ueditor,CKEditor.editor.md等.这里守望博客里面是集成的editor.md,因为editor.md ...
- 基于SpringBoot从零构建博客网站 - 开发设置主页标识和修改个人信息功能
由于守望博客系统中支持由用户自己设置个人主页的URL的后半段,所以必须要用户设置该标识的功能,而且是用户注册登录之后自动弹出的页面,如果用户没有设置该标识,其它的操作是不能够操作的,同时要求主页标识只 ...
- 基于SpringBoot从零构建博客网站 - 开发文章详情页面
文章详情页面是博客系统中最为重要的页面,登录用户与游客都可以浏览文章详情页面,只不过只有登录用户才能进行其它的一些操作,比如评论.点赞和收藏等等. 本次的开发任务只是将文章详情页面展示出来,至于一些收 ...
- 基于SpringBoot从零构建博客网站 - 整合ehcache和开发注册登录功能
对于程序中一些字典信息.配置信息应该在程序启动时加载到缓存中,用时先到缓存中取,如果没有命中,再到数据库中获取同时放到缓存中,这样做可以减轻数据库层的压力.目前暂时先整合ehcache缓存,同时预留了 ...
- 基于SpringBoot从零构建博客网站 - 整合lombok和mybatis-plus提高开发效率
在上一章节中<技术选型和整合开发环境>,确定了开发的技术,但是如果直接这样用的话,可能开发效率会不高,为了提高开发的效率,这里再整合lombok和mybatis-plus两个组件. 1.l ...
- 基于SpringBoot从零构建博客网站 - 分页显示文章列表功能
显示文章列表一般都是采用分页显示,比如每页10篇文章显示.这样就不用每次就将所有的文章查询出来,而且当文章数量特别多的时候,如果一次性查询出来很容易出现OOM异常. 后台的分页插件采用的是mybati ...
随机推荐
- Linux下高并发socket最大连接数
http://soft.chinabyte.com/os/285/12349285.shtml (转载时原文内容做个修改) 1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是 ...
- Java 重入锁 ReentrantLock 原理分析
1.简介 可重入锁ReentrantLock自 JDK 1.5 被引入,功能上与synchronized关键字类似.所谓的可重入是指,线程可对同一把锁进行重复加锁,而不会被阻塞住,这样可避免死锁的产生 ...
- Visual Studio 2017 15.7 下的.NET Core
Visual Studio 2017 15.7版本发布,对.NET Core项目的主要相关改变如下, 同时对Xamarin.Android和iOS项目的支持上也做了较大改进. 一. .NET Core ...
- Java 面试知识点解析(一)——基础知识篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
- PAT1039: Course List for Student
1039. Course List for Student (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Y ...
- python+selenium实现登录账户
selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Gr ...
- spring+activemq中多个consumer同时处理消息时遇到的性能问题
最近在做数据对接的工作,用到了activemq,我需要从activemq中接收消息并处理,但是我处理数据的步骤稍微复杂,渐渐的消息队列中堆的数据越来越多,就想到了我这边多开几个线程来处理消息. 可是会 ...
- Tiny4412之按键驱动
一:按键驱动 按键驱动跟之前的LED,蜂鸣器的方法类似:通过底板,核心板我们可以看到按键的电路图: 通过电路图我们可以看出,当按键按下去为低电平,松开为高电平:所以我们要检测XEINT26的状态,通过 ...
- java通过反射获取字段的类型
import java.lang.reflect.Field; //这是需要引入的包 Field[] f = 类名.class.getDeclaredFields(); //获取该类的字段for(F ...
- SSM-Spring-12:Spring中NameMatchMethodPointcutAdvisor名称匹配方法切入点顾问
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- advice 是通知advisor 是顾问 顾问(Advisor) 通知Advice是Spring提供的一种切 ...