リレーションシップを使用する

テーブルのリレーションシップの使用を開始する

お使いのブラウザーではビデオがサポートされていません。Microsoft Silverlight、Adobe Flash Player、Internet Explorer 9 のいずれかをインストールしてください。

リレーショナル データベースを使用すると、テーブル間でデータを組み合わせることができます。そのためには、最初にテーブル間のリレーションシップを確立する必要があります。次に、Access 使用して、クエリ、フォーム、レポート内のデータを組み合わせます。

データベースに対して定義された既存のリレーションシップをすべて表示するには、Access テンプレートを開いて、[データベース ツール] タブに移動し、[リレーションシップ] を選びます。

注: 空のデータベースまたはテーブルのリレーションシップが定義されていないデータベースを開いた場合、Access は、テーブルまたはクエリを追加するように要求します。リレーションシップを追加するには、2 つ以上のテーブルが必要です。理想的には、最初にすべてのテーブルを作成します。詳細については、「ルックアップ ウィザードを使ってリレーションシップを作成する」および「リレーションシップ ウィンドウを使ってリレーションシップを作成する」を参照してください。

リレーションシップ ビューについて

リレーションシップ ビュー内の線は、テーブル間のつながりを示します。次の図で、左側のテーブルは親テーブルです。右側のテーブルは、子テーブルです。これらのテーブルの間にある線は、データを一致させるために使用されるフィールド (この場合は、注文 ID と製品 ID) をつなぎます。

リレーションシップは、親フィールドと子フィールドを結ぶ線で示されます。

テーブル間の関係を示す線と記号は、次のとおりです。

  • 太い接続線は、データの参照整合性が適用されていることを意味します。これは適切です。データの同期が保たれます。

  • この図で、数字 1 は、そのテーブルには一致するレコードが 1 つしか存在できないことを示します。ここに示す受注テーブルでは、各注文と一致するレコードは 1 つのみです。

  • 無限大 (∞) 記号は、複数のレコードに同じ ID を含められることを示します。ここに示す受注の詳細テーブルでは、同じ注文に複数の製品を含めることができるので、注文 (注文 ID で示される) が複数回表示される可能性があります。

テーブル間のリレーションシップの種類

テーブル間のリレーションシップには、次の 3 種類があります。

  • 一対一。各テーブル内の各項目が 1 回のみ表示される場合。たとえば、各従業員が使用できる社用車は 1 台のみです。詳細については、「Create one-to-one relationships (一対一リレーションシップを作成する)」を参照してください。

  • 一対多。一方のテーブル内の 1 つの項目が他方のテーブル内の複数の項目とリレーションシップを持つことができる場合。たとえば、1 つの発注書で複数の製品を発注する場合があります。

  • 多対多。一方のテーブル内の 1 つ以上の項目が他方のテーブル内の 1 つ以上の項目とリレーションシップを持つことができる場合。たとえば、1 つの注文で複数の製品を注文したり、1 つの製品が多数の注文に表示されたりする場合があります。詳細については、「Create many-to-many relationships (多対多リレーションシップの作成)」を参照してください。

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

適切に設計されたデータベースのテーブル間で最も一般的なリレーションシップの 1 つは、一対多リレーションシップです。

テーブル間のリレーションシップは、通常、一方のテーブルの主キーに依存します。主キーは、各レコードの一意の識別子 (多くの場合、数値) であることを思い出してください。2 つの異なるテーブル内の情報が関係していることを示すには、通常、一方のテーブルの主キーを使用してリレーションシップを作成します。

たとえば、次に示すリレーションシップで、連絡先テーブルの各連絡先には ID があり、それが主キーになります (横にある鍵の記号で示されます)。この ID は、資産テーブルの所有者フィールドにも表示されます。資産に関連付けられた連絡先にメールを送信するには、電子メール アドレス フィールドから値を取得します。そのためには、資産テーブルの所有者フィールドで値を検索し、連絡先テーブルでその ID を検索します。接続線の一方の端にある数字 1 と他方の端にある無限大 (∞) 記号は、これが一対多リレーションシップであり、1 つの連絡先を多数の資産と関連付けられることを示しています。

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

リレーションシップを編集する

既存のデータベースを変更する場合、またはデータベースをテンプレートから作成した場合、既存のリレーションシップをニーズに合わせて編集できます。

