0

Если делать социальную сеть, то как должна быть устроена БД. Я думаю, что есть минимум 4 таблицы:

  1. Хранит id и индивидуальные настройки
  2. Хранит id и данные(Имя, фамилия, вуз и т.п.)
  3. Хранит id и посты на стене
  4. Хранит id и подписки

Все таблицы связаны внешнем ключем id

Нормальна ли такая структура? Если ты находишься в новостях, то через 4 таблицу по id вынимает все подписки и берет у каждого сообщения из 3 таблицы?

1 ответ 1

1

Таблицы 1 и 2 в вашем варианте можно объединить — это одна "суть": пользователь.

Подписки занимают небольшой объём и свойственны Пользователю, и пока интересны тоже только ему. Ведь не будет частого поиска "кто подписан на X?" Я бы их тоже хранил в таблице про Пользователя, в текстовом поле, через запятую. Настройки тоже можно упихнуть в одно поле в сериализованном виде.

Итого:

  1. Пользователи (id, имя, фамилия, ..., подписки "13,15,17,19", настройки);
  2. Посты (post_id, user_id, тест).

Вопрос в том, как вы захотите наворачивать функционал дальше. Группы, паблики, рекламный движок, приложения?

6
  • @sergiks я не понял про посты, вы хотите сделать одну таблицу постов на весь сайт? Постов же будет миллион. И потом надо будет вытащить все посты определенной подписки
    – Zow
    1 мар 2013 в 9:24
  • Миллион это немного. Потом расширение проекта поручите кому-нибудь, кто разбирается в шардинге и вуду магии. Поясните, что такое "подписка".
    – Sergiks
    1 мар 2013 в 9:29
  • Ну вот в ВК / Твиттере, когда вы нажимаете у какого-то пользователя "Подписаться" / "Читать" его посты будут отображаться на вашей странице в хронологическом порядке. Если много у вас подписок, то эти посты будут разные
    – Zow
    1 мар 2013 в 9:39
  • и как это меняет суть? подписка для одного, все равно, что посты для хозяина.А новостная лента соответственно - слить подписки и отсортировать их по дате. 1 мар 2013 в 10:00
  • А если еще есть понравившиеся, заметки и т.п. Их тоже сохранять в первой таблице через запятую?
    – Zow
    2 мар 2013 в 7:42

Ваш ответ

By clicking “Отправить ответ”, you agree to our terms of service and acknowledge you have read our privacy policy.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками или задайте свой вопрос.