当前位置: 首页 > 面试题库 >

PHP / MySQL中朋友的朋友?

暨承平
2023-03-14
问题内容

我有一个类似于myspace /
facebook的社交网络。在我的代码中,您不是一个人的朋友,还是不是一个朋友,因此,我显示了您与之成为朋友的人的所有操作(在此帖子中,我将这些操作单独称为公告帖子,以使其更易于可视化。

因此,您每当有人发布公告时,都会向在那里的任何朋友显示。

在mysql中,您可以通过执行以下操作来获得个人朋友列表,

SELECT user_id FROM friends WHERE friend_id = 1 (user ID)

我想知道像facebook之类的网站如何显示您的朋友和朋友的朋友发布的所有公告吗?

如果有人有想法,请显示一些代码,例如哪种mysql查询?


问题答案:

答案是他们没有在好友表上进行选择,他们很可能使用非标准化的新闻事件表。我们在DoInk.com上实现了类似于Facebook的新闻源,这是我们的处理方式:

这里有一个“
NewsEvent”的概念,它具有一个类型,一个启动器(一个用户ID)和一个目标用户(也是一个用户ID)。(您也可以为与该事件相关的其他属性添加其他列,或将其加入)

当用户在其他用户的墙上张贴内容时,我们将生成如下事件:

INSERT INTO events VALUES (wall_post_event, user1, user1)

查看用户1的配置文件时,您将为所有事件选择用户1是启动者还是目标的事件。这就是显示个人资料供稿的方式。(根据您的隐私模型,您可能会很喜欢并过滤掉事件。出于性能原因,您可以考虑在内存中这样做)

例:

SELECT * FROM events WHERE initiator = user1 or target = user1 //to see their profile feed

SELECT * FROM events WHERE initiator IN (your set of friend ids) //to see your newsfeed

当您想查看与您的朋友有关的所有事件的新闻源时,可以查询以选择发起者在您的朋友集中的所有事件。

避免使用子选择的实现,具体取决于复杂性,它们不会扩展。



 类似资料:
  • 为了了解在朋友关系中使用Neo4J的优势,我在MySQL数据库上创建了一个Persons表(“Persons”,20900个数据集): 和一张关系表(“友谊”,每个人有50到100个朋友): 因此,大约有120万人的关系。 现在我想查看id=1的人的朋友的朋友的朋友的朋友,因此我创建了一个如下查询: 用户ID 1的查询用了大约30秒 在Neo4J中,我为每个人创建了一个节点(20900个节点)和一

  • 问题内容: 我正在尝试从用户表中提取数据,并且需要“朋友之友”,这些人与所选用户相距两步 但未直接连接到所选用户 我尝试了以下查询: 我不知道如何拉未直接连接到所选用户的用户。我得到了当前用户的朋友的所有朋友,但是我 也 得到了当前用户的直接朋友。 问题答案: 您只需要排除既是直接朋友又是朋友的人。我已经重新排列了表别名,这样(无论如何对我来说)就更清楚了要检索的内容: 它还消除了排除要查询的用户

  • 可通过PlayStation®Network与远方的用户成为朋友,或查看朋友状态的应用程序。能在(派对)或(群信息)等应用程序中,与朋友尽情交流。在个人信息画面或游戏的交流区中亦可查看朋友的活动或撰写留言。 朋友的LiveArea™ 成为朋友 查看个人信息

  • 问题内容: 我正在研究“可能的朋友”功能。在这里,我需要向不是我的朋友的所有朋友显示所有朋友,也不要发送给我或没有我的待处理请求 对于每一次友谊,我都会做两个记录。假设用户1和2成为朋友…我要在表中做一个记录,再做一个。 当第一个用户发送请求时,将状态设置为0,而当朋友接受请求时,我将两行都更新为1 如何根据朋友的朋友进行建议“可能的朋友”的sql查询? 问题答案: 在这里,您…简单加入

  • 问题内容: 如何使用Twitter4J获取朋友或关注者的朋友列表? 使用,我只能检索已通过身份验证的当前用户的朋友/关注者列表。我想要的是获取关注者的朋友列表或经过身份验证的用户的朋友列表。 问题答案:

  • 发送加为朋友请求给想成为朋友的对象。若对方同意即可成为朋友,并显示于朋友列表中。 若要使用此功能,需使用PS Vita注册PlayStation®Network。 A ) 个人信息 B ) 目前的加为朋友请求数量 C ) 朋友信息 D ) 正在确认加为朋友请求 若成为朋友,即可在以下应用程序交换信息及畅享交流乐趣。 (派对)*1 (near)*1 (群信息) (奖杯) 游戏*2 *1 仅限朋友使用