适用于朋友,共同朋友,朋友朋友等的SQL表

时间:2011-01-09 19:28:13

标签: sql

我想知道将来最简单的方法是什么,使查询既有效又不复杂。

我应该保存像

这样的双向关系

from_id = 1,to_id = 2 from_id = 2,to_id = 1

或只创建一个唯一的行

from_id = 1,to_id = 2

有什么想法吗?

1 个答案:

答案 0 :(得分:7)

我建议双向关系。它是灵活的,它只是在insertdelete记录时的额外工作。

我看到的好处是:

  • 要获得一个人的所有朋友,您需要做的只是where from_id=userid,而不是where from_id=userid or to_id=userid,后来价格昂贵。
  • 您可以保持正向和反向关系中的额外元数据。假设你有userA is friend of userB while userB does not approves the relationship这样的案例。要执行此操作,您可能需要额外isApproved并为true设置from_id=userA, to_id=userB,为from_id=userB, to_id=userA设置为false - 这将允许更便宜的sort和{{ 1}}。

    单排效果会有点棘手。