我正在为我的学院开发一个facebook类型的应用程序。
我被困在朋友模块中。即如何知道特定用户是否是一个朋友。
我google了很多但没有得到任何满意的答案。 我得到的是:一个人会有很多朋友,在单独的表中实现用户和他们的朋友只会增加冗余和大数据库大小。
我想过使用顶点作为用户和边缘作为连接的图形。
但是如何在db中实现类似的东西。
Facebook如何处理如此庞大的关系?
答案 0 :(得分:2)
此链接可能有助于您使用朋友模块生成RDBMS。 http://techportal.inviqa.com/2009/09/07/graphs-in-the-database-sql-meets-social-networks/
答案 1 :(得分:1)
就个人而言,我会有一张专门的桌子:
您可以拥有一个只有两列的表:userID和friendID
由于数据库中用户之间的关系是多对多的,因此将其规范化需要一个链接表,将其分解为多对一对多
http://dev.mysql.com/tech-resources/articles/intro-to-normalization.html#03
答案 2 :(得分:1)
这种问题通常通过使用不同类型的数据库来解决。对于社交网络,graph database应该是有意义的,因为节点和关系是其中的一等公民。 social network example图数据库有Neo4j,示例的完整源代码包含在标准的dowload包中。我还在这个主题上写了一个blog post,另一个例子作为起点。