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

简介: 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/
目录
相关文章
|
8月前
|
C# 索引
C# | 【完全开源】手机号码归属地查询,一秒内百万次查询
这个开源项目是一个.NET库,可以通过手机号码获取号码归属地信息,包括运营商、国家、省份、城市、邮政编码、区号等信息。 该库加载了一个包含46万条数据的“中国手机号归属地信息”数据集,并实现了高速查询。在我的7年老笔记本上执行一百万次查询耗时不足一秒。
344 0
刷爆力扣之较大分组的位置
刷爆力扣之较大分组的位置
|
iOS开发
LeetCode每日一题——1773. 统计匹配检索规则的物品数量
给你一个数组 items ,其中 items[i] = [typei, colori, namei] ,描述第 i 件物品的类型、颜色以及名称。
92 0
|
数据库
LeetCode(数据库)- 两人之间的通话次数
LeetCode(数据库)- 两人之间的通话次数
116 0
|
数据库
LeetCode(数据库)- 按月统计订单数与顾客数
LeetCode(数据库)- 按月统计订单数与顾客数
73 0
|
数据库
LeetCode(数据库)- 顾客的可信联系人数量
LeetCode(数据库)- 顾客的可信联系人数量
122 0
|
数据库
LeetCode(数据库)- 消费者下单频率
LeetCode(数据库)- 消费者下单频率
121 0
|
算法 前端开发
【前端算法】独一无二的出现次数,统计次数加去重
给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。 如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。
113 0
巧用搜索曝光、建商城、“闪回收”上线10个月用户量超过200万 | C位小程序访谈
你将通过闪回收支付宝小程序的案例了解到:如何巧妙地使用搜索入口拉新做活动如何利用社交链裂变拉新如何通过增加服务场景,缩短低频服务的复购周期一般人换手机的周期是18至22个月,手机数码回收商闪回收就处于这样一个低频的市场——完成回收行为的新用户很容易做成一锤子买卖,这是摆在这家公司面前的难题。
1473 0
巧用搜索曝光、建商城、“闪回收”上线10个月用户量超过200万 | C位小程序访谈