Как спроектировать бд для чатов?

320
27 июня 2017, 22:35

Здравствуйте. Имеется простейший чат на двоих человек. чатов на 2 может быть сколько угодно(Петя-Вася, Маша-Женя, и т.д).Для каждого чата отдельную таблицу? Или все чаты в одной таблице хранить? Если вдруг кто работал с requery ORM подскажите как это реализовать на этой бд? Или лучше для чатов использовать другую бд на android?

Answer 1

Для начала вам надо определиться с архитектурой базы данных. Как минимум здесь потребуются 2 таблицы chats и messages. В первой хранятся данные для чатов (chat_id, uid собеседников), а во второй собственно сообщения, которые привязываются к chat_id, чтобы их не искать по комбинации uid, а выводить просто по id чата.

Но это самая простая архитектура, в современных чатах есть еще как минимум одна таблица, назовем ее peers (собеседники). Где хранится информация о людях, которые участвуют в переписке в конкретном чате (особенно актуально, когда в чате больше 2-х человек). Там обычно хранятся статусы (прочитан ли, удален ли этот чат у собеседника, кто отправил последнее сообщение), сниппеты (краткие заголовки чата, которые обычно выводятся в списке чатов берутся не из таблицы messages, а из peers), черновики сообщений и туда же пишутся ссылки на прикрепленные, но еще не отправленные в чат изображения/медиаданные.

READ ALSO
AutoHotKey в Java

AutoHotKey в Java

n-ое время пользовался программой AutoHotKey для того,чтобы при нажатии на кнопку "w" у меня выполнялась определенная последовательность клавиш...

372
файл jsp не видит значения из сервлета

файл jsp не видит значения из сервлета

если не принципиально , сделай webxml в папке WEB-INF занеси туда :

590
Добавление данных в список пунктов в разном количестве

Добавление данных в список пунктов в разном количестве

Приветствую! У меня есть 2 базы данных в первой 100 пунктов и это список глав, во второй более 250 это содержимое глав, мне нужно эти 250 распределить...

304
Как ускорить билд в tomcat?

Как ускорить билд в tomcat?

Всем приветУ меня Java приложение(Spring(boot,data,security), Hibernate, Thymeleaf, postgresql(драйвер), HikariCP)

207