主キーが複合キーである場合の参照整合性等の設定

 複合キーを基点とするリレーションシップの設定についてです。
 操作に関して言えば1つ1つの列についてリレーションシップを繰り返し設定していくのではなく、一度に行うというところがポイントです。
 複合キーもリレーションシップもAccessの学習における大きな躓きの石となる部分であり、ちょっとした誤解や設定のミスがエラーや誤ったデータ操作につながります。難しいところですが、この種の設定が思い通りにできるようになればかなり理解が進んだといってよいと思います。

 テーブルの例はこのようなものとし、販売テーブルと販売明細テーブルの間にリレーションシップを設定するものとします。
 販売テーブルにおいては{店舗コード,販売ID}が主キーとなっています。つまりこの企業では、店舗ごとにそれぞれ販売IDを1から採番するというルールを採用しているわけです。
 その明細である販売明細テーブルでは{店舗コード,販売ID,商品コード}が主キーとなっています。このうちの{店舗コード,販売ID}が、販売テーブルの同名の2つの列を参照する外部キーとなっています。
 つまり、販売テーブルと販売明細テーブルは1対多の関係となっていることがわかります。


 設定に移ります。まずは通常のリレーションシップの設定と同じように、販売テーブルのうち適当な列名、この場合は店舗コードを販売明細テーブルの同名の列までドラッグします。


 詳細設定の画面が現れます。


 ここで、列名を表示している部分(コンボボックスになっています)に主キー(外部キー)の2つの列名を表示させるのがポイントです。そして参照整合性等のオプションにチェックを入れて「作成」をクリックします。


 無事に設定できました。


 連鎖削除を試してみましょう。販売テーブルを開き、適当なレコード({店舗コード,販売ID}が{1,3}であるもの)を削除します。


 確認メッセージに対し、「はい」をクリックします。


 関連する販売明細テーブルの行も含めて同時に削除されました。設定が正しく機能していることがわかります。