与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的传入好友请求
答案 0 :(得分:1)
存储您的用户:
ID | USERNAME
存储友谊:
USER_ID1 | USER_ID2 | STATUS | DATE_ESTABLISHED
奖励点:此架构允许非相互关系: - )
另外,我不会更新"状态"状态更改时的字段。我要做的是创建一个具有新状态的新行。通过这种方式,您可以获得状态的历史记录,还可以有效地搜索当前的友谊" (按时间戳排序)