mysql - 新浪微博中的关注功能是如何设计表结构的?
问题描述
问题解答
回答1:个人简单猜测,如有雷同,纯属巧合!有错误请指正!
user_relation - 用户关系表user_id - 用户IDfollower_id - 被关注者用户IDrelation_type - 关系类型,1=关注 2=粉丝
业务逻辑处理
1 用户A关注了用户B
插入两条记录
insert user_relation(user_id,follower_id,relation_type) values(a_id,b_id,1);//增加一个关注的人insert user_relation(user_id,follower_id,relation_type) values(b_id,a_id,2);//增加一个粉丝
2 查用户A关注的所有用户
select * from user_relation where user_id=a_id and relation_type=1
3 查用户A有多少粉丝
select * from user_relation where user_id=a_id and relation_type=2
4,5等等逻辑以此类推。。。。
设计理由
考虑到扩展性,数据量大了必定分库分表,一般按user_id取模等等算法拆分,所以没办法用follower_id查询出所有关注我的人(粉丝)。
当然如果不要扩展性或数据很小,那两个字段正着查所有我关注的人,反着查所有的关注我的人(粉丝)
相关文章:
1. javascript - 静态页面引公共头尾文件,js怎么写吖?2. javascript - 读取页面源码,页面中所有的换行都被当成<br/>读取出来 了,,求解应该怎么让它被正确的解析3. java基础,求解答。4. javascript - 关于一段 for 循环代码执行顺序的问题5. javascript - vue 数据更新了。但是dom没有更新,,,,,如图6. html5 - 百度Ueditor代码高亮和代码段滚动条冲突是怎么回事?7. java - 为什么要将Runnable接口的子类对象传递给Thread的构造函数?8. debian - docker依赖的aufs-tools源码哪里可以找到啊?9. docker api 开发的端口怎么获取?10. javascript - HTML 原生js怎么控制table根据0,1值来显示或者隐藏