Связь между пользователями 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 и т.д....
Любое предложение о том, что можно использовать для использования?