Как реализовать модуль друзей Facebook в базе данных? - PullRequest
3 голосов
/ 12 октября 2010

Я разрабатываю приложение типа Facebook для своего института.

и я застрял в модуле друзей. то есть как узнать, являются ли определенные пользователи его друзьями.

Я много гуглил, но не получил удовлетворительных ответов. То, что я получил: будет много друзей одного человека, а внедрение пользователей и их друзей в отдельную таблицу только увеличит избыточность и увеличит размер БД.

Я думал об использовании графа с вершинами в качестве пользователей и ребер в качестве соединения.

Но как реализовать нечто подобное в БД.

Или как Facebook справляется с таким огромным количеством отношений?

Ответы [ 3 ]

2 голосов
/ 19 декабря 2011

эта ссылка может быть полезна для создания RDBMS с модулями друзей. http://techportal.inviqa.com/2009/09/07/graphs-in-the-database-sql-meets-social-networks/

1 голос
/ 13 октября 2010

Подобные проблемы обычно решаются с использованием базы данных другого типа. Для социальной сети графовая база данных должна иметь смысл, так как узлы и отношения в ней являются первоклассными гражданами. Для графической базы данных Neo4j имеется пример социальной сети , полный исходный код примера включен в стандартный пакет загрузки. Я также написал сообщение в блоге на эту тему, с другим примером в качестве отправной точки.

1 голос
/ 12 октября 2010

Лично я бы выделил для этого таблицу:

Вы можете иметь таблицу только с двумя столбцами: userID и friendID

Поскольку отношения между пользователями в БД будут многие-ко-многим, для ее нормализации требуется таблица ссылок, которая разбивает ее на множество-ко-многим

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

...