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

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

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

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

阅读 8.3k
4 个回答

关注表

字段类型备注
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

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

这个可以参考一下

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题