Open5
中間テーブル
中間テーブルとは?
その名の通り2つのテーブルの間に作られるテーブル。
多対多の関係が生まれた時にそれを解決する1つの方法。
多対多とは?
例えば学校の生徒とその得意科目をテーブルで表したとする。
するとテーブルは生徒と得意科目になるが、生徒は複数の得意科目を持っているし(対多)、得意科目も複数の生徒のものになっている。
その場合この2つのテーブルは対多 + 対多 == " 多対多 "の関係が成り立つことが言える。
多対多の問題点
この関係をテーブルで表すと双方のidなどの外部キーが必要になる。そうでないと関係を示せないためだ。
しかしその場合得意科目が増えるたびに外部キーを増やしていかなければならない。
その場合得意科目aは5人のuser_idを、得意科目bは3人のuser_idと空白のカラムを作成しなくてはいけない。
しかしこのような不要なカラムが発生するテーブルはDB設計では良くないものとされる。
そこで中間テーブルが用いられる。
中間テーブルの中身
前述した通り中間テーブルは双方の間に作られるテーブル。
中身はそれぞれ接続先の外部キーを持っている。
こうすると空白のカラム(null)を作らず双方の関係を示すことができる。
まとめ
中間テーブルとは、
- 多対多の関係にあるテーブル
- 2つのテーブルの外部キーを持つ
- 空欄のカラムを作らずに済む