MySQL存储朋友

时间:2018-01-31 17:00:26

标签: php mysql sql relationship

与MySQL存储朋友关系的最佳做法是什么?

我目前有:

FRIENDSHIP ID | FRIEND1_ID | FRIEND2_ID | STATUS | DATE_ESTABLISHED

       1             1          2        accepted         now()
       2             1          3        incoming         now()
       3             1          4        outgoing         now()

但是,通过为每个友谊存储双向关系,例如:

,可以更容易地在PHP中进行操作
FRIENDSHIP ID | FRIEND1_ID | FRIEND2_ID | STATUS | DATE_ESTABLISHED

       1             1          3        incoming        now()
       2             3          1        outgoing        now()

哪个会变成:

FRIENDSHIP ID | FRIEND1_ID | FRIEND2_ID | STATUS | DATE_ESTABLISHED

       1             1          3        accepted        now()
       2             3          1        accepted        now()

如果按原样保留,我需要哪些查询:

  • 插入新关系(用户1添加用户2)

  • 仅列出用户1的传入好友请求

1 个答案:

答案 0 :(得分:1)

存储您的用户:

ID | USERNAME

存储友谊:

USER_ID1 | USER_ID2 | STATUS | DATE_ESTABLISHED

奖励点:此架构允许非相互关系: - )

另外,我不会更新"状态"状态更改时的字段。我要做的是创建一个具有新状态的新行。通过这种方式,您可以获得状态的历史记录,还可以有效地搜索当前的友谊" (按时间戳排序)