Как бы вы создали многопоточную систему обмена сообщениями? - PullRequest
1 голос
/ 09 февраля 2009

Меня интересует структура таблицы для многопоточной системы обмена сообщениями.

Я думаю, что будет 3 таблицы:

- message_thread
    - id
    - subject
- message_user
    - thread_id
    - user_id
    - thread_status (unread, read, trash, deleted)
- message
    - date (date sent)
    - sent_user_id
    - message

Каждый message_thread будет содержать 1 запись в message_thread. У каждого пользователя в message_user будет запись, связывающая его с этим потоком, а также его статус чтения / удаления для этого потока. (message_user может также содержать некоторые поля даты и времени относительно того, когда возникли различные статусы.) Таблица сообщений будет содержать сообщения, пользователя, отправившего их, и время.

В конце концов, система будет работать аналогично Facebook или выглядеть как Gmail (хотя и не на основе электронной почты).

Требуется:

  • более 2 пользователей, вовлеченных в тему
  • каждый пользователь должен иметь собственный статус чтения / удаления для потока

Это вы так настроите?

Ответы [ 2 ]

2 голосов
/ 09 февраля 2009

Попробуйте одну таблицу:

messages
  id (INT)
  user_id (INT, ref to users table)
  subject (CHAR)
  parent_id (INT, ref to messages table, NULL if head of thread)
  content (TEXT),
  (other per-message attributes)

Позволяет создавать потоки, а также для каждого сообщения свою тему.

Чтобы добавить статус чтения, добавьте таблицу «многие ко многим», связывающую пользователей с сообщениями, где запись в таблице означает, что пользователь прочитал это сообщение.

0 голосов
/ 09 февраля 2009

Я бы добавил таблицу регистрации статуса с user_id, thread_id, status_id и датой изменения статуса.

Я бы также объединил таблицы message и message_thread, поскольку, как представляется, они будут от 1 до 1 и могут быть объединены.

...