如何在数据库中实现Facebook好友模块?

问题描述 投票:0回答:2

我正在为我的学院开发一个 Facebook 类型的应用程序。

我被困在朋友模块了。即如何知道特定用户是否是自己的朋友。

我用谷歌搜索了很多,但没有得到任何满意的答案。 我得到的是:一个人会有很多朋友,在单独的表中实现用户和他们的朋友只会增加冗余和大的数据库大小。

我想到使用一个以顶点作为用户、以边作为连接的图。

但是如何在数据库中实现类似的东西。

或者 Facebook 如何处理如此大量的关系?

java database facebook graph-databases social-networking
2个回答
1
投票

就我个人而言,我会有一张专门的桌子:

您可以有一个只有两列的表:userID 和friendID

由于数据库中用户之间的关系是多对多的,因此规范化它需要一个链接表,将其分解为多对一对多

http://dev.mysql.com/tech-resources/articles/intro-to-normalization.html#03


1
投票

此类问题通常可以通过使用不同类型的数据库来解决。对于社交网络来说,“图数据库”应该有意义,因为节点和关系是其中的一等公民。 Neo4j 图数据库有一个社交网络示例,该示例的完整源代码包含在标准下载包中。我还就这个主题写了一篇博客文章,并以另一个例子作为起点。

© www.soinside.com 2019 - 2024. All rights reserved.