参照整合性を理解する
参照整合性は、外部キーが指す相手を有効な状態に保つためのルールである。挿入・更新・削除の各操作で孤児データが生まれないか確認する。
この単元で学ぶこと
- 孤児データの意味と役割を説明できる
- RESTRICTの意味と役割を説明できる
- CASCADEの意味と役割を説明できる
- 親削除時のRESTRICT・CASCADE・SET NULLを要件で選べる
本文解説
子表の外部キー値は、NULLが許される場合を除き参照先キーに存在する必要がある。親行の削除やキー更新ではRESTRICT、CASCADE、SET NULLなどの動作を設計する。
孤児データ 参照先の親行が存在しないのに子行だけ残る状態。 参照整合性違反の典型。
RESTRICT 参照中の親行の削除・更新を拒否する考え方。 子が残る間の不整合を防ぐ。
CASCADE 親の更新・削除に連動して子側へ処理を伝播する設定。 便利だが影響範囲を理解して使う。
SET NULL 親削除時などに子の外部キーをNULLへ変更する設定。 外部キー列がNULL許可である必要がある。
参照整合性制約 外部キーと参照先キーの対応をDBMSが検証する制約。 アプリの確認漏れだけに依存しない。
親を消した後に子をどうしたいかを考え、残すなら有効な参照先またはNULLが必要。
社員が残るべきなら部署削除をRESTRICTするか別部署へ移す。社員も同時削除する要件ならCASCADEが候補になる。
図解
重要ポイント
- 孤児データ: 参照先の親行が存在しないのに子行だけ残る状態。
- RESTRICT: 参照中の親行の削除・更新を拒否する考え方。
- CASCADE: 親の更新・削除に連動して子側へ処理を伝播する設定。
- SET NULL: 親削除時などに子の外部キーをNULLへ変更する設定。
- 参照整合性は挿入時だけでなく更新・削除時にも守る。
間違えやすい点
- CASCADEを常に安全と考えない。
- SET NULLにはNULL許可が必要なことを忘れない。
- 孤児データを単なる重複と混同しない。
用語解説
- 孤児データ
- 参照先の親行が存在しないのに子行だけ残る状態。
- RESTRICT
- 参照中の親行の削除・更新を拒否する考え方。
- CASCADE
- 親の更新・削除に連動して子側へ処理を伝播する設定。
- SET NULL
- 親削除時などに子の外部キーをNULLへ変更する設定。
- 参照整合性制約
- 外部キーと参照先キーの対応をDBMSが検証する制約。
関連教材
参考資料
教材データに登録された参考リンクです。リンク先の内容や更新日は提供元でご確認ください。
確認問題の出題・採点や学習履歴の保存にはログインが必要です。