Open5

中間テーブル

2wt2wt

中間テーブルとは?

その名の通り2つのテーブルの間に作られるテーブル。
多対多の関係が生まれた時にそれを解決する1つの方法。

2wt2wt

多対多とは?

例えば学校の生徒とその得意科目をテーブルで表したとする。
するとテーブルは生徒と得意科目になるが、生徒は複数の得意科目を持っているし(対多)、得意科目も複数の生徒のものになっている。
その場合この2つのテーブルは対多 + 対多 == " 多対多 "の関係が成り立つことが言える。

2wt2wt

多対多の問題点

この関係をテーブルで表すと双方のidなどの外部キーが必要になる。そうでないと関係を示せないためだ。
しかしその場合得意科目が増えるたびに外部キーを増やしていかなければならない。
その場合得意科目aは5人のuser_idを、得意科目bは3人のuser_idと空白のカラムを作成しなくてはいけない。
しかしこのような不要なカラムが発生するテーブルはDB設計では良くないものとされる。
そこで中間テーブルが用いられる。

2wt2wt

中間テーブルの中身

前述した通り中間テーブルは双方の間に作られるテーブル。
中身はそれぞれ接続先の外部キーを持っている。
こうすると空白のカラム(null)を作らず双方の関係を示すことができる。

2wt2wt

まとめ

中間テーブルとは、

  • 多対多の関係にあるテーブル
  • 2つのテーブルの外部キーを持つ
  • 空欄のカラムを作らずに済む