演習
多対多リレーションシップとは
多対多リレーションシップは、最もよく使われるテーブル リレーションシップです。 このリレーションシップによって、営業担当者がどの顧客に連絡したか、どの製品が顧客の注文に含まれているかなどの重要な情報を取得できます。
多対多リレーションシップは、1 つのテーブル内の 1 つ以上の項目が、別のテーブル内の 1 つ以上の項目に対して関係を持つことができる場合に成立します。 次に例を示します。
- Order テーブルには、複数の顧客からの注文が含まれています (顧客は Customers テーブルに一覧表示されます)。1 件の顧客から複数の注文を受ける場合があります。
- Products テーブルには販売する個々の製品が含まれています。それらの製品は Order テーブルにある多数の注文の一部です。
- 1 つの注文には、特定の製品の 1 つのインスタンス (または複数のインスタンス)、複数の製品の 1 つのインスタンス (または複数のインスタンス)、またはその両方が含まれます。
たとえば、顧客である Elizabeth Andersen の注文番号 1012 には、製品 12 と 15 が 1 個ずつと、製品 30 が 5 個含まれていることがあります。
多対多リレーションシップを作成する
多対多リレーションシップの作成方法は、一対一または一対多のリレーションシップの作成方法とは異なります。 一対一または一対多のリレーションシップの場合は、適切なフィールドを線でつなぐだけです。 多対多リレーションシップを作成するには、新しいテーブルを作成して他の 2 つのテーブルを結合する必要があります。 この新しいテーブルは中間 テーブルと呼ばれます (または、リンク テーブルや交差テーブルと呼ばれる場合もあります)。
前に説明したシナリオでは、各項目に受注した注文、Order テーブルにある ID、Products テーブルにある ID を含むレコードを持つ Order Details テーブルを作成します。 そのテーブルに、2 つのテーブルのキーを組み合わせて主キーを作成します。
シナリオでは、Elizabeth Andersen の注文番号 1012 は、製品 12、15、および 30 で構成されます。 つまり、Order Details のエントリは次のようになります。
| 受注 ID | プロダクト ID |
|---|---|
| 1012 | 12 |
| 1012 | 15 |
| 1012 | 30 |
エリザベスは、製品 12 と 15、製品 30 の 5 つをそれぞれ 1 つ注文しました。 1012 と 30 の別の行を追加することはできません。これは、注文 ID と製品 ID の組み合わせによって主キーが構成され、主キーが一意である 必要 があるためです。 代わりに、[注文の詳細] テーブルに [数量] フィールドを追加します。
| 受注 ID | プロダクト ID | Quantity |
|---|---|---|
| 1012 | 12 | 1 |
| 1012 | 15 | 1 |
| 1012 | 30 | 5 |
中間テーブルを作成する
- [ 作成>Table] を選択します。
- [保存] を選択
。 - [テーブル名] に、わかりやすいタイトルを入力します。 テーブルの目的を示すために、テーブル名に junction (交差) または intermediate (中間) を含めることができます。
中間テーブルのフィールドを作成します。
最初のテーブルの列として、Access で自動的に ID フィールドが追加されます。 多対多リレーションシップにおける最初のテーブルの ID に一致するように、そのフィールドを変更します。 たとえば、最初のテーブルが Order ID と呼ばれる Orders テーブルであり、主キーが番号である場合は、新しいテーブルの ID フィールドを Order ID に変更し、データ型として [数値] を使用します。
- [データシート ビュー] で列見出しの [ID] を選択し、フィールドの新しい名前を入力します。
- 名前を変更したフィールドを選択します。
- [ テーブル フィールド] タブの [ データ型] で、 数値 や 短いテキストなど、元のテーブルのフィールドと一致するデータ型を選択します。
- [クリックして追加] を選択し、2 番目のテーブルの主キーに一致するデータ型を選択します。 既に選択されている列見出しで、2 番目のテーブルの主キー フィールドの名前を入力します (Product ID など)。
- 品目の数量など、これらのレコードに関するその他の情報を追跡する必要がある場合は、追加のフィールドを作成します。
主 ID フィールドを結合する
2 つのテーブルの結合したい ID を含むフィールドを作成したので、次に、それらの ID に基づく主キーを中間テーブルに作成します。
- [デザイン ビュー] で中間テーブルを開きます。
- ID を含む両方の行を選択します。 (前の手順に従った場合、これらは最初の 2 行です)。
- [ テーブル デザイン>Primary キー] を選択します。
両方の ID フィールドの横にキー アイコンが表示されます。
3 つのテーブルを接続して多対多リレーションシップを作成する
多対多リレーションシップを作成するには、各テーブルの主キー フィールドと、中間テーブルの対応するフィールド間に、一対多のリレーションシップを作成します。 これを行う方法の詳細については、「テーブル間のリレーションシップの使用を開始する」を参照してください。
完了すると、リレーションシップは次のようになります。