>  Q&A  >  본문

mysql - 类似QQ的好友关系表是怎么设计的?

请问一下类似QQ的好友关系表是怎么设计的?
难道只是简单的id,userId,friendId吗?

迷茫迷茫2765일 전3309

모든 응답(12)나는 대답할 것이다

  • 一个人流浪

    一个人流浪2018-06-13 16:52:23

    그룹화 필드도 있어야 합니다.

    회신하다
    0
  • 怪我咯

    怪我咯2017-04-17 14:48:10

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

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

      UserRelationship:
        type: object
        properties:
          id:
            type: integer
            description: Id
          user_id:
            type: integer
            description: 用户Id
          target_user_id:
            type: integer
            description: 目标用户Id

    회신하다
    0
  • 黄舟

    黄舟2017-04-17 14:48:10

    非关系型数据库

    회신하다
    0
  • 阿神

    阿神2017-04-17 14:48:10

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

    整个应该会出现三张表

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

    通过三张表来确定的

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-17 14:48:10

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

    회신하다
    0
  • 迷茫

    迷茫2017-04-17 14:48:10

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

    회신하다
    0
  • PHPz

    PHPz2017-04-17 14:48:10

    这样够用就可以了

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-17 14:48:10

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

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-17 14:48:10

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

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-17 14:48:10

    应该是多对多关系。
    1个用户可以有多个好友。
    也可以被多个用户加为好友。
    多对多关系,在关系型数据库里面,一般使用中间表来实现。
    这时候中间表一般只存用户ID和好友ID。但是便于业务实现,可以在中间表加上是否验证通过、好友分组ID、排序编号等、
    这个多对多中间表和一般多对多不同的地方在于,这个的关联表是自身。也就是user表对user表的多对多关联。

    회신하다
    0
  • 취소회신하다