Создание многопоточного обмена сообщениями такую ​​систему, как facebook и gmail

Я создаю многопоточную систему сообщений, очень похожую на Gmail и Facebook, где в папке «Входящие» перечислены самые последние потоки, отображающие тему, имя отправителя и отметку времени самое последнее сообщение.

Вот как настроены мои таблицы:

users:
    user_id
    user_name

thread:
    thread_id
    title
    to_id
    to_keep
    to_read
    from_id
    from_keep
    date

message:
    message_id
    thread_id
    to_id
    from_id
    message_text
    date

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

Кроме того, для просмотра входящих сообщений я могу просто запросить все потоки на основе user_id .что-то вроде SELECT * FROM thread WHERE to_id = 2 и to_keep = TRUE ORDER BY date DESC или, если я хочу просматривать сообщения в папке исходящих, это будет что-то вроде SELECT * FROM thread WHERE from_id = 2 и from_keep = TRUE ORDER BY date DESC .

Если пользователь открывает поток, когда есть новое сообщение, то to_read обновляется до true UPDATE thread SET to_read = TRUE WHERE thread_id = 4 .

Мне кажется, что я слишком усложняю этот процесс и что должен быть лучший способ сделать это.

Любая помощь или идеи приветствуются.

Таким образом, позвольте мне просто выбрать все из таблицы потоков, а затем выполнить соединение с таблицей пользователей, чтобы отобразить все, что мне нужно. Однако я считаю, что должен быть способ сделать это лучше.

31
задан bigmike7801 26 June 2011 в 19:02
поделиться