リンクユニット

Office 2019 Access 2019

リレーションシップの作成と参照整合性の設定

投稿日:2020年7月7日 更新日:

Accessでは、複数のテーブルがあって、そのテーブル間の共通フィールドを関連付けることができます。この関連付けのことを[リレーションシップ]と呼びます。

リレーションシップを作成するには、共通フィールドがあって、データ型が同じであることが必要です。

整合性がとれていれば、フィールド名は同じでなくても構いません。ただ、フィールド名は同じほうが分かりやすいと思います。

また、共通フィールドの[主キー]側のテーブルを[主テーブル]、もう一方の[外部キー]があるテーブルを[関連テーブル]といいます。

複数のテーブルを結合しておくと、関連付けられた(リレーションシップの設定をした)テーブルの内容を参照できるようになります。

また、参照整合性を設定しておくと、データ管理がとても楽になります。

リレーションシップウィンドウと[リレーションシップ]ダイアログボックス

リレーションシップの作成には、手動と自動があります。一定の条件を満たす場合は、クエリのデザインビューで自動で結合されます。ただ、自動で結合されたものは、参照整合性の設定はできません。ここでの解説は、手動での結合方法です。

参考ここでは[ウィンドウを重ねて表示する]の設定にしています。[ウィンドウを重ねて表示する]と[タブ付きドキュメント]の違いについては、以下の記事で解説しています。

