如果我想创建一个允许用户拥有0个或更多“ friend ”的网站,我该如何在数据库中建立这种关系的模型?这个简单的工作会做些什么:

Table Friends
- Id (PK)
- UserId (FK)
- FriendId (FK)

???

这是否可以让我以后做类似Facebook的事情(例如“您的3个 friend 认识此用户,也许您也知道”)?还是像6度到凯文培根的东西?

编辑1:
Table Friends
- UserId (FK)
- FriendId (FK)
- Status ('Pending', 'Approved', 'Rejected', 'Blocked'?)

最佳答案

这将起作用。以下是要注意的要点:

  • 您是否有类似 friend 确认的内容。如果是的话,您将不得不考虑如何存储“待定”
  • 同时为UserId和FriendId编制索引。这些是将要加入表的值。
  • 无序对(UserId,FriendId)是主键的竞争者。
  • 假设Uid_1和Fid_1是 friend ,其中Uid_1!= Fid_1然后您的好友表存储了(Fid_1,Uid_1)和(Uid_1,Fid_1)。
  • 您打算搜索多大程度的关系。

  • 每次您需要查询DOR(关系度)时,都必须初始化图并运行最短路径算法(这是我能想到的最优化方法)。如果您的成员(member)数量增加到几公斤,那么您将如何处理呢?

    关于mysql - 社交网络的数据模型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4177163/

    10-11 18:14