一対多リレーションシップの設定
前のページで作成した2つのテーブル間でリレーションシップの設定を行ってみます。「ツール」メニューの中の「リレーションシップ」をクリックして下さい。
次のように「テーブルの表示」ダイアログが表示されます。またその下に「リレーションシップ」ダイアログも表示されています。
リレーションシップを設定したいテーブルをここで選択します。まず「顧客情報テーブル」を選択して「追加」ボタンをクリックして下さい。
少し見難いですが「リレーションシップ」ダイアログ上に「顧客情報テーブル」が表示されました。それでは同じように「社員テーブル」を選択して「追加」ボタンをクリックして下さい(社員テーブル上でダブルクリックして頂いても同じことです)。
「リレーションシップ」ダイアログ上に「社員テーブル」が追加で表示されました。
「閉じる」ボタンをクリックして「テーブルの表示」ダイアログを閉じて下さい。「リレーションシップ」ダイアログだけが表示されます。
リレーションシップの設定
2つのテーブルに存在するフィールドにリレーションを設定する場合、次の条件を満たしている必要があります。
フィールドのデータ型は一致している フィールドサイズが一致している(データ型が数値型の場合)
それではリレーショナルシップを設定します。今回は「顧客情報テーブル」の「担当ID」フィールドと「社員テーブル」の「社員ID」フィールドのリレーションを設定します。
「顧客情報テーブル」の「担当ID」をマウスでクリックしてから「社員テーブル」の「社員ID」の箇所までドラッグします。
すると次のようなダイアログが表示されます。
画面下部の「参照整合性」だけチェックして「OK」ボタンをクリックして下さい。
リレーションシップダイアログ上で次のようにリレーションを設定した項目間で結合線が表示されます。
この時「社員テーブル」の「社員ID」フィールドには「1」が、「顧客情報テーブル」の「担当ID」には「∞」が表示されています。この時「社員テーブル」を一側テーブルと呼び「顧客情報テーブル」を多側テーブルと呼びます。
一側テーブルはベースとなる情報が含まれるテーブルです。今回の例で言えば社員に関する情報が重複しない形で登録されています。多側テーブルには一側テーブルに含まれているデータが登録されます。こちらには一側テーブルに含まれるデータが重複して登録されることもあります。例えば別々の顧客に対して同じ担当IDが割り当てられることもあります。
このようにベースとなる一側テーブルと、一側テーブルに含まれるデータが重複して登録されている多側テーブルがあるリレーションシップを一対多リレーションシップといいます。リレーションシップは基本的に一対多リレーションシップを使います。これに対して一対一リレーションシップはどちらのテーブルにも同じ値は1つしか存在しない場合です。本来1つのテーブルに格納できる値を分割して別々のテーブルに分けたい場合に利用します。
( Written by Tatsuo Ikura )