次のデータベース設計をお勧めします。
MESSAGES
+----------+------------------+---------------------------+
| id | subject_id | body |
+----------+------------------+---------------------------+
SUBJECTS
+----------+-------------+--------------+-----------------+
| id | title | author | receivers |
+----------+-------------+--------------+-----------------+
INBOX
+----------+---------------+--------------+---------------+
| id | user_id | msg_id | read |
+----------+---------------+--------------+---------------+
OUTBOX
+----------+---------------+------------------------------+
| id | user_id | subject_id |
+----------+---------------+------------------------------+
メッセージを送信するときは、受信ボックス テーブルにすべての受信者用の新しい行を作成し、送信者用に送信ボックス テーブルに新しい行を作成します。メッセージ テーブルに、件名の ID とメッセージ本文を含む 1 つの行を挿入します。サブジェクト テーブルに、タイトル、作成者、およびすべての受信者を含む 1 つの行を挿入します (送信者が新しいサブジェクトを開始した場合、または完全な会話または 1 つのメッセージを転送した場合、それ以外の場合は、既存のサブジェクト ID を使用してメッセージ テーブルにメッセージを追加します)。受信者の 1 人が受信ボックスからメッセージを削除しても、情報は保持されます (この場合、受信ボックス テーブルの行を削除します)。
送信ボックスの場合、「読み取り」フラグは必要ありません。サブジェクト ID のみが使用されることに注意してください。