Accessでお仕事 データベースのリレーションシップについて

Access データベースのリレーションシップについて

ここでは、次の内容について説明します。

リレーションシップを定義する理由

リレーションシップの動作方法

一対多リレーションシップ

多対多リレーションシップ

一対一リレーションシップ

リレーションシップの定義

リレーションシップを定義する理由

Access データベースに目的の異なるテーブルを複数作成した場合、テーブル間にリレーションシップを定義するとデータをまとめて処理することができます。複数のテーブルのデータを一度に表示するクエリ、フォーム、およびレポートを作成できます。たとえば、次のフォームには、5 つのテーブルのデータが表示されます。

同時に 5 つのテーブルの関連する情報を表示する [受注] フォーム

ページの先頭に戻る

リレーションシップの動作方法

前の例で、5 つのテーブルに含まれる各フィールドには、同じ受注に関する情報が表示される必要があります。これには、テーブル間にリレーションシップを設定します。リレーションシップは、2 つのテーブル間で同じ名前のフィールドのデータを照合することにより機能します。通常、照合フィールドは一方のテーブルの主キーと、他方のテーブルの外部キーです。主キーは、各レコードを識別する固有の識別子となります。たとえば、[社員コード] フィールドを使用して [社員] テーブルと [受注] テーブル間にリレーションシップを設定し、社員の氏名とその社員が担当した得意先名を関連付けることができます。

[社員] テーブルの主キーおよび [受注] テーブルの外部キーとして使用されている [社員コード]

ページの先頭に戻る

一対多リレーションシップ

一対多リレーションシップは、最も頻繁に使用されるリレーションシップです。一対多リレーションシップでは、テーブル A の 1 つのレコードはテーブル B の多数のレコードに対応し、テーブル B の 1 つのレコードはテーブル A の 1 つのレコードに対応します。

[商品] テーブルの複数のレコードと関連付けられた [仕入先] テーブルのレコード

ページの先頭に戻る

多対多リレーションシップ

多対多リレーションシップでは、テーブル A の 1 つのレコードは テーブル B の複数のレコードに対応し、テーブル B の 1 つのレコードはテーブル A の複数のレコードに対応します。多対多リレーションシップを定義するには、新規に結合テーブルを作成し、主キーとしてテーブル A およびテーブル B を参照する外部キーを設定します。外部キーは、テーブル A およびテーブル B の主キーと同じフィールドに設定します。多対多リレーションシップは、実際には結合テーブルを介した 2 つの一対多リレーションシップです。たとえば、次の例では、[受注] テーブルと [受注明細] テーブルの間、および [商品] テーブルと [受注明細] テーブルの間に、それぞれ一対多リレーションシップが定義されており、[受注] テーブルと [商品] テーブルの間には、[受注明細] テーブルを結合テーブルとして、多対多リレーションシップが定義されています。

[受注明細] テーブルの外部キーおよび [受注] テーブルと [商品] テーブルの対応する主キー

ページの先頭に戻る

一対一リレーションシップ

一対一リレーションシップでは、テーブル A の 各レコードはテーブル B の 1 つのレコードにだけ対応し、テーブル B の 各レコードはテーブル A の 1 つのレコードにだけ対応します。このように関連付けられたデータは、通常 1 つのテーブルに保存されるため、一対一リレーションシップはあまり一般的ではありません。一対一リレーションシップは、多数のフィールドがあるテーブルを分割したり、セキュリティを保つためにテーブルの一部を分離したり、またはメイン テーブルのサブセットにだけ適用される情報を保存するために使用されます。たとえば、次の例では、[社員] テーブルからサッカー選手だけを抽出し、新規に [サッカー選手] テーブルを作成します。

[社員] テーブルの各レコードには [サッカー選手] テーブルと対応するレコードを 1 つだけもつことができる

ページの先頭に戻る

リレーションシップを定義する

リレーションシップを定義するには、関連付けるテーブルを [リレーションシップ] ウィンドウに追加し、あるテーブルからフィールドをドラッグして、それをその他のテーブルのフィールドにドロップします。キーボードを使用してリレーションシップを定義することもできます。

テーブルからほかのテーブルの一致するフィールドへのフィールドのドラッグ

Access で作成されるリレーションシップの種類は、関連フィールドがどのように定義されているかによって異なります。

メモ   主キーでなく固有のインデックスがないフィールド間でドラッグした場合、未解決のリレーションシップが作成されます。未解決のリレーションシップでは、読み取り専用は設定されません。そのようなリレーションシップが定義されているテーブルを含むクエリでは、テーブル間に既定の結合線が表示されますが、レコードがいずれのテーブルでも固有であるとは限りません。

ページの先頭に戻る


テーブル間のリレーションシップを設定する に戻る。


Access プロジェクトのリレーションシップの詳細については、ここをクリックしてください。


このページのトップに戻る↑ 次の項目を見る↓ Accessでお仕事 目次に戻る

ホームページのトップに戻る