これは古典的なテーブル継承パターンの質問であり、3 つの確立された解決策があります。
それぞれに長所と短所があります。クラス テーブルの継承を使用しました。これは、コードの設計モデルに従い、正規化されているように見えるため、ほとんどの開発者が自然に行う傾向があります。ただし、頻繁な結合が必要であり、挿入と更新にコストがかかり、データ整合性の強制が複雑であるため、パフォーマンスが低下します。私は単一テーブル継承モデルを大いに支持します:唯一無二のテーブル [Messages]
、最も頻繁なアクセス パターンでのシンプルさと実行時のパフォーマンスが評価されました (たとえば、「受信トレイを表示」はシンプルで高速なクエリです)。提案されたモデルで、負荷をかけた状態で、妥当な大規模なデータセットを使用してテストを行うことをお勧めします。