Структура базы данных для мессенджера

пишу приложение - мессенджер, сейчас есть такая структура БД: Структура бд

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

Решения с добавлением полей (to, from) в таблицу сообщений мне также не нравится, потому что опять же неудобно работать с групповыми чатами.

Вообще, опыта работы с БД почти нет, хотел бы спросить совета здесь, как можно наиболее адекватно организовать структуру БД в данном случае?

P.S. Проект ASP.NET Core + PostgreSQL (работаю через EF Core)


Ответы (1 шт):

Автор решения: Peter1

Связь многие-ко-многим тблиц User <-> Chat будет через таблицу Message, никакой дополнительной таблицы для нее создавать не обязательно, но может понадобится для повышения производительности, надо смотреть с конкретной СУБД.

В таблице Message надо добавить дату/время публикации. В остальном структура таблиц выглядит хорошо.

→ Ссылка