今回は、あまり見かけないようで意外と必要になる「複数のテーブルに対して多対一で紐づくテーブル」の設計について、4つのアプローチをご紹介します。 どのようなケース?あるテーブルが複数のテーブルのいずれかに対して、自身が多、紐付き先が一で関連する場合のテーブル設計です。 例えば、「記事」と「画像」を投稿できるようなSNSを想定します。 この時、閲覧者が投稿された「記事」と「画像」のどちらにも「コメント」をつけることができる機能があったとします。 このような場合に、どのようなテーブルの設計方法があるのか、以下から説明していきます。 1.ポリモーフィック関連SQLアンチパターンにも登場するこの設計方法。「どのテーブルのどのレコード(id)に紐づくのか」という情報をテーブルに持たせてしまうという方法です。具体的には以下のような設計になります。 comments.target_tableに関連する対象
![複数のテーブルに対して多対一で紐づくテーブルの設計アプローチ|スパイスファクトリー株式会社](https://cdn-ak-scissors.b.st-hatena.com/image/square/20460bdef6198ed9e23bcf4cdba3abc5c7060ecd/height=288;version=1;width=512/https%3A%2F%2Fspice-factory.co.jp%2Fwp-content%2Fuploads%2F2016%2F07%2Fdb-e1626837097688.jpg)