mysql 关注 表设计_mysql - 新浪微博中的关注功能是如何设计表结构的?
问 题
新浪微博中,假如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 - 新浪微博中的关注功能是如何设计表结构的?相关推荐
- mysql 关注 表设计_新浪微博中的关注功能是如何设计表结构的?
个人简单猜测,如有雷同,纯属巧合!有错误请指正! user_relation - 用户关系表 user_id - 用户ID follower_id - 被关注者用户ID relation_type - ...
- mysql数据库中插入表信息_mysql数据库中插入表
通过binlog恢复mysql数据库 在上一篇文章,我们讲解了有关mysql的binlog日志的基础知识.这篇文章,我们来讲解如何通过mysql的binlog日志来恢复数据库. 在使用binlog日志 ...
- mysql 修复表字段_mysql数据库总结一【安装,配置,表操作,字段操作,增删改, 备份-恢复,select查询】...
服务器端安装 安装服务器端:在终端中输入如下命令,回车后,然后按照提示输入 sudo apt-get install mysql-server 启动服务 sudo service mysql star ...
- mysql数据库的字符集_mysql数据库中字符集乱码问题原因及解决
前言 有的时候我们在查看数据库数据时,会看到乱码.实际上,无论何种数据库只要出现乱码问题,这大多是由于数据库字符集设定的问题. 下面我们就介绍一下,数据库的字符集的设定及乱码问题的解决. mysql数 ...
- mysql explain ref列_mysql explain中的列
参考:<高性能mysql>附录D EXPLAIN MySql将Select查询分为简单和复杂类型,复杂类型分为3大类:简单子查询,所谓的派生表(在派生表的子查询),以及UNION查询. 列 ...
- mysql查询低效语句_MySQL数据库中查找执行从命慢的SQL语句
MySQL数据库中查找执行从命慢的SQL语句 (2011-09-15 08:21:35) 标签: 杂谈 去历:赛迪网 做者:Alizze 启动Mysql时减参数--log-slow-queries去挤 ...
- mysql 查看数据库函数_MySQL数据库中常用查询函数简介
MYSQL中的常用函数 count(*)--- 相当于统计表的行数,在统计结果的时候,不会忽略列值为NULL的记录. select count(*) from yinxiong; Count(列名) ...
- mysql 5.7 引擎_MySQL 5.7 学习:功能性能的提升
1.9:多线程脏页刷写 innodb_page_cleaners,表示刷写BP脏页的线程数,5.6.2开始从master线程中独立出来,5.7.4之后开始支持多线程flush,默认是4.这个值必须小于 ...
- sql数据表改为自动递增显示与其他表关联_MySQL萌新第一季 第四话-数据表的基本操作...
本话旨在完成以下内容: 在数据库中,数据表是数据库中最重要和基本的操作对象,是数据存储的基本单位.换句话说我们操作数据库其实重要的就是操作数据表.本章将详细介绍数据表的基本操作,主要内容包括:创建数据 ...
最新文章
- BorderlineSMOTE 的使用实例code
- Flask入门之Jinjia模板的一些语法
- 一般判五年几年能出来_判刑五年能减刑多少年
- python 搭建登陆系统_Django 搭建CMDB系统完整[1](用户登录)
- bootstrap学习网站
- 转:配置 SQL Server 2005 远程调试存储过程
- 华为云服务器实战 之 Gitlab安装与配置使用
- React Native :加载新闻列表
- 基于canoe的bootload刷写程序
- c语言自学去视频,最适合自学的C语言自学视频
- WUST-CTF2020 writeup
- 员工离职原因分析_分析员工离职调查
- 拉普拉斯变换的定义-笔记
- 2048小游戏HTML网页版源码共享
- Rolling In The Deep中文歌词翻译能对的上节奏
- 一道十分经典的intern面试题(String字符串)让你彻底搞懂intern方法
- 制作一个简单的轮播图
- javascript停止页面所有计时器
- 计算机组成原理徐福培,徐福培计算机组成原理(第2章).ppt
- 解决eclipse出现This Android SDK requires Andro...date ADT to the latest version.问题