基于Springboot的个人博客系统的设计与实现

目录

1. 第5章  数据库设计

1.1. 数据库概念设计

1.1.1. 用户信息实体

1.1.2. 文章信息实体

1.1.3. 评论信息实体

1.1.4. 附件信息实体

1.1.5. 类别信息实体

1.1.6. 日志信息实体

1.2. 数据库表结构设计

基于Springboot的个人博客系统的设计与实现

  1. 第5章  数据库设计
    1.   数据库概念设计

本数据库设计中重要的一环首先就是概念设计,也就是说,要从实际问题出发,排除非本质的东西,抽象出现实的数据结构之客观规律。

为了把用户的数据要求清晰明确的表达出来,通常要建立一个概念性的数据模型。这个模型不关心具体的实现方式和细节,而是主要关心数据在系统中的各个处理阶段的状态。最常用的E-R图是一种概念模型,主要用于所有信息的建模,E-R模型中包含“实体”,“联系”,“属性”。它是数据库中的各个实体及其属性之间关系的一种抽象显示。本系统中所使用的数据库主要实体如下:

      1. 用户信息实体

用户信息实体包括账号、密码、邮箱、昵称等属性,如图5.1所示。

      1. 文章信息实体

文章信息实体包括文章名称、文章正文、作者、类型等属性,如图5.2所示。

图5.2 文章信息实体图

      1. 评论信息实体

评论信息实体包括评论人姓名、评论内容、是否通过审核、文章id等属性,如图5.3所示。

图5.3 评论信息实体图

      1. 附件信息实体

附件信息实体包括附件id、附件名称、附件类型等属性,如图5.4所示。

      1. 类别信息实体

类别信息实体包括类别id、类别名称、调整链接等属性,如图5.5所示。日志信息实体

日志信息实体包括日志id、访问模块名称、访问时间等属性,如图5.6所示。

图5.6 日志信息实体图

    1.  数据库表结构设计

根据对系统的需求及功能模块的分析,设计出了个人博客系统的所有数表,如下所示。

1、用户表

用户表(t_users)的主要作用是存储系统用户相关的信息数据,该表包括了username、password、screen_name等字段,其详细设置如表5.1所示。

表5.1 用户表

字段名称

数据类型

长度

能否为空

字段说明

uid

int

10

用户表主键

username

varchar

50

账号

password

varchar

50

密码

email

varchar

200

邮箱

screen_name

varchar

50

昵称

created

int

10

添加时间

2、文章表

文章表(t_contents)的主要作用是存储系统文章/页面相关的信息数据,该表包括了title、slug、tags等字段,其详细设置如表5.2所示。

表5.2 文章表

字段名称

数据类型

长度

能否为空

字段说明

cid

int

10

文章表主键

title

varchar

200

文章名称

slug

varchar

200

备注

created

varchar

10

创建时间

modified

int

10

修改时间

content

text

文章正文

author_id

int

10

作者

type

varchar

15

类型(页面/文章)

status

varchar

15

发布状态

tags

varchar

200

文章标签

categories

varchar

200

文章类别

hits

int

10

点击量

comments_num

int

10

评论数量

allow_comment

int

1

是否允许评论

allow_feed

int

1

是否允许订阅

3、评论表

评论表(t_comments)的主要作用是存储系统评论相关的信息数据,该表包括了cid、author、等字段,其详细设置如表5.3所示。

表5.3 评论表

字段名称

数据类型

长度

能否为空

字段说明

coid

int

10

评论表主键

cid

int

10

关联文章表id

created

varchar

10

创建时间

author

varchar

200

评论人姓名

owner_id

int

10

评论人id

author_id

int

10

文章作者id

mail

varchar

200

邮箱

ip

varchar

50

Ip

content

text

评论内容

status

int

10

是否通过审核

4、附件表

附件表(t_attach)的主要作用是存储系统上传文件相关的信息数据,该表包括了fname、ftype、fkey等字段,其详细设置如表5.4所示。

表5.4 附件表

字段名称

数据类型

长度

能否为空

字段说明

id

int

10

附件表主键

fname

int

100

附件名称

ftype

varchar

50

附件类型

fkey

varchar

100

附件存储路径

author_id

int

10

添加人id

created

int

10

创建时间

5、类别表

类别表(t_metas)的主要作用是存储系统文章归类/标签相关的信息数据,该表包括了name、description等字段,其详细设置如表5.5所示。

表5.5 类别表

字段名称

数据类型

长度

能否为空

字段说明

mid

int

10

类别表主键

name

int

200

类别名称

