分享一下我写的企业博客项目的数据库设计。
我数据库有8个表,分别是:
admin(管理员表)、comments(评论表)、contact(用户反馈表)、contents(博客表)、great(点赞信息表)、reply(回复表)、sys_contice(系统通知表)、user(用户表)
管理员表:admin
表字段 | 类型 | 注释 |
---|---|---|
id | int | 主键 |
count | varchar | 账号 |
password | varchar | 密码 |
department | varchar | 部门 |
用户表:user
表字段 | 类型 | 注释 |
---|---|---|
id | int | 主键 |
name | varchar | 用户名 |
photo | varchar | 用户头像 |
varchar | 用户邮箱 | |
password | varchar | 用户密码 |
telephone | varchar | 用户电话 |
博客表:contents
表字段 | 类型 | 注释 |
---|---|---|
id | int | 主键 |
aid | int | 管理员id(外键——admin.id) |
admin_department | varchar | 管理员部门 |
date | date | 时间 |
title | varchar | 标题 |
content | longtext | 内容 |
pic | varchar | 博客中第一张图片的url(默认为空) |
star | int | 点赞数(默认为0) |
comment | int | 评论数(默认为0) |
view | int | 访问数(默认为0) |
表中冗余admin_department方便查询
pic字段存储博客中第一张图片的url地址,如果没有为空,用来在预览博客的界面显示博客的图片,类似下图
用户反馈表:contact
表字段 | 类型 | 注释 |
---|---|---|
id | int | 主键 |
uid | int | 用户id(外键——user.id) |
uname | varchar | 用户昵称 |
title | varchar | 标题 |
content | varchar | 内容 |
date | date | 时间 |
status | tinyint | 0:未读,1:已读(默认为0) |
博客网站有用户反馈界面,status字段用来判断该用户反馈信息管理员是否已经查看,和普通社交网站的信息界面一样,是我想添加的一个功能
评论表:comments
表字段 | 类型 | 注释 |
---|---|---|
id | int | 主键 |
uid | int | 用户id(外键——user.id) |
cid | int | 博客id(外键——contents.id) |
uname | varchar | 用户昵称 |
content | varchar | 内容 |
reply_count | int | 评论被回复的数目(默认0) |
date | date | 时间 |
star | int | 点赞数 |
回复表:reply
表字段 | 类型 | 注释 |
---|---|---|
id | int | 主键 |
cid | int | 回复所属博客id(外键——contents.id) |
comment_id | int | 回复所属评论id(外键——comments.id) |
from_uid | int | 回复用户id(外键——user.id) |
to_uid | int | 被回复用户id(外键——user.id) |
from_uname | varchar | 回复用户昵称 |
to_uname | varchar | 被回复用户昵称 |
date | date | 时间 |
content | varchar | 内容 |
star | int | 点赞(默认0) |
status | tinyint | 0未读、1已读 |
我的评论在第一级,回复统一放在第二级,就像csdn的评论结构一样。我并没有像我参考的博客那样把回复分成对评论的回复和对回复的回复,我是想只要知道评论下属的所有回复,然后把回复按时间排序就可以了。
我在该表中冗余了from_uname和to_uname字段,这两个字段的值是可以通过to_uid和from_uid查询的,我的评论界面是仿照csdn的界面的,所以我需要显示回复者和被回复者的姓名。冗余之后我们只要查询单表就可以了。
系统通知表:sys_notice
表字段 | 类型 | 注释 |
---|---|---|
id | int | 主键 |
content | varchar | 内容 |
date | date | 时间 |
status | tinyint | 0未读,1已读 |
点赞信息表:great
表字段 | 类型 | 注释 |
---|---|---|
id | int | 主键 |
cid | int | 博客id |
uid | int | 点赞用户id(外键——user.id) |
type_id | int | 博客、评论或回复id |
type | int | 0博客点赞、1评论点赞和2回复点赞(默认0) |
date | date | 时间 |
status | tinyint | 0已读,1未读(默认0) |
不止博客可以被点赞,用户的评论和回复也可以被点赞,type字段的值说明被点赞的是什么类型,我在网上看到很多博客的点赞表中还加了status字段表示已赞和未赞,我觉得没什么必要就去掉了,点了赞就创建一条数据,取消赞就把这条数据删除,点赞信息表是用来判断当前登录用户是否对博客、评论或者回复点过赞。
字段cid是后面添加的,它表示所属博客下的点赞信息,就是说如果这是评论点赞信息,该评论是cid博客下的评论,回复同理,如果是博客则cid=type_id。
参考博文:博客1