Uninote
Uninote

朋友圈数据库说明

  • 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格式化时递归展示

关联代码片段

模块接口

点赞(0) 阅读(1) 举报
目录
标题