初めてモックアップデータベースを作成しています。多対多の関係で構成されるリレーショナル モデルを作成しました。リレーショナル モデルでは、個別のリンク/結合テーブルがあります。データベースを作成するとき、このリンク テーブルも別のテーブルとして作成する必要がありますか? または、各外部キーを多対多のテーブルに入れることはできますか?
別のテーブルが必要な場合、これらのテーブルを構文でリンクするにはどうすればよいですか?
ありがとう
初めてモックアップデータベースを作成しています。多対多の関係で構成されるリレーショナル モデルを作成しました。リレーショナル モデルでは、個別のリンク/結合テーブルがあります。データベースを作成するとき、このリンク テーブルも別のテーブルとして作成する必要がありますか? または、各外部キーを多対多のテーブルに入れることはできますか?
別のテーブルが必要な場合、これらのテーブルを構文でリンクするにはどうすればよいですか?
ありがとう
1 対多の方法でのみ外部キーを作成できます。したがって、この交差テーブルが必要です。これは、論理データ モデルを物理モデルに変換するときに導入する一種の追加構造です。
多くの場合、交差テーブルには、M:N 形式でリンクする 2 つのテーブルの参照キーである 2 つの列しかありません (リンクのプロパティを保持するためのメタデータ列もある場合があります)。通常、冗長性を避けるために、2 つの列に複合主キーがあります。参照される各テーブルに外部キーがあり、参照される列に主キーが定義されている必要があります。
構文は非常に明白です。このサンプルでは、2 つのマスター テーブルと、キーのみを定義する交差を作成します。
create table m1 (
id number not null
, constraint m1_pk primary key (id) );
create table m2 (
id number not null
, constraint m2_pk primary key (id) );
create table intersection_t (
m1_id number not null
, m2_id number not null
, constraint int_pk primary key (m1_id, m2_id)
, constraint int_m1_fk foreign key (m1_id)
references m1 (id)
, constraint int_m2_fk foreign key (m2_id)
references m2 (id)
);