问答

社交平台 关注/粉丝/互关 数据结构设计?

作者:admin 2021-04-18 我要评论

社交应用中常有 关注/粉丝/互关: 这类关系:是多对多关系,数据库表结构该是怎么设计的呢? 问: 这块业务功能怎么实现,有sf小伙伴能提下实现思路的没? 谢过 ...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

社交应用中常有 关注/粉丝/互关:
image
image

这类关系:是多对多关系,数据库表结构该是怎么设计的呢?

问:
这块业务功能怎么实现,有sf小伙伴能提下实现思路的没? 谢过 ^_^

###

关注表

字段类型备注
user_idint用户id
follow_idint关注id
create_atint创建时间

粉丝表

字段类型备注
user_idint用户id
fans_idint粉丝id
create_atint创建时间

一般这么处理表

###

fans_relationship

ColumnTypeComment
idint可有可无
uidintpk,用户id
fans\_uidintpk,粉丝id
statusint状态:0 取消关注,1 正在关注, 2 相互关注
  • 用户A关注用户B,首先查询之前是否已经取消的记录,判断是需要插入数据还是修改之前的数据,还需要判断用户B是否关注了用户A

    • 是 : 本记录 status = 2,同时修改用户B关注用户A记录的status=2
    • 否 : 本记录 status = 1
  • 用户A取消关注用户B,直接改状态就ok了,同样需要判断用户B是否关注了用户A

    • 是 : 本记录 status = 0 ,同时修改用户B关注用户A的记录status=1
    • 否 : 本记录 status = 0
  • 查询
-- 查询uid=1的用户粉丝列表及是否互粉
select fans_uid, status from fans_relationship where uid = 1 and status > 0

-- 查询uid=1的用户关注了谁及是否互粉
select uid, status from fans_relationship where fans_uid = 1 and status > 0
###

up,up,up

###

数据库怎么设计这一块楼上已经说了, 说说个人经验,实现这个功能.
碰到这种业务,一般采用 Redis 来实现的:
使用redis实现互粉功能

这个可以参考一下

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • nginx响应速度很慢

    nginx响应速度很慢

  • 点击选中的多选框,会在已选那一栏显示

    点击选中的多选框,会在已选那一栏显示

  • PHP 多态的理解

    PHP 多态的理解

  • 关于C语言中static的问题

    关于C语言中static的问题

腾讯云代理商
海外云服务器