Ответы пользователя по тегу Проектирование баз данных
  • Как правильно хранить переписку в БД в данном случае?

    @luna3956
    Таблица такая: Messages(id, user_from_id, user_to_id, text, msg_time, ...).
    Никаких предыдущих номеров Вам запоминать не нужно и никаких записей с одинаковым номером не будет. В таблице Messages поле id делаете автоинкрементным и забываете обо всем, что вас беспокоит.
    Как получать историю:
    select *
    from Messages
    where
        user_from_id = $id_пользователя or
        user_to_id = $id_пользователя
    order by id
    Ответ написан
  • Как спроектирована база данных приложения Юла?

    @luna3956
    firebase подойдет для реализации личной переписки(мгновенных сообщений), в остальном же она не нужна. Используйте Postgresql или Mysql и будет вам счастье.

    Спроектирована база довольно обычно, там ничего хитрого:

    Таблица пользователей Users(id, name, ...)
    Таблица объявлений Ads(id, title, text, category_id, user_id, ...)
    Таблица сообщений Messages(id, text, from_user_id, to_user_id, ...)

    и самое главное поиск по категориям


    Гуглите "полнотекстовый поиск".

    Ну и стоит учесть, что в случае крупных проектов там много кэширования. Данные разнесены на множество различных серверов. Каждый пользователь и его данные(объявления, переписка и тд) хранятся на одном сервере. Способы "разнесения" пользователей на разные сервера могут быть разные, но обычно вычисляют хеш от логина или например номера, берут остаток от деления на количество виртуальных серверов, и в зависимости от результата пользователь направляется на соответствующий сервер. Но это Вам вряд ли нужно, это только для проектов с большим количеством данных и высокими нагрузками, просто сказал для Вашего понимания как там устроено.
    Ответ написан
    1 комментарий
  • Правильная структура таблиц для поддоменов?

    @luna3956
    При создании очередного поддомена пользователем добавляете поддомен в табличку Поддомены(id, name, user_id), а в таблицу Статьи просто добавляете уникальное поле поддомен_id, и тогда каждая статья будет строго привязана к конкретному поддомену.

    Либо же можете не добавлять в таблицу Статьи поле поддомен_id и определять принадлежность к поддомену посредством пользователя, добавившего статью. Делать это с помощью таблицы Поддомены, о которой написал выше. Но легче сразу добавить поле поддомен_id
    Ответ написан
    5 комментариев