Общение между пользователями 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
Я думаю, что это сработает. Тем не менее, мне интересно, будет ли для пользователя иметь смысл, если я буду отображать все, что пользователь когда-либо сообщал кому-либо в одном долгом разговоре. Это, вероятно, не будет. Представьте себе разговор с человеком А, смешанным с групповым разговором с человеком А, В, С, D, смешанным с разговором с человеком Е и так далее ...
Любое предложение о том, какую концепцию можно было бы использовать?