中間テーブルについて

中間テーブルについて学んだこと(わかりやすく)

(イケメン及び美人と言われる芸能人を元に直感的に理解しやすいように作られた

空想のお話です。)

 

前提として、男性と女性は一対一で付き合うものとする。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つ作るということです。