Экспоненциальная связь с базой данных

0

Im, развивающийся под Symfony и Doctrine 2, и хотел бы получить ваши рекомендации относительно того, как структурировать мою базу данных (mysql) для своего рода платформы социальной сети для обмена информацией (статьями). Имея в виду большое и увеличивающееся количество статей, препятствием является то, что: - автор может делиться этой статьей со многими конкретными пользователями из своего списка участников
- Любой получатель может также решить передать статью конкретным пользователям из своего собственного списка участников. Выбор участника для автора или получателя может отличаться для каждой статьи (целевой зависит от ее возможного интереса к статье)

Таблицы A/Article и User, связанные со многими из многих отношений, я в первую очередь рассматривал эту архитектуру, но количество строк могло быть довольно огромным. Учитывая, что пользователь может иметь 1000 подключений (членов), количество строк только для одной статьи может достигать миллиона строк, если некоторые из его членов решают передать статью другим....

B/Article столбец longtext в качестве отношения Im, который затем задумал заполнить базу данных статьи текстовым столбцом, который я бы заполнил идентификатором пользователя приемников... но снова этот столбец мог получить миллион идентификаторов.... Когда пользователь подключится, мне придется запросить Select * Where UserIn В столбце longtext Column....

Может ли решение B быть подходящим? Как бы вы справились с таким делом?

Теги:
database
doctrine2
social-networking

1 ответ

0

Если вы правильно поняли, у вас есть таблица статей и таблица пользователей. Вы хотите связать статьи с пользователями.

Проще всего связать их со ссылкой:

TABLE 'Link' (
  'Article' ,
  'User' 
 )

Это то, что вы предложили. Нет более эффективного метода.

  • 0
    Здравствуй. Спасибо за ваш ответ. Это была моя первая мысль; но из-за количества пользователей, которые могут передавать другим, оно может экспоненциально достигать огромного количества строк .... Допустим, у пользователя есть 200 друзей, каждый из которых передает по 200 своим друзьям. У меня будет: Вариант A: идентификатор статьи | user_id a | 1 a | ... a | 200 б | хс | я | 210 а | ... а | 40 000 (200x200) Вариант B: идентификатор статьи | user_ids (в длинном текстовом столбце) a | 1,2,3,4 .... 40 000 б | х, х 'с | Y
  • 0
    В конце концов, вы все равно должны хранить информацию где-то. Без экспоненты. Неважно, кто ссылается на статью, есть только одна статья и один пользователь для ссылки. Нет дубликатов. Если вы хотите сохранить отношения с «реле», это потребует большего. Может быть, просто добавьте столбец реферера, если это необходимо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню