多対多

履修登録システムには、学生とコースという2つのエンティティがあります。1人の学生は複数のコースを履修でき、1つのコースも複数の学生が履修できます。これは多対多の関係です。リレーショナルデータベースで学生とコースの多対多関係を表現するには、通常、中間テーブル(履修登録テーブルなど)を使用します。このテーブルには、各学生がどのコースを選択したか、また各コースをどの学生が履修しているかを記録できます。このような設計により、学生とコースの多対多関係を適切に表現できます。

ER関係は次のとおりです。

alt text

フィールド設定

alt text

パラメータの説明

Source collection

ソースコレクション。現在のフィールドが属するテーブルです。

Target collection

ターゲットコレクション。関連付けるテーブルです。

Through collection

中間コレクション。2つのエンティティ間に多対多の関係が存在する場合、この関係を格納するために中間テーブルを使用します。中間テーブルには2つの外部キーがあり、2つのエンティティ間の関連を保持します。

Source key

外部キー制約が参照するフィールドです。一意性を備えている必要があります。

Foreign key 1

中間テーブルのフィールドで、ソーステーブルとの関連を確立するために使用します。

Foreign key 2

中間テーブルのフィールドで、ターゲットテーブルとの関連を確立するために使用します。

Target key

外部キー制約が参照するフィールドです。一意性を備えている必要があります。

ON DELETE

ON DELETEとは、親テーブルのレコードを削除した際に、関連する子テーブルの外部キー参照をどのように処理するかを定めるルールです。外部キー制約を定義する際のオプションの1つです。一般的なON DELETEオプションには、次のものがあります。

  • CASCADE:親テーブルのレコードを削除すると、それに関連する子テーブルのすべてのレコードを自動的に削除します。
  • SET NULL:親テーブルのレコードを削除すると、子テーブルにある関連する外部キーの値をNULLに設定します。
  • RESTRICT:デフォルトのオプションです。親テーブルのレコードを削除しようとした際に、関連する子テーブルのレコードが存在する場合、親テーブルのレコードの削除を拒否します。
  • NO ACTION:RESTRICTと同様に、関連する子テーブルのレコードが存在する場合、親テーブルのレコードの削除を拒否します。