问 题

新浪微博中,假如a关注了200个用户,300个用户关注了a,点解的时候会看到所有关注a或者a关注的用户,这种表结构是如何实现的?

解决方案

个人简单猜测,如有雷同,纯属巧合!有错误请指正!

user_relation - 用户关系表

user_id - 用户ID

follower_id - 被关注者用户ID

relation_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查询出所有关注我的人(粉丝)。

当然如果不要扩展性或数据很小,那两个字段正着查所有我关注的人,反着查所有的关注我的人(粉丝)

扫一扫关注IT屋

微信公众号搜索 “ IT屋 ” ,选择关注与百万开发者在一起

mysql 关注 表设计_mysql - 新浪微博中的关注功能是如何设计表结构的?相关推荐

  1. mysql 关注 表设计_新浪微博中的关注功能是如何设计表结构的?

    个人简单猜测,如有雷同,纯属巧合!有错误请指正! user_relation - 用户关系表 user_id - 用户ID follower_id - 被关注者用户ID relation_type - ...

  2. mysql数据库中插入表信息_mysql数据库中插入表

    通过binlog恢复mysql数据库 在上一篇文章,我们讲解了有关mysql的binlog日志的基础知识.这篇文章,我们来讲解如何通过mysql的binlog日志来恢复数据库. 在使用binlog日志 ...

  3. mysql 修复表字段_mysql数据库总结一【安装,配置,表操作,字段操作,增删改, 备份-恢复,select查询】...

    服务器端安装 安装服务器端:在终端中输入如下命令,回车后,然后按照提示输入 sudo apt-get install mysql-server 启动服务 sudo service mysql star ...

  4. mysql数据库的字符集_mysql数据库中字符集乱码问题原因及解决

    前言 有的时候我们在查看数据库数据时,会看到乱码.实际上,无论何种数据库只要出现乱码问题,这大多是由于数据库字符集设定的问题. 下面我们就介绍一下,数据库的字符集的设定及乱码问题的解决. mysql数 ...

  5. mysql explain ref列_mysql explain中的列

    参考:<高性能mysql>附录D EXPLAIN MySql将Select查询分为简单和复杂类型,复杂类型分为3大类:简单子查询,所谓的派生表(在派生表的子查询),以及UNION查询. 列 ...

  6. mysql查询低效语句_MySQL数据库中查找执行从命慢的SQL语句

    MySQL数据库中查找执行从命慢的SQL语句 (2011-09-15 08:21:35) 标签: 杂谈 去历:赛迪网 做者:Alizze 启动Mysql时减参数--log-slow-queries去挤 ...

  7. mysql 查看数据库函数_MySQL数据库中常用查询函数简介

    MYSQL中的常用函数 count(*)--- 相当于统计表的行数,在统计结果的时候,不会忽略列值为NULL的记录. select count(*) from yinxiong; Count(列名) ...

  8. mysql 5.7 引擎_MySQL 5.7 学习:功能性能的提升

    1.9:多线程脏页刷写 innodb_page_cleaners,表示刷写BP脏页的线程数,5.6.2开始从master线程中独立出来,5.7.4之后开始支持多线程flush,默认是4.这个值必须小于 ...

  9. sql数据表改为自动递增显示与其他表关联_MySQL萌新第一季 第四话-数据表的基本操作...

    本话旨在完成以下内容: 在数据库中,数据表是数据库中最重要和基本的操作对象,是数据存储的基本单位.换句话说我们操作数据库其实重要的就是操作数据表.本章将详细介绍数据表的基本操作,主要内容包括:创建数据 ...

最新文章

  1. BorderlineSMOTE 的使用实例code
  2. Flask入门之Jinjia模板的一些语法
  3. 一般判五年几年能出来_判刑五年能减刑多少年
  4. python 搭建登陆系统_Django 搭建CMDB系统完整[1](用户登录)
  5. bootstrap学习网站
  6. 转:配置 SQL Server 2005 远程调试存储过程
  7. 华为云服务器实战 之 Gitlab安装与配置使用
  8. React Native :加载新闻列表
  9. 基于canoe的bootload刷写程序
  10. c语言自学去视频,最适合自学的C语言自学视频
  11. WUST-CTF2020 writeup
  12. 员工离职原因分析_分析员工离职调查
  13. 拉普拉斯变换的定义-笔记
  14. 2048小游戏HTML网页版源码共享
  15. Rolling In The Deep中文歌词翻译能对的上节奏
  16. 一道十分经典的intern面试题(String字符串)让你彻底搞懂intern方法
  17. 制作一个简单的轮播图
  18. javascript停止页面所有计时器
  19. 计算机组成原理徐福培,徐福培计算机组成原理(第2章).ppt
  20. 解决eclipse出现This Android SDK requires Andro...date ADT to the latest version.问题

热门文章

  1. 在奔向5G的道路上 高通用了哪些洪荒之力
  2. 如何设计下拉菜单(技巧+实例)
  3. js 所有分割截取总结
  4. SecureCRT常用Linux命令,SecureCRT中常用命令
  5. python实现简单倒计时exe
  6. Vscode - 修改插件安装目录
  7. 【电脑使用】送给即将迈入大学的电脑小白的一份电脑使用入场券
  8. 计算机毕业设计之java+ssm基于微信小程序的超市购物商城 uniapp
  9. “空姐网”网站策划案
  10. 5G手机陆续上市,购买5G手机还是4G手机更划算?