用語集 最終更新 2026.04.27

中間テーブル

中間テーブル は、2つの表のあいだに入って、どの行とどの行が結びついているか を記録するためのテーブルです。
とくに 1つのユーザーが複数の権限を持てる1つの権限が複数のユーザーに割り当てられる のような 多対多 の関係でよく使います。

まず押さえたいポイント

  • 片方にも反対側にも複数ぶら下がる関係を表すときに使う
  • 代表的な列は user_idrole_id のような2本の外部キー
  • 文字列や配列でIDを1列に押し込むより、検索や更新や制約を扱いやすい
  • Laravel では pivot table と呼ばれることが多い

どんな場面で使うか

中間テーブルは、次のような場面で出てきます。

  • ユーザーと権限
  • 記事とタグ
  • 注文と商品
  • チームとメンバー

たとえば商品と注文の関係では、単に 商品が注文に含まれる だけでなく、数量単価 も持たせたくなることがあります。
その場合、中間テーブルは単なる橋渡しではなく、関係そのものの情報 を持つ場所にもなります。

実務で見るポイント

中間テーブルで大事なのは、多対多ならとりあえず作る で終わらず、本当に多対多なのかを先に見極めることです。
実は片側が1つしか持てないなら、片方に外部キーを置く 1対多 で十分なこともあります。

また、中間テーブルでは (AのID, BのID) の組み合わせが重複しないように考えることが多いです。
重複行が増えると、一覧や集計が崩れやすくなります。

よくある誤解

中間テーブルは フレームワークが勝手に作る裏側の表 と見られがちですが、実際にはかなり重要な設計ポイントです。
ORM が吸収してくれても、遅い JOIN や重複結果、追加カラムの扱いを考えるときは、結局この表の意味を理解している方が強いです。

詳しくは 中間テーブルとは?多対多で必要になる理由とピボットテーブルとの違い で、なぜ必要になるのかを具体例つきで整理しています。