📌 結論から理解する
カーディナリティ=「1対1・1対多・多対多」の3パターン
カーディナリティ(多重度)は、エンティティ間で「どれだけの数が対応するか」を表します。設計の根幹です。
3つのカーディナリティ
多対多の解消パターン
学生
🔑 学生ID
→
受講(中間)
🔑🔗 学生ID
🔑🔗 講座ID
成績
🔑🔗 講座ID
成績
←
講座
🔑 講座ID
中間テーブル(受講)は両方の主キーを複合主キーとして持つ。追加属性(成績など)も自然に追加できる。
外部キーの置き場所ルール
外部キーは必ず「多」の側のテーブルに置く。
1:N → N側に外部キー
M:N → 中間テーブルに両方の外部キー
1:1 → どちらか一方(任意参加の側に置くことが多い)
1:N → N側に外部キー
M:N → 中間テーブルに両方の外部キー
1:1 → どちらか一方(任意参加の側に置くことが多い)
🧠 確認クイズ
Q1. 1対多(1:N)の外部キーはどちらのテーブルに置くか?
Q2. 多対多を解消する際に作成するのはどれか?
Q3. 学生と講座が多対多のとき、受講テーブルの主キーとして適切なのはどれか?