Схема базы данных системы обмена сообщениями - PullRequest
3 голосов
/ 17 мая 2011

Я пытаюсь реализовать систему обмена сообщениями на PHP и MySQL, но у меня возникают некоторые проблемы с выбором того, как мне следует выполнять таблицы и запросы.

Каков наилучший подход для системы, которая допускает участие нескольких участников? Я думаю, что мне, вероятно, нужно 3 таблицы (кроме таблицы пользователей).

Что-то вроде

Conversation
------------
id

Messages
--------
id
conversation_id
from_id
subject
message
from_timestamp

Participants
------------
conversation_id
user_id
last_read_timestamp

Как это настроено, мне придется проверять прочитанные сообщения по отметке времени, а не отмечать галочкой каждое сообщение. Я также смогу добавить участников в любое время.

Что вы, ребята, думаете?

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 17 мая 2011

Мне не на что жаловаться :) Я бы, вероятно, кешировал дату последней модификации в таблице разговоров, чтобы можно было быстро отобразить список "непрочитанных" бесед. Эта дата будет обновляться каждый раз, когда в диалоге публикуется сообщение.

1 голос
/ 23 октября 2014

Я бы поставил поле темы на стол разговора. Размещение его в каждом отдельном сообщении выглядит излишним. Кроме того, я бы сохранил время создания и идентификатор пользователя автора разговора в его таблице.

...