[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い

Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。従来からAccessを使用している方に ...

続きを見る

[主キー]の設定


リレーションシップを作成するには、まず、テーブルに[主キー]の設定が必要になります。

各テーブルで[主キー]の設定をしておきます。

[主キー]の設定については、以下の記事で解説しています。

Accessテーブルの[主キー]の設定

Accessのテーブルでは、[主キー](シュキー)を設定することができます。[主キー]とは、各レコードを固有のものとして識別するフィールドの ...

続きを見る

テーブルのデザインビューで[主キー]の設定

リレーションシップの作成

すべてのテーブルを閉じておきます。

リレーションシップウィンドウの表示

[データベースツール]タブの[リレーションシップ]をクリックします。

リレーションシップ

たとえばテーブルどうしでIDフィールドや名前フィールドが一致しなければならないなど、テーブル間のデータの関連付けを定義します。

[データベースツール]タブの[リレーションシップ]

以下のようにリレーションシップウィンドウが表示されます。

データベースで初めてリエーションシップを作成する場合は、[テーブルの表示]ダイアログボックスは自動で表示されると思いますが、表示されていない場合は[テーブルの追加]をクリックします。

リレーションシップツールの[テーブルの追加]ボタン

あるいは、リレーションシップウィンドウで右クリックして、ショートカットメニューから[テーブルの追加]をクリックします。

リレーションシップウィンドウで右クリック

[テーブルの表示]ウィンドウが表示されます。

テーブルの追加

関連付け(リレーションシップの設定)をしたいテーブルを選択して追加します。

リレーションシップウィンドウには、テーブル以外にクエリを表示することもできます。

ここでは、すべてのテーブルを選択して、[追加]ボタンをクリックします。

すべてのテーブルを選択する場合は、[Shift]キーを使って選択すると効率的です。先頭のテーブルを選択後、[Shift]キーを押したまま、最後のテーブルを選択します。

連続したテーブルを選択する場合は[Shift]キー、連続していないテーブルの選択の場合は[Ctrl]キーを使用します。

[テーブルの表示]ダイアログボックス

フィールドリストの配置とサイズ調整

リレーションシップウィンドウに4つのテーブルのフィールドリストが表示されます。

[主キー]の設定をしたフィールドには、鍵マークが表示されています。

[テーブルの表示]ウィンドウは[閉じる]ボタンをクリックして閉じます。

フィールドリストのタイトルをドラッグして、位置を調整します。

また、フィールドリストがすべて表示されていないテーブルがあれば、フィールドリストの下方をポイントして上下矢印に変わったときにドラッグします。

リレーションシップウィンドウでフィールドリストのサイズ調整

参考フィールドリストを削除する場合は、フィールドリストを選択してキーボードから[Delete]キーを押します。

または、フィールドリストを選択して、[デザイン]タブの[リレーションシップ]グループの[テーブルを表示しない]をクリックします。

[デザイン]タブの[リレーションシップ]グループの[テーブルを表示しない]

フィールドリストのタイトルで右クリックしても、[テーブルを表示しない]メニューがあります。

どの操作の場合も確認メッセージは、表示されません。

フィールドリストのタイトルで右クリックして[テーブルを表示しない]をクリック

また、リレーションシップを作成したのに表示されなくなった場合は、[デザイン]タブの[リレーションシップ]グループの[すべてのリレーションシップ]をクリックしてください。

[リレーションシップ]グループの[すべてのリレーションシップ]

[リレーションシップ]ダイアログボックスの表示

まず、テーブル[T_売上伝票]の[伝票№]フィールドとテーブル[T_売上明細]の[伝票№]フィールドを結びます。

テーブル[T_売上伝票]の[伝票№]をテーブル[T_売上明細]の[伝票№]へドラッグします。

[リレーションシップ]ダイアログボックスの表示

[リレーションシップ]ダイアログボックスの[テーブル/クエリ]が[T_売上伝票]、[リレーションテーブル/クエリ]が[T_売上明細]になっていることを確認します。

また、フィールドは同じ[伝票№]になっていることも確認します。

[参照整合性]のチェックボックスをクリックしてオンにします。そして、[作成]ボタンをクリックします。

参考[リレーションシップ]ダイアログボックスの[フィールドの連鎖更新]のチェックボックスをオンにすると、主テーブルの主キーのデータを更新した場合、関連テーブルのデータも更新されるようになります。

同じく[レコードの連鎖削除]のチェックボックスをオンにすると、主テーブルのデータを削除した場合、関連テーブル側のデータも削除されます。

[リレーションシップ]ダイアログボックスで[参照整合性]の作成

テーブル間に結合線が表示されます。

テーブル[T_売上伝票]の[伝票№]に[1]、テーブル[T_売上明細]の[伝票№]に[]のマークが表示されます。

[主キー]のテーブル側に[1]、関連テーブル側に[∞]が表示されます。

また、[主キー](1)が設定されたテーブルのことを[主テーブル]、[外部キー](∞)が表示されたテーブルを[関連テーブル]と呼びます。

参照整合性設定後のテーブル間の結合線

上記と同様に他のテーブルでもリレーションシップを設定します。

参照整合性を設定しておくと、レコードの整合性が保たれるようになり、データ管理がとても楽になります。

リレーションシップウィンドウで参照整合性の設定

リレーションシップウィンドウを閉じます。

リレーションシップウィンドウを閉じる

参考参照整合性は、テーブル間の一方で[主キー]が設定されているほかに、[インデックス]プロパティで[はい(重複なし)]が設定されている場合も設定できます。

[インデックス]プロパティで[はい(重複なし)]を設定

参照整合性の設定ができない場合の原因

参照整合性のチェックボックスをオンにして[作成]ボタンをクリックすると、エラーが表示されることがあります。

慌てないで、エラーの原因を探ってください。

データ型が異なる

[データ型]が異なる場合は、以下のようにメッセージウィンドウが表示されます。

リレーションシップは、同じデータ型で同じ数のフィールドに設定する必要があります。

参照整合性の設定ができない場合のメッセージウィンドウ

テーブルをデザインビューで開いて、[データ型]の選択が間違っていないかを確認してください。[ データ型]を修正することで解決できます。

また、数値型の場合は、フィールドサイズが同じでなければなりません。

テーブルをデザインビューで開いて[データ型]の確認

参考参照整合性を設定する場合、データ型は同じであることが基本ですが、[オートナンバー型]のフィールドと[数値型]のフィールドを結合する場合、それぞれのフィールドサイズを[長整数型]にすると、参照整合性を設定できます。

以下の例では、フィールド名が異なりますが、整合性がとれていれば問題ありません。

2つのテーブルのデザインビュー

多側のテーブルの結合フィールドに一側のテーブルにないデータがある

既存のデータが参照整合性の規則に違反していることがあります。

メッセージウィンドウには、詳しく書かれていますのでよく読まれることをお勧めします。

このリレーションシップを作成して、参照整合性を設定できません。

'T_売上明細'テーブルのデータが参照整合性の規則に違反しています。
たとえば、ある社員に関連するレコードがリレーションテーブルにあるときに、この社員に関連するレコードが主テーブルにありません。

リレーションテーブルのすべてのレコードのデータについて、関連するレコードが主テーブルにあるようにしてください。
参照整合性の規則に従わないでリレーションシップを作成するときは、[参照整合性]のチェックボックスをオフにしてください。

[このリレーションシップを作成して、参照整合性を設定できません。]のメッセージウィンドウ

テーブル[T_売上明細]のフィールド[伝票№]と[T_売上伝票]のレコードを比較すると、参照整合性に違反しているデータを見つけることができます。

データを修正するか、そのレコードを削除すると、参照整合性を設定できるようになります。

参照整合性の規則に違反したデータを見つける

テーブルを開いている

テーブルを開いたまま、参照整合性を設定しようとすると、以下のメッセージウィンドウが表示されます。

テーブル'T_売上明細'は現在ほかのユーザーまたはプロセスで使用されているので、ロックできませんでした。

[ロックできませんでした。]のエラーメッセージウィンドウ

この場合は、開いているテーブルを閉じることで解決できます。

リレーションシップの編集

リレーションシップを編集する方法です。

結合線をダブルクリックします。

リレーションシップウィンドウで結合線をダブルクリック

または、結合線をクリックして、[デザイン]タブの[ツール]グループにある[リレーションシップの編集]ボタンをクリックします。

[デザイン]タブの[リレーションシップの編集]ボタン

結合線で右クリックして、[リレーションシップの編集]をクリックしてもOKです。

結合線で右クリックして[リレーションシップの編集]をクリック

[リレーションシップ]ダイアログボックスが表示されます。

リレーションシップの編集

リレーションシップの削除

リレーションシップを削除する場合は、リレーションシップウィンドウを表示して結合線で右クリックします。

ショートカットメユーから[削除]をクリックします。

[選択したリレーションシップをデータベースから削除しますか?]の確認メッセージウィンドウが表示されますので、[はい]をクリックします。

[選択したリレーションシップをデータベースから削除しますか?]のメッセージウィンドウ

主テーブルのデータシートにサブデータシート

リレーションシップを設定した主テーブル(主キーを設定したテーブル)をデータシートビューで表示すると、関連テーブルが[サブデータシート]として表示されます。

以下は、テーブル[T_売上伝票]をデータシートビューで開いています。

テーブルの左側に[+]が表示されています。[+]は展開インジゲーターと呼ばれるものです。

主テーブルのデータシートビュー

この[+]をクリックして展開すると、関連テーブルとして設定したテーブル[T_売上明細]のデータを参照することができます。

閉じる場合は、[-]をクリックします。

サブデータシートの表示

サブフォームを含むフォームの作成

テーブルが上記のようにサブデータシートを表示できるようになっている場合は、そのテーブルを元にフォームを作成すると、サブデータシートは、サブフォームとして表示されるようになります。

サブフォームを含むフォームを簡単に作成できます。

テーブル[T_売上伝票]を選択して、[作成]タブの[フォーム]グループにある[フォーム]をクリックします。

フォームの作成

これだけで、以下のように[伝票№]で関連付けされたフォームを作成できます。

この場合、サブフォームはデータシートになります。

サブフォームを含むフォームの作成

参考サブフォームを含むフォームの作成については、以下の記事で解説しています。

サブフォームを含むフォームを簡単作成

Accessで1つのフォーム上に2つのテーブルの情報を表示して、同時に閲覧できると便利な場合があります。 たとえば、[得意先]テーブルと[受 ...

続きを見る

フォームウィザードを使って作成する方法もあります。

フォームウィザードを使ってサブフォームを含むフォームを作成

フォームウィザードで2つのテーブルやクエリを指定して、関連付けされたメインフォームとサブフォームを作成できます。 フォーム作成のもとになるテ ...

続きを見る

リレーションシップの印刷

リレーションシップは、レポートとして印刷することもできます。

[データベースツール]タブの[リレーションシップ]をクリックして、[リレーションシップ]ウィンドウを表示します。

そして、[デザイン]タブの[ツール]グループにある[リレーションシップレポート]をクリックします。

[デザイン]タブの[リレーションシップレポート]

レポートの[印刷プレビュー]が表示されます。

[印刷プレビュー]タブの[印刷]ボタンをクリックします。

[印刷プレビュー]タブの[印刷]ボタン

[印刷]ダイアログボックスが表示されます。[OK]ボタンをクリックして印刷を開始します。

参考[印刷]ダイアログボックスの[プリンター名]で[Microsoft Print to PDF]を選択すると、PDFファイルとして出力して保存することもできます。

メモ帳・写真・WebページなどをPDFとして保存するには[印刷]から

WordやExcelなどのMicrosoft Officeで作成したものであれば、[名前を付けて保存]からPDFファイルとして保存することが ...

続きを見る

[印刷]ダイアログボックス

印刷が終わったら、[印刷プレビューを閉じる]ボタンをクリックして、閉じます。

[印刷プレビューを閉じる]ボタン

レポートのデザインビューが表示されます。レポートの右上の閉じるボタン[×]で閉じます。

レポートのデザインビュー

必要であれば、レポートに名前を付けてを保存しておきます。

[名前を付けて保存]ウィンドウ

参考リレーションシップの印刷については、以下の記事でも解説しています。

リレーションシップの印刷とレポートの作成

Accessで作成したテーブル間のリレーションシップは印刷しておくと、役立つことが多いです。 データベースの構成が複雑になればなるほど必要で ...

続きを見る

Excelでもテーブル間でリレーションシップを設定できるようになっています。

テーブル間でリレーションシップを設定してピボットテーブルを作成

Excel2013以降では、テーブル間でリレーションシップを設定して1つのレポートを作成できるようになっています。 以下の記事では、[Pow ...

続きを見る

Profile

執筆者/はま

もっと理解したいあなたへ

おすすめ記事と広告

-Office 2019 Access 2019

Copyright © 2001-2020 初心者のためのOffice講座 All Rights Reserved.

Copyright© 初心者のためのOffice講座 , 2020 AllRights Reserved Powered by AFFINGER4.