mysql生成类似qq号_【mysql】类似QQ的好友关系表是怎么设计的?

关于类似QQ的好友关系表设计,可以从简单的用户ID与好友ID关联出发,考虑是否包含群组功能,可能需要用户表、群组表和用户-群组对应关系表。多对多关系通常通过中间表实现,包含用户ID、好友ID以及额外字段如验证状态、分组信息。对于大规模数据,可能需要引入非关系型数据库如图形数据库来优化。
摘要由CSDN通过智能技术生成

请问一下类似QQ的好友关系表是怎么设计的?

难道只是简单的id,userId,friendId吗?

回答

其实没有必要把事情想得太复杂了,按照需求慢慢递进就可以了。

这是我做关注功能的表结构,可以参考一下。

UserRelationship:

type: object

properties:

id:

type: integer

description: Id

user_id:

type: integer

description: 用户Id

target_user_id:

type: integer

description: 目标用户Id

非关系型数据库

我这边做设计的时候,是考虑了群组的功能的,所以将两个人的好友关系也转换为了群组

整个应该会出现三张表

一个是用户表

一个是群组表

一个是用户-群组对应关系表

通过三张表来确定的

据我所知,微博的关注就是这么设计的

之前看过一个面试题,就是表设计问题,好友关系表如何设计,在用户表用一个字段以逗号分隔存储还是双表关联存储的,貌似两种都可行

这样够用就可以了

不过查询起来也是个问题 redis不是很适合干这个事情嘛

或许可以再加一个是否双向好友的标志字段

应该是多对多关系。

1个用户可以有多个好友。

也可以被多个用户加为好友。

多对多关系,在关系型数据库里面,一般使用中间表来实现。

这时候中间表一般只存用户ID和好友ID。但是便于业务实现,可以在中间表加上是否验证通过、好友分组ID、排序编号等、

这个多对多中间表和一般多对多不同的地方在于,这个的关联表是自身。也就是user表对user表的多对多关联。

我以前就有这样简单的设计过,但是具体还是看你的需求而行。

1、用户表

id,name

例如数据:

1,张三

2,王二

2、好友表

id,u_id,c_id

例如数据

1,1,2 (代表) 张三 加了 王二

2,2,1 王二 加了 张三

比较简单的想法,希望对你有帮助。

量小的话只用关系数据库还行,量大了就得考虑非关系型的了,比如图形数据库

考古了LEO

随便搜个问题居然搜到你。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值