mysql - 类似QQ的好友关系表是怎么设计的?
问题描述
请问一下类似QQ的好友关系表是怎么设计的?难道只是简单的id,userId,friendId吗?
问题解答
回答1:应该还有一个分组字段回答2:其实没有必要把事情想得太复杂了,按照需求慢慢递进就可以了。
这是我做关注功能的表结构,可以参考一下。
UserRelationship: type: object properties: id:type: integerdescription: Id user_id:type: integerdescription: 用户Id target_user_id:type: integerdescription: 目标用户Id回答3:
非关系型数据库
回答4:我这边做设计的时候,是考虑了群组的功能的,所以将两个人的好友关系也转换为了群组
整个应该会出现三张表
一个是用户表一个是群组表一个是用户-群组对应关系表
通过三张表来确定的
回答5:据我所知,微博的关注就是这么设计的
回答6:之前看过一个面试题,就是表设计问题,好友关系表如何设计,在用户表用一个字段以逗号分隔存储还是双表关联存储的,貌似两种都可行
回答7:这样够用就可以了
回答8:不过查询起来也是个问题 redis不是很适合干这个事情嘛
回答9:或许可以再加一个是否双向好友的标志字段
回答10:应该是多对多关系。1个用户可以有多个好友。也可以被多个用户加为好友。多对多关系,在关系型数据库里面,一般使用中间表来实现。这时候中间表一般只存用户ID和好友ID。但是便于业务实现,可以在中间表加上是否验证通过、好友分组ID、排序编号等、这个多对多中间表和一般多对多不同的地方在于,这个的关联表是自身。也就是user表对user表的多对多关联。
相关文章:
1. css - 文字排版问题,内容都是动态抓出来的,字数不一定。如何对齐啊2. git - 在web应用分布式部署的情况下怎么进行配置更新3. css3 - 微信前端页面遇到的transition过渡动画的bug4. 网页爬虫 - 关于Python的编码与解码问题5. 前端 - WebStrom安装了angularjs插件,但是没有语法提示6. 微信开放平台 - ios APP能不能打开微信然后通过微信跳转到指定的URL?7. selenium-selenium-webdriver - python 将当前目录加入到 环境变量8. css - input间的间距和文字上下居中9. javascript - imgzoom插件所引发的bug血案!!!!10. php ZipArchive关于不同目录文件压缩

网公网安备