スポンサーリンク

Access 異なるテーブルのフィールドを関連付けるリレーションシップと参照整合性


Access を勉強すればするほど、「基本の理解」が大事なことが分かるようになりました。

自分自身の理解と備忘録のためにも、勉強した内容を残したいと思います。

今日は、Access の大事な機能の1つであるリレーションシップと参照整合性について説明します。

スポンサーリンク

1、経費の科目コードを関連付けたい場合を考えてみる

さて、例えば日々の経費について以下の5つの項目を記録していくシステムを作りたいとします。

No、日付、科目コード、科目名、金額

Excel の表で言えばこのような↓イメージですかね。

Image(430)

上記の表の中の「科目コード」ごとに「科目名」が割り当てられているものとします。

(1つの科目コードにつき、1つの科目名)

さて、これを Access のテーブルとクエリを作って作成するわけですが、今日はその過程で設定するリレーションシップと参照整合性について説明します。

*今日は、実際にクエリを使って上記のような表を作るところまでは説明しません。

まず、「経費内容」テーブルと「科目コード」テーブルの2つのテーブルを作成します。

「経費内容」テーブルのフィールド名は No、日付、科目コード、金額の4つです。

「経費内容」テーブルのデザインビュー↓

Image(431)

「科目コード」テーブルのフィールド名は 科目コード、科目名の2つです。

「科目コード」テーブルのデザインビュー↓

Image(432)

なお、「科目コード」テーブルにはデータシートビューで「科目コード」と「科目名」のデータを入力してあります。

Image(433)

なぜ、このようにテーブルを2つに分けたかと言うと、リレーションシップを設定することで1つの科目コードにつき1つの科目名を対応させるためです。

リレーションシップは日本語で言えば「関連性」のこと。

その意味のとおり、2つの要素を関連付けることを言います。

さて、今回の件で言えば「経費内容」テーブルと「科目コード」テーブルそれぞれの「科目コード」フィールドを関連付けることになるわけですね。

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

リレーションシップの設定について説明します。

「テータベースツール」タブから「リレーションシップ」を選択しましょう。

Image(434)

すると以下のように「科目コード」テーブルと「経費内容」テーブルがそれぞれフィールド名とともに四角形の中に表示されます。

Image(435)

「科目コード」テーブルの「科目コード」フィールドをマウスで選択して、「経費内容」テーブルの「科目コード」フィールドまでドラッグしましょう。

Image(436)

すると次のようなウインドウが出てきます。

参照整合性、フィールドの連鎖更新、レコードの連鎖削除全てにチェックを入れます。

Image(437)

さて、これにより2つのテーブルそれぞれの「科目コード」フィールドが線で結ばれたことが確認できます。

Image(438)

これでリレーションシップの設定が完了しました。

リレーションシップと参照整合性の効果

さて、リレーションシップを設定するとどうなるのか?「経費内容」フィールドに入力して試してみます。

No、日付、科目コード、金額の順番に左から入力して行きます。

Image(439)

「科目コード」テーブルに無い科目コードを入力するとエラーが出ます。

Image(440)

先にも示した以下の「科目コード」テーブルに入力のない科目コードを入力できなくなっているのです。

Image(433)[1]

なお、参照整合性にチェックを入れていない場合は「科目コード」テーブルに入力のない科目コードでも入力できてしまい、複雑なシステムを作る上では適さない状態になってしまいます。

リレーションシップを設定する場合にはほぼ間違いなく参照整合性も設定すると理解しておいて良いと思います。

3、まとめ

リレーションシップと参照整合性についてまとめました。

基本の基本を一つ一つ書き留めて理解して行きたいですね。