演習
一対一リレーションシップとは
一対一リレーションシップは、ビジネスの営業に必要なデータを取得できるように、重要な関係を示すために頻繁に使用されます。
一対一リレーションシップとは、2 つのテーブルの情報をつなぐリンクであって、それぞれのテーブルにおいて各レコードが 1 回だけ出現するリンクのことです。 たとえば、従業員と従業員が運転する社用車の間の関係は一対一リレーションシップと言えます。 各従業員は Employees テーブルに 1 回だけ出現し、各社用車は Company Cars テーブルに 1 回だけ出現します。
一対一リレーションシップは、項目の一覧を含むテーブルがあり、項目に関して取得したい特定の情報が項目の種類によって異なるような場合に使用します。 たとえば、一部のユーザーが従業員で、他のユーザーが協力会社である連絡先テーブルを使用している場合があります。 従業員については、従業員番号と内線番号、その他の重要な情報がわかるようにする必要があります。 協力会社については、会社名、電話番号、料金を知る必要があります。 この場合は、Contacts、Employees、Subcontractors という 3 つの独立したテーブルを作成し、Contacts テーブルと Employees テーブルの間、および Contacts テーブルと Subcontractors テーブルの間に一対一リレーションシップを作成します。
一対一リレーションシップを作成するための概要
一対一リレーションシップを作成するには、1 つのテーブルのインデックス (通常は主キー) と、同じ値を共有する別のテーブルのインデックスをリンクします。 次に例を示します。
多くの場合、このリレーションシップを作成する最良の方法は、2 番目のテーブルから最初のテーブルの値を検索することです。 たとえば、Employees テーブルの Car ID フィールドをルックアップ フィールドとし、Company Cars テーブルの Car ID インデックスの値を検索します。 このようにすると、実際に存在しない車の ID を誤って追加することがありません。
重要: 一対一リレーションシップを作成するときは、リレーションシップに参照データ整合性を適用するかどうかを慎重に決定してください。
参照データの整合性は、Access が関連レコードを削除してデータをクリーンに保つのに役立ちます。 たとえば、[従業員] テーブルから従業員を削除した場合は、その従業員の福利厚生レコードも [福利厚生] テーブルから削除します。 ただし、この例のような一部のリレーションシップでは、参照整合性が意味をなさない場合があります。従業員を削除した場合、車は会社に属し、他のユーザーに割り当てられるため、Company Cars テーブルから車両を削除したくはありません。
一対一リレーションシップを作成するための手順
ルックアップ フィールドをテーブルに追加して、1 対 1 のリレーションシップを作成します。 (方法については、「テーブルのビルドと データ型の設定」をご覧ください。 たとえば、特定の従業員に割り当てられている車を示すために、従業員テーブルに車 ID を追加できます。 次に、2 つのフィールド間のリレーションシップを作成するには、ルックアップ ウィザードを使用します。
-
テーブルを開きます。
-
[デザイン ビュー] で新しいフィールドを追加し、[データ型] の値を選択した後、[ルックアップ ウィザード] を選択します。
-
ウィザードは既定で別のテーブルの値を検索するように設定されているので、[次へ] を選択します。
-
このテーブルに挿入したいキー (通常は主キー) が含まれているテーブルを選択し、[次へ] を選択します。 この例では、Company Cars テーブルを選択します。
-
[選択されたフィールド] ボックスの一覧で、使用するキーが含まれているフィールドを追加します。 [次へ] を選択します。
-
並べ替え順序を設定し、希望する場合は、フィールドの幅を変更します。
-
最後の画面では、[データ整合性を有効にする] チェック ボックスをオフにし、[完了] を選択します。