概要
| この記事の結論 Accessのリレーションシップは、[データベース ツール]の[リレーションシップ]から親子のキーを結んで設定します。参照整合性を有効にすると、存在しない親を子が参照するなどの不整合を防げます。 |
この記事でわかること
- 親側の一意性と子側の型を確認する
- リレーションシップを設定する
- 連鎖更新と連鎖削除を慎重に選ぶ
- 設定できないときは孤立データを調べる
この記事の主な内容
- リレーションシップは表同士の関係を定義する
- 親側の一意性と子側の型を確認する
- リレーションシップを設定する
- 連鎖更新と連鎖削除を慎重に選ぶ
- 設定できないときは孤立データを調べる
- 動作試験と運用場所を確認する
- よくある質問
想定読了時間:約8分
1 リレーションシップは表同士の関係を定義する
Accessのリレーションシップは、[データベース ツール]の[リレーションシップ]から親子のキーを結んで設定します。参照整合性を有効にすると、存在しない親を子が参照するなどの不整合を防げます。
結合クエリで結果を表示できることと、データの整合性が保護されていることは別です。
関係を設定しただけで、参照整合性が自動的に有効になるとは限りません。

2 親側の一意性と子側の型を確認する
M_顧客の顧客IDを主キーにし、T_受注の顧客IDで参照します。
通常のオートナンバーは、子側の数値型・長整数と組み合わせます。
子側の顧客IDは複数行に同じ値を保存できます。

親のIDが重複している、型が合わない、既存の子に対応する親がない場合は、その原因を解消してから参照整合性を設定します。
設定例と確認点
| 項目 | 親 M_顧客 | 子 T_受注 |
|---|---|---|
| 顧客IDの型 | オートナンバー | 数値・長整数 |
| 重複 | 不可 | 通常は可 |
| 役割 | 顧客を識別 | 顧客を参照 |
3 リレーションシップを設定する
対象の2表を開いている場合は閉じてから設定します。
結合する列をドラッグすると編集ダイアログが開くため、親と子のテーブル名・フィールド名を確認します。

操作手順
1. リレーションシップ画面へM_顧客とT_受注を追加します。
2. M_顧客の顧客IDをT_受注の顧客IDへドラッグします。
3. 対応するフィールドを確認します。
4. 参照整合性を選び、連鎖設定は用途に応じて判断します。
5. 作成して保存し、1対多の表示を確認します。

4 連鎖更新と連鎖削除を慎重に選ぶ
連鎖更新は親キーの変更を関連する子へ反映する設定です。
通常のオートナンバー主キーは手で変更する運用ではないため、一般の業務コードの変更とは切り分けて考えます。
連鎖削除を有効にすると、親の削除に伴って関連する子も削除されます。
顧客を消したら売上履歴も消えてよいか、業務上の保存要件から判断してください。
既定で有効にする設定ではありません。

5 設定できないときは孤立データを調べる
子に顧客ID 999があり、親に999がなければ、その行が不整合の候補です。
親を追加するか、子のIDを正しく直すかは業務内容で決めます。
参照を通すためだけに架空の親を作るのは避けましょう。
Nullを許す外部キーは「親が未指定」という状態を表せます。
必須なら値要求などで制限します。0を未指定の代わりに入れると、親ID 0がなければ不整合になる点に注意してください。

既存Accessへの影響を判断できない場合
本記事の手順をコピーしたファイルで試しても解決しない場合や、既存データ・他の画面への影響を判断できない場合は、お気軽にご相談ください。対象ファイル、操作手順、期待する結果を整理すると、調査や改修の範囲を相談しやすくなります。
6 動作試験と運用場所を確認する
存在する親を参照する登録が成功し、存在しない親を参照する登録が拒否されるか試します。
親の削除についても、制限または連鎖削除が設計どおりかコピーで確認します。
リンクテーブルの場合、Access画面で関係を描くことと接続先DBで制約が有効になることは同じではありません。SQL Serverなどの参照制約は、実データを管理する側で確認してください。

7 よくある質問
参照整合性が有効か確認してください。
結合線だけでは保証されません。
親と同時に子も消してよい場合だけです。
履歴保持が必要なら別の運用を検討します。
Nullが許される設計なら可能です。
必須にする場合は値要求などを設定します。
まとめ
リンクテーブルの場合、Access画面で関係を描くことと接続先DBで制約が有効になることは同じではありません。SQL Serverなどの参照制約は、実データを管理する側で確認してください。
本記事の手順をコピーしたファイルで試しても解決しない場合や、既存データ・他の画面への影響を判断できない場合は、お気軽にご相談ください。対象ファイル、操作手順、期待する結果を整理すると、調査や改修の範囲を相談しやすくなります。
参考情報
Microsoft公式資料を参照しています。サンプルは説明用の架空データです。
Windows版Accessの実機検証は未実施のため、適用前に対象環境のコピーで結果を確認してください。
Microsoft:リレーションシップ
https://support.microsoft.com/en-us/access/guide-to-table-relationships
Microsoft:関連の編集
https://support.microsoft.com/en-us/access/create-edit-or-delete-a-relationship