***社交网站的用户关系数据是怎么设计的,比如关注数,黑名单数,粉丝数等等

简介: Q: 我见过一种设计,在数据库里面有一张用户关系表,表结构如下 CREATE TABLE relation (relation_id private key AUTO_INCREMENT,//关系idrelation_fans text,//粉丝数据relation_black text,//黑名单数据relation_action text//关注数据);这样的设计有什么用意,如果要取得用户的关系数据 怎么取得?   A: text类型?是存些什么东西呢?很好奇。

Q:

我见过一种设计,在数据库里面有一张用户关系表,表结构如下

CREATE TABLE relation (
relation_id private key AUTO_INCREMENT,//关系id
relation_fans text,//粉丝数据
relation_black text,//黑名单数据
relation_action text//关注数据
);
这样的设计有什么用意,如果要取得用户的关系数据 怎么取得?

 

A:

text类型?是存些什么东西呢?很好奇。另外 private key 是笔误还是?

你列出的这个 demo 里,我看不出来如何获得用户的关系数据。我自己设计时(当然也是我认为合理的方式)是这样的(不完全照搬我自己的,是根据你的这个表改了一下):

CREATE TABLE relation (
id PRIMARY KEY AUTO_INCREMENT, //主键,自增 from_user_id big integer, // 用户 A 的 id to_user_id big interger,// 用户 B 的 Id rel_type enum(1,2) //关注数据 ); 

拉黑/粉丝/关注,在数据库里,存的都是一个映射关系的数字。比如,拉黑是 1,粉丝/关注是一个东西,是 2。那么,一条记录里的关键数据是:

  • from_user_id // 本条记录是哪个用户发起
  • to_user_id // 本条记录的接受方是哪个用户
  • rel_type // 发起者对接受者,做了什么事情?存事情的类型

场景举例

用户 A 关注用户 B

插入数据:

INSERT INTO relation (rel_type, from_user_id, to_user_id) VALUES(2, A.id, B.id)

用户 A 的粉丝数:

select COUNT(*) from relation 
where rel_type=2 and to_user_id=A.id; 

黑名单同理。

这是按照你给出的表的方式处理的。我自己在做设计的时候,其实是给 关注/粉丝 建了一张表,黑名单又建一张表。按自己的需求和习惯来就好了,无所谓选哪种。

希望有用。

如何联系我:【万里虎】www.bravetiger.cn 【QQ】3396726884 (咨询问题100元起,帮助解决问题500元起) 【博客】http://www.cnblogs.com/kenshinobiy/
目录
相关文章
|
4月前
|
SQL 分布式计算 关系型数据库
Spark 分析计算连续三周登录的用户数
本文介绍了如何使用窗口函数`range between`来查询`login_time`为2022-03-10的用户最近连续三周的登录数。首先在MySQL中创建`log_data`表并插入数据,接着定义需求为找出该日期前连续三周活跃的用户数。通过Spark SQL,分步骤实现:1)确定统计周期,2)筛选符合条件的数据,3)计算用户连续登录状态。在初始实现中出现错误,因未考虑日期在周中的位置,修正后正确计算出活跃用户数。
|
4月前
|
C# 索引
C# | 【完全开源】手机号码归属地查询,一秒内百万次查询
这个开源项目是一个.NET库,可以通过手机号码获取号码归属地信息,包括运营商、国家、省份、城市、邮政编码、区号等信息。 该库加载了一个包含46万条数据的“中国手机号归属地信息”数据集,并实现了高速查询。在我的7年老笔记本上执行一百万次查询耗时不足一秒。
244 0
|
数据库
LeetCode(数据库)- 两人之间的通话次数
LeetCode(数据库)- 两人之间的通话次数
107 0
|
数据库
LeetCode(数据库)- 按月统计订单数与顾客数
LeetCode(数据库)- 按月统计订单数与顾客数
68 0
|
缓存 架构师 容灾
50份架构文档荟萃(分布式事务-缓存-消息-搜索、电商、支付,多活...)
50份架构文档荟萃(分布式事务-缓存-消息-搜索、电商、支付,多活...)
199 0
口碑店铺数据-(回传商户操作行为信息,回传用户操作行为信息)
官方文档  说明: 本帖是利用支付宝正式环境测试账号测试口碑店铺数据接口,请求中根据文档传入了必传参数,大家可以配置自己的环境,根据自己的需求严格按照文档要求添加相关的可选参数,此demo仅供参考        测试环境:Eclipse+JDK1.6及以上+Tomcat6.0及以上         为提升用户使用口碑店铺插件服务的体验,各插件在为用户提供服务的同时,需将相关的数据同步到口碑,口碑会通过更多的入口和统一的样式展示给用户。
460 12
巧用搜索曝光、建商城、“闪回收”上线10个月用户量超过200万 | C位小程序访谈
你将通过闪回收支付宝小程序的案例了解到:如何巧妙地使用搜索入口拉新做活动如何利用社交链裂变拉新如何通过增加服务场景,缩短低频服务的复购周期一般人换手机的周期是18至22个月,手机数码回收商闪回收就处于这样一个低频的市场——完成回收行为的新用户很容易做成一锤子买卖,这是摆在这家公司面前的难题。
1437 0
巧用搜索曝光、建商城、“闪回收”上线10个月用户量超过200万 | C位小程序访谈
|
消息中间件 存储 缓存
如何做到 99% 的搜索请求延迟低于 150 毫秒?LinkedIn 全新消息搜索平台实践
即时通讯的兴起改变了我们的交流方式。与来回的电子邮件相比,我们发送和接收消息的数量和速度都要高得多。在进行即时对话时,我们也希望能够轻松地搜索重要的短语、瞬间或有参考价值的东西。数据交换请求数量的快速增长为消息传递的可伸缩和快速发现带来了许多新的工程挑战。
比阅读量和粉丝数更重要的是用户ARPU值
对于多数内容创业者而言,一个公众号的粉丝数和阅读量是有上限/瓶颈的。在这种情况下,得尽可能挖掘一个公众号的商业价值,这时候就得注重一个目标,叫做ARPU值。在新媒体运营行业,我们还没有见过谁对它有清晰的解释和定义。
2129 0
|
SQL 数据库
2、苏宁百万级商品爬取 思路讲解 类别页数爬取
通过上述章节内容,我们得到了类别的数据,现在我们需要对每个类别进行商品的爬取。点击移动电源,进行商品总页数抓取,这个模块相对简单,正好适合用来练手。 我们可以从“列表页.png”的图片中看到,当前移动电源的页数为右上角所显示 1/100,即100页. xpath的获取如第三张图所示,结果为 //*[@id="second-filter"]/div[2]/div/span 类别.png 列表页.png xpath.png 分析出了如果获取页数,我们现在要考虑的问题是,如果更新所有的类别。
1080 0