朋友圈数据库说明
- 2020-01-08 v1
- 2020-01-10 v2 评论表拆分成2张表(评论表和回复表),取消ip统计
- 2020-01-11 v3 数据库字段
- 2020-01-12 v4 定版,删除了部分冗余字段
1、用户表
- 原user表追加一个字段(朋友圈背景图),头像和昵称即原user表字段,background_img
2、动态表(文章表)
表信息
字段 | 说明 |
---|---|
主题文字 | 200字限制,两个#号之间为话题词,单独字段保存,正则匹配到然后存入数据库,查询时拆分成数组给前端 |
动态类型 | 文本,图片,视频 |
标签 | 用竖线分割 |
点赞数 | |
评论数 | 可查表或存字段 |
发布时间 | 创建时间 |
审核状态 | 此版本默认全审核通过,后期可进行鉴黄等只能操作 |
用户id |
其他说明
- 搜索是搜索文本和话题词,
搜索历史是否需要入库(或纯redis存储)前端local存储 - orderby(发布时间desc),分页20
CREATE TABLE `friends_article` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL DEFAULT 0 COMMENT '所属用户id',
`topic` varchar(255) NOT NULL DEFAULT '' COMMENT '主题文字',
`type` tinyint(1) NOT NULL DEFAULT 1 COMMENT '类型 1=文本2=图片3=视频',
`cover_img` varchar(255) NOT NULL DEFAULT '' COMMENT '封面图 只有图片和视频类型才有',
`tags` varchar(255) NOT NULL DEFAULT '' COMMENT '标签 使用|分割',
`like` int(11) NOT NULL DEFAULT 0 COMMENT '点赞数',
`comment_count` int(11) NOT NULL DEFAULT 0 COMMENT '评论数',
`is_check` tinyint(1) NOT NULL DEFAULT 1 COMMENT '审核状态 0=未审核1=已审核',
`create_time` int(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `index_uid` (`uid`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=51 DEFAULT CHARSET=utf8mb4 COMMENT='朋友圈-文章';
3、媒资表
表信息
字段 | 说明 |
---|---|
文章id | 文章1对多媒资 |
资源类型 | 内容图片,视频 |
资源地址 | |
媒体id | 只有视频才有 |
CREATE TABLE `friends_resource` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`article_id` int(11) NOT NULL DEFAULT 0 COMMENT '文章id',
`type` tinyint(1) NOT NULL DEFAULT 1 COMMENT '资源类型1=图片地址2=视频地址',
`path` varchar(255) NOT NULL DEFAULT '' COMMENT '资源地址',
`video_id` varchar(50) NOT NULL DEFAULT '' COMMENT '媒体id 只有视频才有',
PRIMARY KEY (`id`),
KEY `index_article_id` (`article_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='朋友圈-媒资';
4、评论表和回复表
评论表
字段 | 说明 |
---|---|
文章id | 文章表1对多评论 |
评论内容 | 100字限制 |
点赞数 | |
评论时间 | 创建时间 |
评论人id | 发表评论的用户id |
置顶时间 | 默认0,置顶则修改时间,取消则恢复0 |
CREATE TABLE `friends_comment` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`article_id` int(11) NOT NULL DEFAULT 0 COMMENT '文章id',
`content` varchar(255) NOT NULL DEFAULT '' COMMENT '评论内容',
`like` int(11) NOT NULL DEFAULT 0 COMMENT '点赞数',
`from_id` int(11) NOT NULL DEFAULT 0 COMMENT '发表评论的用户id',
`top_time` int(11) NOT NULL DEFAULT 0 COMMENT '置顶时间',
`create_time` int(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `index_article_id` (`article_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=101 DEFAULT CHARSET=utf8mb4 COMMENT='朋友圈-评论';
其他说明
- orderby(置顶desc,点赞数desc,评论时间desc)分页20
回复表
字段 | 说明 |
---|---|
评论表id | |
回复内容 | 100字限制 |
评论者 from_id | |
被评论者 to_id | |
是否删除 | |
创建时间 |
CREATE TABLE `friends_reply` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`comment_id` int(11) NOT NULL COMMENT '评论id',
`content` varchar(255) NOT NULL DEFAULT '' COMMENT '回复内容',
`pid` int(11) NOT NULL DEFAULT 0 COMMENT '上级回复id,回复的是评论则为0',
`from_id` int(11) NOT NULL DEFAULT 0 COMMENT '回复人id',
`to_id` int(11) NOT NULL DEFAULT 0 COMMENT '被回复人id',
`is_delete` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0=正常 1=已删除 已删除的只是隐藏,pid回复的结构依然不变',
`create_time` int(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `index_comment_id` (`comment_id`) USING BTREE,
KEY `index_pid` (`pid`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=2001 DEFAULT CHARSET=utf8mb4 COMMENT='朋友圈-回复';
其他说明
- orderby(回复时间asc)
- 递归pid展示,然后隐藏被删除的数据
5、我的动态表,流水log类,但需要删除
表信息
字段 | 说明 |
---|---|
文章id | |
用户id | 也就是评论表里的评论对象或点赞时点赞对象 |
类型 | 点赞,评论 |
内容 | 回复的文本或’‘点赞” |
文章封面图 | 纯冗余,封面图一旦确定不可变更 |
对方用户id | 谁给我的评论or文章点赞和回复 |
创建时间 | 回复或点赞时间 |
评论id |
CREATE TABLE `friends_news` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`article_id` int(11) NOT NULL DEFAULT 0 COMMENT '文章id',
`comment_id` int(11) NOT NULL DEFAULT 0 COMMENT '评论id',
`reply_id` int(11) NOT NULL DEFAULT 0 COMMENT '回复id',
`uid` int(11) NOT NULL DEFAULT 0 COMMENT '点赞和评论的对象id 也就是此记录的所有者id',
`type` tinyint(1) NOT NULL DEFAULT 1 COMMENT '类型 1=点赞 2=评论',
`content` varchar(255) NOT NULL DEFAULT '' COMMENT '内容',
`cover_img` varchar(255) NOT NULL DEFAULT '' COMMENT '封面图',
`from_id` int(11) NOT NULL DEFAULT 0 COMMENT '对方用户id 谁给我的评论or文章点赞和回复',
`create_time` int(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `index_article_id` (`article_id`) USING BTREE,
KEY `index_comment_id` (`comment_id`) USING BTREE,
KEY `index_uid` (`uid`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='朋友圈-我的动态';
其他说明
- 触发条件:他人对自己(文章,评论)的点赞,对自己(文章,评论)的回复,直接关系人就是自己
- 每次触发写入redis累计计数,进我的动态页面的时候清除对应计数
- 评论删除,文章删除和点赞取消,都要删除对应动态记录
6、标签表
表信息:标签名称,创建时间
CREATE TABLE `friends_tags` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(50) NOT NULL DEFAULT '',
`create_time` int(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='朋友圈-标签';
其他说明
- 纯后端行为,标签修改,删除不影响在动态里面的标签数据
7、访问记录
表信息:访问时间(创建时间),类型(app,h5)
CREATE TABLE `friends_pv` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`type` tinyint(4) NOT NULL DEFAULT 1 COMMENT '访问渠道 1=app 2=分享的h5',
`create_time` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='朋友圈-统计pv';
其他说明
- 统计pv
- 进app主页就触发,进分享的朋友圈h5就触发
8、主要表关系
用户 1对多 文章,1对多 我的动态
文章 1对多 评论,1对多 媒资,1对1 用户
评论 1对多 回复,回复pid格式化时递归展示