title: Database Design: private chat, group chat, and emails
body: <p>The communication between Facebook users seem to be stored in one long "conversation." So, emails sent and private chat messages exchanged all seem to be part of one long ongoing conversation.</p>
  
  <p>I think this implementation works well for users (at least it does for me). I assume the table design for this part could be implemented this way:</p>
  
  <pre><code>TABLE: message
   - message_id
   - timestamp
   - from_user_id
   - to_user_id
   - message
  </code></pre>
  
  <p>What if I wanted to support group chat? Would I do something like this:</p>
  
  <pre><code>TABLE: message
   - message_id
   - timestamp
   - from_user_id
   - message
  
  TABLE: message_recipient
  
   - message_recipient_id
   - message_id
   - to_user_id
  </code></pre>
  
  <p>I think it'll work. However, I'm wondering if it would make sense to the user if I displayed every single things that user has ever messaged anyone in one long conversation. It probably wont. Imagine a conversation with Person A mixed with group conversation with Person A, B, C, D mixed with conversation with Person E and so on ....</p>
  
  <p>Any suggestion on what would be a usable concept to implement?</p>