В чате должны быть созданы следующие таблицы:

  • таблица со списком чатов
  • таблица со списком участников чата
  • таблица со списком сообщений
  • таблица со статусами сообщений

Как вообще, должен работать чат. У вас есть пользователи, которые могут общаться в чате. Чат может состоять из нескольких групп (таблица chat), по сути, из отдельных чатов в каждом из которых могут общаться пользователи (таблица party). Сообщения каждого чата добавляются (таблица messages) от участников чата, которым можно показывать уведомления о добавлении новых сообщений и проверять, какие сообщения пользователь уже прочитал (таблица message_status).  

Полагаю, что у вас уже есть таблица users, в которой хранятся пользователи.

Таблица со списком групп чата

В таблице со списком групп чата будут храниться данные группах чата. Таблица выглядит следующим образом:

Название таблицы - chat
Наименование Описание
chat_id порядковый id чата
name заголовок чата, его название
user_id id пользователя создавшего чат

Таблица со списком участников чата

В таблице списка участников чата будет храниться связь между группой чата и пользователями, которые участвуют в беседе группы чата. Таблица выглядит следующим образом:

Название таблицы - party
Наименование Описание
chat_id id группы чата
user_id id пользователя, который учавствует в переписке чата

Таблица со списком сообщений

В таблице со списком сообщений будут храниться сообщения, которые пользователи пишут друг другу в чате. Таблица выглядит следующим образом:

Название таблицы - messages
Наименование Описание
message_id порядковый id сообщения
chat_id id чата
user_id id пользователя, который добавил сообщение
contect содержимое сообщения
date_create дата добавления сообщения

Таблица со статусами сообщений

В таблице со статусами сообщений будут храниться статусы уведомлений, определяющих просмотрел ли определенный пользователь новое добавленное сообщение. Таблица выглядит следующим образом:

Название таблицы - message_status
Наименование Описание
message_id id сообщения
user_id id пользователя
is_read прочитано ли сообщение

Доводилось ли вам создавать чат для своего сайта? Если да, то какая архитектура в нем используется?