url

varchar

200

跳转的链接

type

varchar

30

类别的类型(标签/链接/分类)

description

int

10

描述

sort

int

10

排序

6、文章类别关联表

文章类别关联表(t_relationships)的主要作用是存储系统文章与归类/标签关联关系相关的信息数据,该表包括了cid、mid等字段,其详细设置如表5.6所示。

表5.6 文章类别关联表

字段名称

数据类型

长度

能否为空

字段说明

mid

int

10

类别表主键

cid

int

10

文章表id

7、系统主题表

系统主题表(t_options)的主要作用是存储系统系统主题设置相关的信息数据,该表包括了name、value字段,其详细设置如表5.7所示。

表5.7 系统主题表

字段名称

数据类型

长度

能否为空

字段说明

name

varchar

200

系统主题表主键

value

varchar

200

主题内容

8、日志表

日志表(t_logs)的主要作用是存储系统系统运行产生日志相关的信息数据,该表包括了action、data等字段,其详细设置如表5.8所示。

表5.8 日志表

字段名称

数据类型

长度

能否为空

字段说明

id

int

10

日志表主键

action

int

100

访问模块名称

data

varchar

2000

请求参数

ip

varchar

30

请求ip

created

int

10

访问时间

author_id

int

10

访问人id

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/762043.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

笔试总结01

1、spring原理 1、spring原理 spring的最大作用ioc/di,将类与类的依赖关系写在配置文件中,程序在运行时根据配置文件动态加载依赖的类,降低的类与类之间的藕合度。它的原理是在applicationContext.xml加入bean标记,在bean标记中通过class属性说明具体类…

148 Linux 网络编程4 ,高并发服务器 --多路I/O转接服务器 - poll 这个非重点,

Poll 的实现和 select 很像。 实际上poll 的核心就是我们select的优化版本&#xff0c;加入了一个数组&#xff0c; 还将传入传出参数分离开了 #include <poll.h> int poll(struct pollfd *fds, nfds_t nfds, int timeout);fds &#xff1a;需要监听的--文件描述符数组…

数据挖掘|数据集成|基于Python的数据集成关键问题处理

数据挖掘|数据集成|基于Python的数据集成关键问题处理 1. 实体识别2. 数据冗余与相关性分析3. 去除重复记录4. 数据值冲突的检测与处理5. 基于Python的数据集成5.1 merge()方法5.2 Concat()方法 数据集成是把来自多个数据库或文件等不同数据源的数据整合成一致的数据存储。其中…

基于docker创建深度学习开发环境

基于docker创建深度学习开发环境 记录几个链接 第一步&#xff1a;配置docker环境&#xff0c;此处大把教程&#xff0c;不再赘述第二步&#xff1a;拉取nvidia做好的cuda和cudnn镜像&#xff1a; docker pull nvcr.io/nvidia/cuda:12.2.0-devel-ubuntu20.04如果有其他需求&a…

vue3+threejs新手从零开发卡牌游戏(二):初始化场景

在删掉初始化中一些没用的代码后&#xff0c;在views目录下新建game文件夹&#xff0c;在里面新建一个index.vue&#xff0c;这里就当成游戏的主入口。 目录结构如下&#xff1a; 下面开始尝试创建场景&#xff1a; 一、添加一个div作为threejs的画布对象&#xff0c;之后整个…

ubuntu - 编译 linphone-sdk

业务需求需要定制sdk&#xff0c;首先声明我们需要的是在Android4.4上跑的sdk&#xff0c;因此本次编译的sdk最低支持为19&#xff08;不同版本需要的环境不一致&#xff09;&#xff0c;编译过程较容易&#xff0c;难点在于环境配置 环境准备 Ubuntu 18.04.6 android-sdk_r24.…

mysql分页查询多用GitCode平台

目录 一、在GitCode平台AI搜索结果&#xff08;这个更优&#xff09; 二、在百度搜索输入“mysql Java分页查询”的输出结果&#xff1a; 三、推荐的文章 四、GitCode的使用 1&#xff09;如搜索jdk11可以直接下载jdk11的包 2&#xff09;搜索开源项目 3&#xff09;如搜…

3.21 ARM day5

串口控制LED灯亮灭 main.c #include "uart4.h"int main() {//串口初始化uart4_init();//led初始化led_init();char i;int count 0;int count2 0;int count3 0;while (1){i getchar();putchar(i);//键盘输入a&#xff0c;串口工具显示aif (i 1){count;if (coun…

步进电机驱动器的接线与使用(接线详细)

