title: Optimised way of storing threaded converstations?
body: <p>We are to design a architecture storing conversations (one to many)... </p>
  
  <p>we are using the following tables (and columns)</p>
  
  <ol>
  <li>messages_table - message_id, sender_id (user_id), timestamp, reference_id</li>
  <li>recipients - message_id, recipient_id (user_id)</li>
  <li>unread_status_table - message_id, user_id </li>
  </ol>
  
  <p>we are storing messages in messages table, and reference_id stores the message id of starting thread.</p>
  
  <p>unread status table saves only messages that are unread.</p>
  
  <p>I am not sure if we should use a separate table for unread messages, advantage is, if all the messages are read, the table is empty.</p>
  
  <p>please help me :)</p>