Дизайн базы данных для сайта социальной сети - PullRequest
31 голосов
/ 17 июля 2010

Что такое таблицы, которые будут присутствовать на сайте социальной сети (например, Twitter).

У меня есть таблица пользователей на данный момент.Как отслеживать подписчиков и людей, за которыми я следую?

  • Должен ли я вести отдельную таблицу для подписчиков и людей, за которыми я слежу?
  • Какие столбцы будут в этихтаблицы?

Пожалуйста, не думайте, что это субъективно / не по теме.Как я начинающий, я думал, что эксперты помогут мне получить хороший дизайн БД?

Ответы [ 3 ]

38 голосов
/ 17 июля 2010

Попробуйте взглянуть на База данных ответов , в частности на модели данных. У них есть несколько разных конструкций для различных систем. Это one для сайта социальной сети, который может дать вам представление о том, что требуется.

Возможно, вы захотите найти в SO другие вопросы по базе данных социальных сетей. Я нашел этот , который имел ссылку на flickr , показывающую схему, которая, кажется, была из Facebook.

Ваш дизайн базы данных будет основан на ваших системных требованиях. Не зная точно, что вы пытаетесь достичь, трудно дать вам лучший дизайн.

7 голосов
/ 29 марта 2017

Вы можете использовать эту концепцию базы данных Messenger: DB Messenger

Messenger DB Schema

5 голосов
/ 22 мая 2015

Вы можете создать отдельную таблицу для подписчика / подписчика relationships. Итак, когда x следует за y, создайте запись с follower_id = x.id followed_id = y.id.

Вы можете запросить таблицу отношений, чтобы найти всех пользователей, с которыми у x отношения, по select * from relationships where follower_id = x.id или наоборот.

Когда / если x не следует за y, вам просто нужно удалить запись, которую вы изначально создали.

...