目录
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的个人博客系统的设计与实现
本数据库设计中重要的一环首先就是概念设计,也就是说,要从实际问题出发,排除非本质的东西,抽象出现实的数据结构之客观规律。
为了把用户的数据要求清晰明确的表达出来,通常要建立一个概念性的数据模型。这个模型不关心具体的实现方式和细节,而是主要关心数据在系统中的各个处理阶段的状态。最常用的E-R图是一种概念模型,主要用于所有信息的建模,E-R模型中包含“实体”,“联系”,“属性”。它是数据库中的各个实体及其属性之间关系的一种抽象显示。本系统中所使用的数据库主要实体如下:
用户信息实体包括账号、密码、邮箱、昵称等属性,如图5.1所示。
文章信息实体包括文章名称、文章正文、作者、类型等属性,如图5.2所示。
图5.2 文章信息实体图
评论信息实体包括评论人姓名、评论内容、是否通过审核、文章id等属性,如图5.3所示。
图5.3 评论信息实体图
附件信息实体包括附件id、附件名称、附件类型等属性,如图5.4所示。
类别信息实体包括类别id、类别名称、调整链接等属性,如图5.5所示。日志信息实体
日志信息实体包括日志id、访问模块名称、访问时间等属性,如图5.6所示。
图5.6 日志信息实体图
根据对系统的需求及功能模块的分析,设计出了个人博客系统的所有数表,如下所示。
1、用户表
用户表(t_users)的主要作用是存储系统用户相关的信息数据,该表包括了username、password、screen_name等字段,其详细设置如表5.1所示。
表5.1 用户表
| 字段名称 | 数据类型 | 长度 | 能否为空 | 字段说明 | 
| uid | int | 10 | 否 | 用户表主键 | 
| username | varchar | 50 | 能 | 账号 | 
| password | varchar | 50 | 能 | 密码 | 
|  | 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 | 
|  | 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 |