中間テーブルについて
中間テーブルについて学んだこと(わかりやすく)
(イケメン及び美人と言われる芸能人を元に直感的に理解しやすいように作られた
空想のお話です。)
前提として、男性と女性は一対一で付き合うものとする。1対1の関係性をもちます。
男性テーブル
id | name |
---|---|
M1 | 吉沢亮 |
M2 | 横浜流星 |
M3 | 佐藤健 |
女性テーブル
id | name |
---|---|
F1 | 佐々木希 |
F2 | 長澤まさみ |
F3 | 菜々緒 |
そう考えると次のようなテーブルになります。
男性テーブル
id | name | girl_id |
---|---|---|
M1 | 吉沢亮 | F2 |
M2 | 横浜流星 | F1 |
M3 | 佐藤健 | F3 |
女性テーブル
id | name |
---|---|
F1 | 佐々木希 |
F2 | 長澤まさみ |
F3 | 菜々緒 |
男性は浮気する生き物。
複数の女性と同時に付き合う可能性があるという仕様になりました。それを表現するには、男性テーブルのカラムに複数の女性のidを入れる必要がでてきます。カラムに複数項目入れることは原則無理(カラムに複数入れることもできるようです)なので、女性のテーブルに彼氏idを持たせることで、誰が誰と付き合ってるかがわかるようにしたのが1対多の関係となります。
男性テーブル
id | name |
---|---|
M1 | 吉沢亮 |
M2 | 横浜流星 |
M3 | 佐藤健 |
女性テーブル
id | name | boy_id |
---|---|---|
F1 | 佐々木希 | M2 |
F2 | 長澤まさみ | M1 |
F3 | 菜々緒 | M1 |
浮気をするのは男性だけではなく、女性もするのが現実です。ということで、現実を加味してテーブルを作成します。このように、あるテーブルのレコードがお互いに相手のレコードと複数の関係を持てるようになった場合の関係性を多対多といいます。2次元のデータベースでは再現できません。お互いの間に中間テーブルを作ります。
男性テーブル
id | name |
---|---|
M1 | 吉沢亮 |
M2 | 横浜流星 |
M3 | 佐藤健 |
男女関連テーブル
boy_id | girl_id |
---|---|
M1 | F2 |
M1 | F3 |
M2 | F1 |
M2 | F2 |
女性テーブル
id | name |
---|---|
F1 | 佐々木希 |
F2 | 長澤まさみ |
F3 | 菜々緒 |
2次元である関係データベースでは、1対1や1対多(多対1)は、表現できても、多対多は表現できません。そこで、中間テーブルをあえて作ることで、多対多を1対多と多対1と関係性を分解するということになります。多対多は、一対多の関係を2つくっつけた関係、中間テーブルから関係を持たせるテーブルに対して一対多の関係を2つ作るということです。