Дизайн базы данных: частный чат, групповой чат и электронная почта

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

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

TABLE: message
 - message_id
 - timestamp
 - from_user_id
 - to_user_id
 - message

Что, если бы я хотел поддержать групповой чат? Сделал бы я что-нибудь вроде этого:

TABLE: message
 - message_id
 - timestamp
 - from_user_id
 - message

TABLE: message_recipient

 - message_recipient_id
 - message_id
 - to_user_id

Думаю, это сработает. Однако мне интересно, будет ли это иметь смысл для пользователя, если я покажу все, что пользователь когда-либо отправлял кому-либо в одном длинном разговоре. Наверное, не будет. Представьте себе разговор с человеком A, смешанный с групповым разговором с человеком A, B, C, D, смешанный с разговором с человеком E и так далее ....

Есть какие-нибудь предложения о том, какую концепцию можно использовать?

12
задан StackOverflowNewbie 8 June 2011 в 00:00
поделиться