Accessでは、複数のテーブルがあって、そのテーブル間の共通フィールドを関連付けることができます。この関連付けのことを[リレーションシップ]と呼びます。
リレーションシップを作成するには、共通フィールドがあって、データ型が同じであることが必要です。
整合性がとれていれば、フィールド名は同じでなくても構いません。ただ、フィールド名は同じほうが分かりやすいと思います。
また、共通フィールドの[主キー]側のテーブルを[主テーブル]、もう一方の[外部キー]があるテーブルを[関連テーブル]といいます。
複数のテーブルを結合しておくと、関連付けられた(リレーションシップの設定をした)テーブルの内容を参照できるようになります。
また、参照整合性を設定しておくと、データ管理がとても楽になります。
リレーションシップの作成には、手動と自動があります。一定の条件を満たす場合は、クエリのデザインビューで自動で結合されます。ただ、自動で結合されたものは、参照整合性の設定はできません。ここでの解説は、手動での結合方法です。
参考ここでは[ウィンドウを重ねて表示する]の設定にしています。[ウィンドウを重ねて表示する]と[タブ付きドキュメント]の違いについては、以下の記事で解説しています。
-
[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い
Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。 昔からAccessを使用している方に ...
この記事の目次
[主キー]の設定
リレーションシップを作成するには、まず、テーブルに[主キー]の設定が必要になります。
各テーブルで[主キー]の設定をしておきます。
[主キー]の設定については、以下の記事で解説しています。
-
Accessテーブルの[主キー]の設定
Accessのテーブルでは、[主キー](シュキー)を設定することができます。[主キー]とは、各レコードを固有のものとして識別するフィールドの ...
リレーションシップの作成
すべてのテーブルを閉じておきます。
リレーションシップウィンドウの表示
[データベースツール]タブの[リレーションシップ]をクリックします。
リレーションシップ
たとえばテーブルどうしでIDフィールドや名前フィールドが一致しなければならないなど、テーブル間のデータの関連付けを定義します。
以下のようにリレーションシップウィンドウが表示されます。
データベースで初めてリエーションシップを作成する場合は、[テーブルの表示]ダイアログボックスは自動で表示されると思いますが、表示されていない場合は[テーブルの追加]をクリックします。
あるいは、リレーションシップウィンドウで右クリックして、ショートカットメニューから[テーブルの追加]をクリックします。
[テーブルの表示]ウィンドウが表示されます。
参考バージョンによって異なると思いますが、[リレーションシップ]をクリックすると、Microsoft 365のAccessとAccess 2021では[テーブルの追加]作業ウィンドウとして表示されます。
クエリデザインの「テーブルの追加」は作業ウィンドウに表示される
テーブルの追加
関連付け(リレーションシップの設定)をしたいテーブルを選択して追加します。
リレーションシップウィンドウには、テーブル以外にクエリも表示できます。
ここでは、すべてのテーブルを選択して、[追加]ボタンをクリックします。
すべてのテーブルを選択する場合は、[Shift]キーを使って選択すると効率的です。先頭のテーブルを選択後、[Shift]キーを押したまま、最後のテーブルを選択します。
連続したテーブルを選択する場合は[Shift]キー、連続していないテーブルの選択の場合は[Ctrl]キーを使用します。
フィールドリストの配置とサイズ調整
リレーションシップウィンドウに4つのテーブルのフィールドリストが表示されます。
[主キー]の設定をしたフィールドには、鍵マークが表示されています。
[テーブルの表示]ウィンドウは[閉じる]ボタンをクリックして閉じます。
フィールドリストのタイトルをドラッグして、位置を調整します。
また、フィールドリストがすべて表示されていないテーブルがあれば、フィールドリストの下方をポイントして上下矢印に変わったときにドラッグします。
参考フィールドリストを削除する場合は、フィールドリストを選択してキーボードから[Delete]キーを押します。
または、フィールドリストを選択して、[デザイン]タブの[リレーションシップ]グループの[テーブルを表示しない]をクリックします。
フィールドリストのタイトルで右クリックしても、[テーブルを表示しない]メニューがあります。
どの操作の場合も確認メッセージは、表示されません。
また、リレーションシップを作成したのに表示されなくなった場合は、[デザイン]タブの[リレーションシップ]グループの[すべてのリレーションシップ]をクリックしてください。
[リレーションシップ]ダイアログボックスの表示
まず、テーブル[T_売上伝票]の[伝票№]フィールドとテーブル[T_売上明細]の[伝票№]フィールドを結びます。
テーブル[T_売上伝票]の[伝票№]をテーブル[T_売上明細]の[伝票№]へドラッグします。
[リレーションシップ]ダイアログボックスの[テーブル/クエリ]が[T_売上伝票]、[リレーションテーブル/クエリ]が[T_売上明細]になっていることを確認します。
また、フィールドは同じ[伝票№]になっていることも確認します。
[参照整合性]のチェックボックスをクリックしてオンにします。そして、[作成]ボタンをクリックします。
参考[リレーションシップ]ダイアログボックスの[フィールドの連鎖更新]のチェックボックスをオンにすると、主テーブルの主キーのデータを更新した場合、関連テーブルのデータも更新されるようになります。
同じく[レコードの連鎖削除]のチェックボックスをオンにすると、主テーブルのデータを削除した場合、関連テーブル側のデータも削除されます。
-
リレーションシップの[フィールドの連鎖更新]と[レコードの連鎖削除]
Accessでは、参照整合性を設定することで、データの入力や更新、削除が制限されてデータの整合性を保つことができます。 リレーションシップの ...
テーブル間に結合線が表示されます。
テーブル[T_売上伝票]の[伝票№]に[1]、テーブル[T_売上明細]の[伝票№]に[∞]のマークが表示されます。
[主キー]のテーブル側に[1]、関連テーブル側に[∞]が表示されます。
また、[主キー](1)が設定されたテーブルのことを[主テーブル]、[外部キー](∞)が表示されたテーブルを[関連テーブル]と呼びます。
上記と同様に他のテーブルでもリレーションシップを設定します。
参照整合性を設定しておくと、レコードの整合性が保たれるようになり、データ管理がとても楽になります。
リレーションシップウィンドウを閉じます。
参考参照整合性は、テーブル間の一方で[主キー]が設定されているほかに、[インデックス]プロパティで[はい(重複なし)]が設定されている場合も設定できます。
リレーションシップは、[データ型]で[ルックアップウィザード]を選択して、別のテーブルの値をリストに表示するようにして作成した場合も作成されます。
-
ルックアップウィザードでコンボボックスの設定(別のテーブルから値取得)
Accessのテーブルで、フィールドに入力する値をコンボボックスから選択する方法です。 コンボボックスとは、フィールドの値を入力する代わりに ...
参照整合性の設定ができない場合の原因
参照整合性のチェックボックスをオンにして[作成]ボタンをクリックすると、エラーが表示されることがあります。
慌てないで、エラーの原因を探ってください。
データ型が異なる
[データ型]が異なる場合は、以下のようにメッセージウィンドウが表示されます。
リレーションシップは、同じデータ型で同じ数のフィールドに設定する必要があります。
テーブルをデザインビューで開いて、[データ型]の選択が間違っていないかを確認してください。[ データ型]を修正すると解決できます。
また、数値型の場合は、フィールドサイズが同じでなければなりません。
フィールドのデータ型の種類については、以下の記事で解説しています。
-
テーブル(フィールド)のデータ型の種類とフィールドプロパティ
文字とか数値といったデータの種類のことをデータ型と呼びます。 Accessでは、フィールドごとにデータ型が決まっていて、同じデータ型のデータ ...
参考参照整合性を設定する場合、データ型は同じであることが基本ですが、[オートナンバー型]のフィールドと[数値型]のフィールドを結合する場合、それぞれのフィールドサイズを[長整数型]にすると、参照整合性を設定できます。
以下の例では、フィールド名が異なりますが、整合性がとれていれば問題ありません。
多側のテーブルの結合フィールドに一側のテーブルにないデータがある
既存のデータが参照整合性の規則に違反していることがあります。
メッセージウィンドウには、詳しく書かれていますのでよく読まれることをお勧めします。
このリレーションシップを作成して、参照整合性を設定できません。
'T_売上明細'テーブルのデータが参照整合性の規則に違反しています。
たとえば、ある社員に関連するレコードがリレーションテーブルにあるときに、この社員に関連するレコードが主テーブルにありません。
リレーションテーブルのすべてのレコードのデータについて、関連するレコードが主テーブルにあるようにしてください。
参照整合性の規則に従わないでリレーションシップを作成するときは、[参照整合性]のチェックボックスをオフにしてください。
テーブル[T_売上明細]のフィールド[伝票№]と[T_売上伝票]のレコードを比較すると、参照整合性に違反しているデータを見つけることができます。
データを修正するか、そのレコードを削除すると、参照整合性を設定できるようになります。
テーブルを開いている
テーブルを開いたまま、参照整合性を設定しようとすると、以下のメッセージウィンドウが表示されます。
テーブル'T_売上明細'は現在ほかのユーザーまたはプロセスで使用されているので、ロックできませんでした。
この場合は、開いているテーブルを閉じることで解決できます。
参考1つのテーブルの複数フィールドを他テーブルの同じフィールドと参照整合性を設定する場合は、テーブルを追加して設定します。
-
複数フィールドを他テーブルの同じフィールドへ結合するクエリの作成
Accessで2つのテーブルがあって、1つのテーブルの複数のフィールドが、別テーブルの同じフィールドへ結合する場合のクエリの作成方法です。 ...
リレーションシップの編集
リレーションシップを編集する方法です。
結合線をダブルクリックします。
または、結合線をクリックして、[デザイン]タブの[ツール]グループにある[リレーションシップの編集]ボタンをクリックします。
結合線で右クリックして、[リレーションシップの編集]をクリックしてもOKです。
[リレーションシップ]ダイアログボックスが表示されます。
リレーションシップの削除
リレーションシップを削除する場合は、リレーションシップウィンドウを表示して結合線で右クリックします。
ショートカットメユーから[削除]をクリックします。
[選択したリレーションシップをデータベースから削除しますか?]の確認メッセージウィンドウが表示されますので、[はい]をクリックします。
主テーブルのデータシートにサブデータシート
リレーションシップを設定した主テーブル(主キーを設定したテーブル)をデータシートビューで表示すると、関連テーブルが[サブデータシート]として表示されます。
以下は、テーブル[T_売上伝票]をデータシートビューで開いています。
テーブルの左側に[+]が表示されています。[+]は展開インジゲーターと呼ばれるものです。
この[+]をクリックして展開すると、関連テーブルとして設定したテーブル[T_売上明細]のデータを参照できます。
閉じる場合は、[-]をクリックします。
参考サブデータシートについては、以下の記事で解説しています。
-
サブデータシートはテーブルプロパティで手動設定できる
Accessのテーブル間でリレーションシップの設定すると、2つのテーブルに関連性が生じます。 テーブルをデータシートビューで開くと、各レコー ...
サブフォームを含むフォームの作成
テーブルが上記のようにサブデータシートを表示できるようになっている場合は、そのテーブルを基にフォームを作成すると、サブデータシートは、サブフォームとして表示されるようになります。
サブフォームを含むフォームを簡単に作成できます。
テーブル[T_売上伝票]を選択して、[作成]タブの[フォーム]グループにある[フォーム]をクリックします。
これだけで、以下のように[伝票№]で関連付けされたフォームを作成できます。
この場合、サブフォームはデータシートになります。
参考サブフォームを含むフォームの作成については、以下の記事で解説しています。
-
サブフォームを含むフォームを簡単作成
Accessで1つのフォーム上に2つのテーブルの情報を表示して、同時に閲覧できると便利な場合があります。 たとえば、[得意先]テーブルと[受 ...
フォームウィザードを使って作成する方法もあります。
-
フォームウィザードを使ってサブフォームを含むフォームを作成
フォームウィザードで2つのテーブルやクエリを指定して、関連付けされたメインフォームとサブフォームを作成できます。 フォーム作成のもとになるテ ...
リレーションシップの印刷
リレーションシップは、レポートとして印刷することもできます。
[データベースツール]タブの[リレーションシップ]をクリックして、[リレーションシップ]ウィンドウを表示します。
そして、[デザイン]タブの[ツール]グループにある[リレーションシップレポート]をクリックします。
レポートの[印刷プレビュー]が表示されます。
[印刷プレビュー]タブの[印刷]ボタンをクリックします。
[印刷]ダイアログボックスが表示されます。[OK]ボタンをクリックして印刷を開始します。
[印刷]ダイアログボックスの[プリンター名]で[Microsoft Print to PDF]を選択すると、PDFファイルとして出力して保存することもできます。
印刷が終わったら、[印刷プレビューを閉じる]ボタンをクリックして、閉じます。
レポートのデザインビューが表示されます。レポートの右上の閉じるボタン[×]で閉じます。
必要であれば、レポートに名前を付けてを保存しておきます。
参考リレーションシップの印刷については、以下の記事でも解説しています。
-
リレーションシップの表示とレポートの作成
Accessで作成したテーブル間のリレーションシップは印刷しておくと、役立つことが多いです。 データベースの構成が複雑になればなるほど必要で ...
外部データベースをインポートする場合、既定ではリレーションシップもインポートされます。
-
テーブルやクエリなどのオブジェクトをインポート(外部データの取り込み)
Accessで作成したデータベースが複数あり、1つのデータベースに他のデータベースのテーブルやクエリなどのオブジェクトをインポートする方法で ...
コンボボックスのリストにテーブルを指定する場合も、リレーションシップの設定をしているとリスト以外の値は保存できません。
-
コンボボックスにリスト以外の値が入力されないようにするには
テーブルやフォームでコンボボックスのリストから値を選択して入力するようにしていても、プロパティの[入力チェック]を[いいえ]に設定していると ...
Excelでもテーブル間でリレーションシップを設定できるようになっています。
-
テーブル間でリレーションシップを設定してピボットテーブルを作成
Excel2013以降では、テーブル間でリレーションシップを設定して1つのレポートを作成できるようになっています。 以下の記事では、[Pow ...