注: 操作するテーブルが使用中の場合は、最初にそのテーブルとそのテーブルを使用する開かれたオブジェクトをすべて閉じます。

  1. [データベース ツール]、[リレーションシップ] の順に選択します。

  2. 関連する 2 つのテーブルをつなぐ線を選びます。

    ヒント: 目的のリレーションシップが表示されない場合は、[デザイン] タブの [リレーションシップ] グループで、[すべてのリレーションシップ] を選択します。

  3. [デザイン] タブで [リレーションシップの編集] を選択します。

    テーブル間の既存のリレーションシップの編集

    左側の [テーブル/クエリ] は親テーブルです (この例では、"顧客")。

    [リレーション テーブル/クエリ] は子テーブルです (この例では、"注文")。

    リレーションシップ ビューでテーブルがこの順序で表示されない場合でも、ダイアログ ボックス内の配置は、それらのテーブルをつなぐ線の方向とリレーションシップを示します。たとえば、一対多リレーションシップの場合、左側のテーブルが一 (親テーブル) で、右側のテーブルが多 (子テーブル) であることを示すので、この配置は重要です。

  4. テーブルを接続するフィールドを変更するには、表示されている各テーブルの下で別のフィールドを選びます。この例では、顧客テーブルの ID フィールドを受注テーブルの顧客 ID フィールドに接続します。

  5. Access がテーブル間でデータを同期する方法を変更します。

    参照適合性

    無効なデータを防止し、テーブル リレーションシップ間で参照の同期を保つには、これを選びます。

    たとえば、従業員テーブルと従業員手当テーブルの間に一対一リレーションシップがあるとします。従業員が退職し、その従業員を従業員テーブルから削除すると、従業員手当テーブルの関連する従業員レコードも削除されます。

    参照整合性を適用しても意味がない場合があります。たとえば、運送会社と注文の間に一対多リレーションシップがあるとします。運送会社を削除した後に、その運送会社を注文テーブル内の注文にマップすると、それらの注文は孤立します。つまり、注文に運送会社 ID が含まれていても、その ID で参照されるレコードは既に存在しないので、その ID は有効ではなくなっています。

    フィールドの連鎖更新

    関連するフィールド内のデータが関連するすべてのテーブルで更新されるようにするには、これを選びます。

    たとえば、運送会社の ID のみを変更するとしましょう。このオプションを設定すると、運送会社テーブル内だけでなく、これに接続され、さらにその運送会社 ID を含む他のすべてのテーブル (例えば、注文テーブルなど) の運送会社 ID が更新されます。

    レコードの連鎖削除

    このオプションを選択するかどうかは、レコードが他のテーブルから削除されても、一部のテーブルではそのレコードを保持する必要があるかどうかによって決まります。

    たとえば、ある運送会社を削除するとしましょう。このオプションを選択すると、Access は、その運送会社から出荷されるすべての注文 (注文テーブル内) など、その運送会社 ID を参照するすべてのテーブルのすべてのレコードを削除します。注文履歴を削除してもよいことがわかっている場合のみ、このオプションを選びます。

  6. テーブル間のリレーションシップを内部結合から外部結合に変更するには、[結合の種類] ボタンを選びます。詳細については、「Create queries with outer joins (外部結合を使ってクエリを作成する)」を参照してください。

テーブル リレーションシップを削除する

注: 操作するテーブルが使用中の場合は、最初にそのテーブルとそのテーブルを使用する開かれたオブジェクトをすべて閉じます。

テーブル リレーションシップを削除するには、次の手順を実行します。

  1. [データベース ツール]、[リレーションシップ] の順に選択します。

  2. 関連する 2 つのテーブルをつなぐ線を選びます。

    ヒント: 目的のリレーションシップが表示されない場合は、[デザイン] タブの [リレーションシップ] グループで、[すべてのリレーションシップ] を選択します。

  3. Del キーを選択します。リレーションシップを削除することを確認するメッセージが表示されたら、[はい] を選びます。

注: リレーションシップを削除すると、そのリレーションシップに対して参照整合性が選択されている場合、そのサポートも削除されます。その結果、Access は変更を防止しなくなり、一対多リレーションシップでレコードの孤立が発生します。

さらに詳しく

リレーションシップを作成する

リレーションシップを削除する

Excel のトレーニング

Outlook のトレーニング