今天小编就来继续学习与使用步行电机的学习&#xff0c;如果位置对你有帮助&#xff0c;评论收藏&#xff0c;点赞一下 步进电机驱动器 步进电机驱动器是一种专用于控制步进电机的电子设备&#xff0c;用于控制步进电机的转动和位置。步进电机是一种将电信号转换为机械运动的电…

Compose UI 之 Segmented buttons 分段按钮

Segmented buttons SegmentedButton 是一种分段式按钮组件,它允许用户在一组相关的选项中选择一个或几个。 上图中:① 单选的分段式按钮。② 多选的分段式按钮。 分段式按钮的几个特点: 分段式按钮是带有状态的按钮,又有单选和多选之分。 从设计上将,不论是单选或是多选…

第二十九章 配置 Web Gateway 的默认参数 - 与 IRIS 的连接(二)

文章目录 第二十九章 配置 Web Gateway 的默认参数 - 与IRIS 的连接(二)Event Log Rotation SizeMaximum Logged Request SizeSSL/TLS Library PathPreserve Mode Exclude File Types 第二十九章 配置 Web Gateway 的默认参数 - 与IRIS 的连接(二) Event Log Rotation Size 这…

fastjson2 反序列化包含多层泛型结构的实体类

前言 由于使用到httpUtill来调用接口 工具类的返回是字符串 其中接口的实现返回值是个多层泛型结构的实体类 例如Result<Page<UserDto>> 当使用 JSON.parseObject("res",new TypeReference<Result<Page<UserDto>>>{})发现在page中存在…

【GPT概念-03】:人工智能中的注意力机制

说明 注意力机制生成分数&#xff08;通常使用输入函数&#xff09;&#xff0c;确定对每个数据部分的关注程度。这些分数用于创建输入的加权总和&#xff0c;该总和馈送到下一个网络层。这允许模型捕获数据中的上下文和关系&#xff0c;而传统的固定序列处理方法可能会遗漏这…

QT(19)-QNetworkRequest

attribute(QNetworkRequest::Attribute code, const QVariant &defaultValue QVariant()) const 获取指定的请求属性。如果该属性未设置&#xff0c;则返回默认值。 hasRawHeader(const QByteArray &headerName) const 检查是否存在指定名称的原始请求头。 header(Q…

虚拟机扩展:虚拟机快照

虚拟机快照 在学习阶段我们无法避免的可能损坏Linux操作系统。如果损坏的话&#xff0c;重新安装一个Linux操作系统就会十分麻烦。 那我们就可以通过快照将当前虚拟机的状态保存下来&#xff0c;在以后系统损坏时通过快照恢复虚拟机到保存的状态。 制作并还原快照 在VMware …

静态方法 static foo()

静态方法&#xff08;Static Method&#xff09;是编程语言中的一种特殊方法&#xff0c;其特点是不依赖于类的实例即可被调用。在C和许多其他面向对象的编程语言中&#xff0c;静态方法通过类名来直接调用&#xff0c;而无需创建类的实例。这些方法属于类本身&#xff0c;而不…

数据结构(二)队列和栈

Java提供了java.util.Stack类来表示栈数据结构。Stack类是Vector类的子类&#xff0c;它实现了一个标准的后进先出&#xff08;LIFO&#xff09;栈。同样也提供了Queue接口&#xff0c;表示一系列按照特定顺序排列的元素&#xff0c;其中最早添加的元素将最先被移除&#xff08…

SAP HCM 0008信息类型间接评估与直接评估

如果在间接评估模块输入就是间接评估&#xff08;tarif是读取下图中的数据 a代表不需要输入工资项&#xff0c;b表示需要找工资相&#xff09; 不输入就是直接评估需要客户自己输入数字 第2个情况 summe求和 &#xff08;比如在0008中输入9000与9001 那么自动求出9002工资项数…

C# WPF编程-布局

C# WPF编程-布局 布局WPF布局原则布局过程布局容器布局属性Border控件StackPanel布局WrapPanel布局DockPanel布局Grid布局UniformGrid布局Canvas布局 布局 WPF布局原则 WPF窗口只能包含单个元素。为在WPF窗口中放置多个元素并创建更贴近实用的用户界面&#xff0c;需要在窗口…

uniapp 之 一些常用方法的封装(页面跳转,页面传参等)

util.js 提示&#xff1a;permission.js是uniapp插件市场由官方DCloud_heavensoft提供的App权限判断和提示插件。 import permision from "/js_sdk/wa-permission/permission.js"/*** uni.toast 封装* param {String} msg toast 提示内容* param {Number} duration …