Здравствуйте, планирую сделать на сайте пользовательский чат. То есть не общий чат, а между конкретными пользователями, два человека.
Я хотел бы узнать, правильную ли структуру бд я спроектировал.
Есть таблица rooms
, в ней поля id
, userid1
, userid2
, lastupdate
Далее идёт таблица messages
, в ней поля id
, roomid
, message
, timestamp
Далее
При отправке сообщения, мы проверяем есть ли комната где userid1 = SESSION id
, и userid2
= id
пользователя которому адресовано сообщение. Или же проверяем наоборот, где userid1
= id
адресату, а userid2
= SESSION id
. Так как порядок может быть разным, в зависимости от того кто первый начал диалог.
Если комнаты нет, мы её создаем, а затем отправляем в неё сообщение.
Затем при заходе в чат, мы запрашиваем из БД комнату, где участник1, и участник 2, это наш SESSION пользователь, и адресат.