一対多リレーションシップの設定

リレーションシップの中で一対多リレーションシップを設定する方法について解説します。

(Last modified: )

一対多リレーションシップの設定

リレーションシップの確認を行うためにサンプル用のテーブルを二つ作成しました。

顧客情報テーブル:

フィールド名データ型
顧客ID数値型(長整数型)
顧客名テキスト型(15)
担当ID数値型(長整数型)

顧客情報テーブル

社員テーブル:

フィールド名データ型
社員ID数値型(長整数型)
社員名テキスト型(15)

顧客情報テーブル

それぞれのテーブルには次のように初期データを入力してあります。

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

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

それでは作成した2つのテーブル間でリレーションシップの設定を行ってみます。「ツール」メニューの中の「リレーションシップ」をクリックして下さい。

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

次のように「テーブルの表示」ダイアログが表示されます。またその下に「リレーションシップ」ダイアログも表示されています。

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

リレーションシップを設定したいテーブルをここで選択します。まず「顧客情報テーブル」を選択して「追加」ボタンをクリックして下さい。

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

少し見難いですが「リレーションシップ」ダイアログ上に「顧客情報テーブル」が表示されました。それでは同じように「社員テーブル」を選択して「追加」ボタンをクリックして下さい(社員テーブル上でダブルクリックして頂いても同じことです)。

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

「リレーションシップ」ダイアログ上に「社員テーブル」が追加で表示されました。

「閉じる」ボタンをクリックして「テーブルの表示」ダイアログを閉じて下さい。「リレーションシップ」ダイアログだけが表示されます。

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

リレーションシップを設定するときの条件

2つのテーブルに存在するフィールドにリレーションを設定する場合、次の条件を満たしている必要があります。

・フィールドのデータ型は一致している
・フィールドサイズが一致している(データ型が数値型の場合)

それではリレーショナルシップを設定します。今回は「顧客情報テーブル」の「担当ID」フィールドと「社員テーブル」の「社員ID」フィールドのリレーションを設定します。

「顧客情報テーブル」の「担当ID」をマウスでクリックしてから「社員テーブル」の「社員ID」の箇所までドラッグします。

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

すると次のようなダイアログが表示されます。

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

画面下部の「参照整合性」だけチェックして「OK」ボタンをクリックして下さい。

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

リレーションシップダイアログ上で次のようにリレーションを設定した項目間で結合線が表示されます。

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

この時「社員テーブル」の「社員ID」フィールドには「1」が、「顧客情報テーブル」の「担当ID」には「∞」が表示されています。この時「社員テーブル」を一側テーブルと呼び「顧客情報テーブル」を多側テーブルと呼びます。

一側テーブルはベースとなる情報が含まれるテーブルです。今回の例で言えば社員に関する情報が重複しない形で登録されています。多側テーブルには一側テーブルに含まれているデータが登録されます。こちらには一側テーブルに含まれるデータが重複して登録されることもあります。例えば別々の顧客に対して同じ担当IDが割り当てられることもあります。

このようにベースとなる一側テーブルと、一側テーブルに含まれるデータが重複して登録されている多側テーブルがあるリレーションシップを一対多リレーションシップといいます。リレーションシップは基本的に一対多リレーションシップを使います。これに対して一対一リレーションシップはどちらのテーブルにも同じ値は1つしか存在しない場合です。本来1つのテーブルに格納できる値を分割して別々のテーブルに分けたい場合に利用します。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。