用MySQL实现微博关注关系的方案分析
关注关系产生的四种关系状态
关注
粉丝
双向关注(互粉)
无关系
用词follower表示粉丝-- 追随者
用词following表示关注 -- 追随
设计的结构必须能满足以下功能:
查询关注列表
查询粉丝列表
查询双向关注列表
判断两个用户的关系
查询带关系状态的任一列表
第一种方案
用一行纪录表示关注和粉丝,字段u2的值表示粉丝,u1表示被关注者。
Table: user(用户表)
Table: follower(u2表示粉丝, u1表示被关注的人)
查询用户id = 1的关注列表
SELECT * FROM follower WHERE u2 = 1
查询用户id = 1的粉丝列表
SELECT * FROM follower WHERE u1 = 1
查询用户id = 1的双向关注列表
SELECT t1.* FROM (SELECT * FROM follower WHERE u2 = 1) AS t1 INNER JOIN follower t2 ON t1.u1 = t2.u2 LIMIT 10
判断两个用户的关系(id = 1 --> id = 5)
SE