リレーションシップとは

 ここでは、複数のテーブルを連携して運用するために欠かせないリレーションシップの概要について、わずかですが触れていきます。

リレーションシップの意義

 リレーションシップとは、一方のテーブルのある列と、もう一方のテーブルのある列の間の参照関係を明確にし、それが維持されるように設定するものです。設定の対象となる列の間には一定の制約を課すことができ、これによりそれぞれのテーブルに存在するデータを矛盾のない確実なものにすることが出来ます。

 リレーションシップは主キーや書式などと違い、テーブルデザインとは別の画面上で設定するものですので、あまり目立たず、見落とされがちです。しかし、データベースソフトが本来意図しているようなデータの運用を図るために欠かせないものといえます。個々のテーブルの主キーを建物の柱とするなら、リレーションシップは梁や桁です。これがないといくら立派な柱を立てても全体としての構造を形作ることができず、せっかく立てた柱も次第に傾いていってしまうというわけです。


クエリの結合線との違い

 本来全く関係ない事柄なのですが、AccessにおけるFAQの一つですのでここで触れておきます。
 クエリデザインでテーブルどうしを線で結ぶ効果と、リレーションシップを設定する効果は全く異なります。確かに似たような画面で似たような線が出てきますが全くの別物です。
 クエリデザインでの線はテーブル(クエリ)の結合(Join)を行うことを表します。結ばれた両方の列に同じ値があればそれをもとに両方のテーブルから値を抽出する、という「データ抽出における条件付け」です。
 一方でリレーションシップの線は、結ばれた両方の列の間に一定の制約がかかっていることを表します。線で結べばどちらの列も削除することができなくなりますし、さらに参照整合性等の設定を行えば個々の値についても矛盾を許さないようにチェックがはたらきます。つまり「テーブル間の不整合を防ぐための制約」です(一応クエリ間でもリレーションシップを設定することはできますが、ほとんど意味はありません)。
 これらの区別をつけておくことが重要です。

リレーションシップの学習に関する注意

 リレーションシップの内容は細かいものではありませんが、学ぶにあたっては正規化の知識、少なくとも正規化後のテーブルがおよそどのような姿であるのかを踏まえていることが重要です。正規化されたテーブルはその独立性と関連性が明確になり、リレーションシップの設定に適した参照関係が自ずと構築されているからです。正規化をきちんと理解していれば、この節の内容の多くはほぼ自明なものです。
 しかし、正規化の知識が全くないまま設定しようとすると、本来の意図どおりでない設定となったり、そもそも不可能な設定をしようとしてエラーに悩むことにもなりかねませんので注意が必要です。