データベースにテーブルを作成したら、それらの間のリレーションシップを作成します。リレーションシップは、データを分割した後にテーブルを関連付け、クエリの作成方法やデータからの回答の取得方法に大きな影響を与えるため、非常に重要です。

リレーショナル データベースが使用するテーブル間のリレーションシップには、一対多多対多、および一対一の 3 つがあります。

使用するリレーションシップは、データによって異なります。一方のテーブルの 1 つのレコードが他方のテーブルの 1 つ以上のレコードに関連付けられる場合、一対多リレーションシップを使用します。

ここで使用するサンプル データベースは、このリレーションシップを使用しています。1 つの顧客が 1 つ以上の電話番号を所有でき、各電話番号は 1 つの顧客にのみ関連付けられます。

テーブル A の 1 つのレコードがテーブル B の 1 つ以上のレコードと関連付けられ、テーブル B の 1 つのレコードがテーブル A の 1 つ以上のレコードと関連付けられる場合は、多対多リレーションシップを使用します。

通常、注文追跡データベースでは、注文に多数の製品が含まれ、製品には複数の注文が含まれるので、多対多リレーションシップが使用されます。

学生データベースでも、複数の学生が複数の授業に出席する場合、この種類のリレーションシップが見られます。

一方のテーブルの 1 つのレコードが他方のテーブルの 1 つのレコードのみに関連付けられる場合、一対一リレーションシップを使用します。たとえば、1 人の従業員は、1 台の社用車を運転するとします。ただし、一対一リレーションシップは一般的ではないので、この関係が見られることはほとんどありません。

では、[データベース ツール] を選択して、[リレーションシップ] を選択します。[リレーションシップ] ウィンドウが開きます。このツールは頻繁に使用します。

ほとんどの場合、ここでリレーションシップを作成し、管理します。これは、2 つのテーブルを線でつないだ典型的なリレーションシップです。線は、これらのテーブルが関連付けられていることを示します。

さらに重要なのは、これは一対多リレーションシップであるということです。リレーションシップ線に数字の "1" と、"無限大記号" があることから、それがわかります。これらの記号は、2 つの重要な概念を示します。

まず、"一" の側のテーブルは親テーブルで、"多" の側のテーブルは子テーブルになります。

次に、ほとんどのリレーションシップには、"側" があると考えられます。この場合、"一" の側のテーブルと、"多" の側のテーブルがあります。

"側" は、クエリの作成方法に影響を与えるので重要です。

では、リレーションシップ線を選んで、リボンで、[リレーションシップの編集] を選択します。

データに影響を与えるリレーションシップ設定は 3 つあり、リレーションシップを適切に使用するのに役立ちます。それらは、参照整合性連鎖更新連鎖削除です。これらの機能について説明します。

まず、参照整合性は、両方のテーブルのレコードを同期します。これは、データの正確性を維持するために重要な機能なので、ほとんどの場合、常に設定する必要があります。

参照整合性を適用すると、顧客テーブルに名前がなければ、電話番号を追加することはできません。これは、"孤立データ" と呼ばれる、親レコードのないデータが作成されるのを防止します。

たとえば、販売の図に注文が添付されていない場面を想像してみてください。なぜ参照整合性を設定することが重要なのかがお分かりになるはずです。

連鎖更新を設定すると、親側の変更が、"子"、すなわち "多" の側の関係付けられたすべてのレコードに反映されます。

たとえば、顧客の名前を変更する場合、顧客テーブルでその変更を入力するだけで、関連付けられた任意のレコードが変更されます。

連鎖削除の設定は、データを削除できるかどうかを制御します。このオプションを選択しない場合、データを削除することはできません。このオプションを選択した場合、レコードを削除すると、Access は、そのレコードに関連付けられたすべてのデータを削除します。

たとえば、顧客を削除すると、電話番号も削除されます。

これにより、孤立データ、つまり顧客のない電話番号が残るのを防止できるので効果的です。ただし、ビジネス ルールによってデータを削除できない可能性があるので、ご注意ください。ビジネス ルールは、データベースの設計に大きな影響を与える可能性があります。

テーブルのリレーションシップについては以上です。Access のリレーションシップ ウィンドウの使い方、Access データベースを効果的に使用するために役立つリレーションシップの設定などがおわかりいただけたと思います。

スキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×