- アクセスHome
- 基礎から学ぶHome
- テーブルの分離とリレーションシップ
テーブルの分離とリレーションシップ
ここで学ぶこと
①繰り返しが出てくる項目はテーブルの分離で解決する
②リレーションシップでテーブル間の関係付け
1.履歴が増えてゆく場合の問題
前のコーナーで作成したテーブル[T_名簿]に連絡記録を追加するとしましょう。ここで同じテーブルに追加するとどうなるか考えて見ましょう。
連絡記録には「いつ」と「連絡内容」の二つの情報が必要です。従って最後のフィールドに続いて[連絡日]と[連絡内容]の二つのフィールド を加えれば出来ます。しかし、連絡記録などは逐次増えて行くものです。次の記録のために、さらに二つのフィールドが必要になって しまいます。こうなるとどれだけのフィールドを作っておくべきかが大問題です。
2.テーブルの分離とリレーションシップで解決
この問題を解決する方法がテーブルの分離とリレーションシップです。
(1)テーブルの分離
どこまで増えるか分らない連絡記録のフィールドが問題です(ア)。これを解決する方法として、レコードとして増やしてゆく方法が 考えられます(イ)。但し、枠で囲んだ「名簿テーブル」もレコードが増えてゆくことになります。同じ名簿レコードが複数出きる ことはデータベースとして許容できないことです。
ここでの解決法がテーブルの分離です。連絡記録を別テーブルにしてしまいます(ウ)。そして枠内を情報は参照できるようにします。 この仕組みはリレーションシップで行います。[連絡番号]はレコードのユニーク性を保つために加えたフィールドです。
(2)リレーションシップ作成
二つのテーブルを関係付けするリレーションシップを作ります。 まずテーブル[T_連絡記録]に誰の情報であるかを分かるようにするフィールドを付加することです。そして[T_名簿]テーブルと関係付けを行います。
次がその関係図です。テーブル[T_連絡記録]にフィールド[名簿番号]を追加して、テーブル[T_名簿]の[番号]フィールドにリレーションシップを作成したものです。
3.連絡記録のテーブルを作る
(1)連絡記録のテーブルデザイン
[名簿番号]フィールドは[T_名簿]テーブルの[番号]フィールドにリレーションシップを行うので、データ型を
[オートナンバー(数値)]に合わせた数値型に設定する必要があります。また[連絡番号]フィールドは主キーを設定します。
(2)テーブルの保存
「閉じる」ボタンをクリックすると保存を確認する次のダイアログボックスが表示されるのでテーブル名を「T_連絡記録」としましょう。
4.リレーションシップの作成手順
- リレーションシップアイコンをクリックするとリレーションシップウインドウが表示され、同時にリレーションシップメニューも表示される。
- メニューのリレーションシップをクリック①し表示されるサブメニューの「テーブルの表示」をクリックすると「テーブルの表示」
ウインドウが出る②。
[T_名簿]と[T_連絡記録]のテーブルをそれぞれ③④と操作する。リレーションシップウインドウに二つのテーブルが追加される⑤。「テーブルの表示」ウインドウは閉じる。
- 追加されたテーブル[T_連絡記録]の[名簿番号]フィールドからテーブル[T_名簿]の[番号]フィールドにドラッグする①。
リレーションシップウインドウが表示される②。「結合の種類」ボタンをクリック③。
- 結合プロパティの「2」を選択し、「OK」ボタンをクリック。
- 「参照整合性」「フィールドの連鎖更新」「レコードの連鎖削除」にチェックを入れ「作成」ボタンをクリック。
- 一対多のリレーションシップが出来たので保存します。保存は「×」ボタンをクリックし、保存するか問い合わせてくるので保存を選びます。これでリレーションシップが保存されました。
- リレーションシップが出来ているとテーブル[T_連絡記録]の[名簿番号]フィールドにはテーブル[T_名簿]の[番号]に登録されている値以外は入力できません。このことによって二つのテーブルの間に関係が保たれます。
リレーションされたテーブルの使い方は「フォーム編」の「サブフォームを持つフォーム」をご覧ください。