Я думаю, как реализовать схему базы данных для частного один-на-один пользовательский обмен сообщениями (используя Laravel). Все потоки только один к одному, поэтому никаких групповых сообщений или нескольких участников. Лучший пример - сайт знакомств, где каждый поток сообщений для пользователя представлен получателем.Единая схема базы данных пользовательских сообщений
Сначала я сделал простой подход к одной таблице. Пример:
id,sender_id,recipient_id,body
Это прекрасно работает. Основная проблема, однако, заключается в том, что пользователь не может удалить разговор, пока другой пользователь сохраняет сообщения.
Другой подход состоит из трех таблиц: сообщений, потоков, участников. Это тот же подход, что и у нескольких участников, я просто ограничиваю только два. Затем, если пользователь удаляет поток, я могу просто удалить его из участников для этого потока.
Теперь вот проблема с этим подходом. Предположим, пользователь A отправляет сообщение пользователю B. Затем пользователь A удаляет поток (удаляется из участников потока). Пользователь B получает сообщения (он участник). Что, если теперь пользователь A снова отправляет сообщение пользователю B? Это фактически создаст новый поток, поскольку для этого пользователя будет потерян старый поток. Но сообщение действительно нужно перейти к старому потоку, так как между двумя пользователями всегда есть только один поток.
Я немного потерял, как реализовать это. Какую схему базы данных вы бы предложили для только один к одному? обмен сообщениями между пользователями, разрешая удаление потоков?
Заранее благодарен!
Звучит хорошо. Это делает реализацию намного проще! – tarokut