リレーションシップとは

広告

データベースで1つのテーブルに全てのデータを格納して管理する代わりに、例えば商品だけを管理する商品マスターテーブルや、社員だけを管理する社員マスターテーブルなどを作成し、必要な項目毎にテーブルを分離して管理します。

例えば顧客情報を管理するテーブルを例に考えて見ます。

顧客ID顧客名営業担当
1トヨタ自動車鈴木
2日本電気佐藤
3富士通鈴木
4日産自動車高橋
5ソフトバンク佐藤

このテーブルであれば今のところは問題はありません。ただ、このテーブルを使って営業担当の部署まで管理しようとすると次のようなテーブルになってしまいます。

顧客ID顧客名営業担当部署
1トヨタ自動車鈴木第一営業部
2日本電気佐藤第二営業部
3富士通鈴木第一営業部
4日産自動車高橋第一営業部
5ソフトバンク佐藤第二営業部

営業担当の部祖に関する情報は一度定義してあればいいはずですけど、まとめて1つのテーブルで管理しようとすると同じ情報が複数テーブル内に存在することになります。例えば鈴木さんの部署を変更する場合、全てのテーブル内に記述された鈴木さんの部署を変更しなければなりません。

このような場合は営業担当者用のテーブルを別に作成し管理することで効率よくデータを管理できます。

営業担当ID担当者名部署
101鈴木第一営業部
102佐藤第二営業部
201高橋第一営業部

このように別のテーブルで管理しておければ鈴木さんの部署を変更する場合でも1箇所の変更で済みます。

そして顧客情報テーブルには担当者名や部署を格納するのではなく、営業担当者テーブルの営業担当IDを格納するようにします。

顧客ID顧客名営業担当ID
1トヨタ自動車101
2日本電気102
3富士通101
4日産自動車201
5ソフトバンク102

そして顧客情報テーブルの営業担当IDは、営業担当者テーブルの営業担当IDが格納されていることを明確に定義しておきます。このように複数のテーブルに分割された情報がどのように関連しあっているのかを設定するのがリレーションシップの定義です。

リレーショナルシップの定義を利用することで、膨大な情報を複数のテーブルを使って分割して管理し、そして自由に結合して必要な情報を関連付けて取り出すことが可能になります。

それでは次のページからAccessにおいてリレーションシップを設定する方法を確認していきましょう。

( Written by Tatsuo Ikura )