myks92
@myks92
Нашёл решение — пометь вопрос ответом!

Как создать структуру диалогов?

Здравствуйте, никак не могу придумать хорошую структуру для обмена диалогами на сайте с учетом условий:
1. Пользователь может общаться тет-а-тет с другим пользователем.
2. Может общаться с группой пользователей (беседа)

Сама Система сообщений аналог системы диалогов социальной сети ВКонтакте.

К примеру есть таблицы:
user
id, email ...

Dialog
id, name

Message
Id, sender_id, dialog_id, text

UserDialog
user_id, dialog_id

Вот дальше уже моя голова не варит - как правильно проверять наличие диалогов между пользователями. Я предполагаю, что мы сначала создаём сообщение и выбираем получателя, потом проверяем если ли ранее такой диалог между пользователями. Если он есть, тогда получаем id диалога записываем в таблицу сообщений и сохраняемся. Если нет, то создаём.

Буду очень благодарен за развернутый ответ.
  • Вопрос задан
  • 687 просмотров
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега MySQL
{PHP, MySql, HTML, JS, CSS} developer
имхо вы серьезно множите сущности на простой задаче. Думаю достаточно 2 таблиц для хранения всего.
1) собственно месажи
id | sender_id | reciver_id | chatroom_id | message | datetime | readed
2) чатрум( поля на выбор)
и логикой рулить уже что это.
Если есть сендер и ресивер но нет чатрумид - личный диалог,
Если нет ресивера и есть чатрум - общий чат,
Если есть все 3 - общий чат с личным обращением, как раз как в вк.
UPD: если есть необходимость в уровнях доступа к чатам - тогда естественно понадобится дополнительная таблица с рестрикшн полиси и группами пользователей, но это уже имхо немного выходит за рамки первоначальной задачи.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы