参照整合性を理解する

参照整合性は、外部キーが指す相手を有効な状態に保つためのルールである。挿入・更新・削除の各操作で孤児データが生まれないか確認する。

この単元で学ぶこと

  • 孤児データの意味と役割を説明できる
  • RESTRICTの意味と役割を説明できる
  • CASCADEの意味と役割を説明できる
  • 親削除時のRESTRICT・CASCADE・SET NULLを要件で選べる

本文解説

子表の外部キー値は、NULLが許される場合を除き参照先キーに存在する必要がある。親行の削除やキー更新ではRESTRICT、CASCADE、SET NULLなどの動作を設計する。

孤児データ 参照先の親行が存在しないのに子行だけ残る状態。 参照整合性違反の典型。

RESTRICT 参照中の親行の削除・更新を拒否する考え方。 子が残る間の不整合を防ぐ。

CASCADE 親の更新・削除に連動して子側へ処理を伝播する設定。 便利だが影響範囲を理解して使う。

SET NULL 親削除時などに子の外部キーをNULLへ変更する設定。 外部キー列がNULL許可である必要がある。

参照整合性制約 外部キーと参照先キーの対応をDBMSが検証する制約。 アプリの確認漏れだけに依存しない。

親を消した後に子をどうしたいかを考え、残すなら有効な参照先またはNULLが必要。

社員が残るべきなら部署削除をRESTRICTするか別部署へ移す。社員も同時削除する要件ならCASCADEが候補になる。

図解

親削除時の参照整合性
親削除に対して拒否・連鎖削除・NULL化などの選択肢を要件で決める。

重要ポイント

  • 孤児データ: 参照先の親行が存在しないのに子行だけ残る状態。
  • RESTRICT: 参照中の親行の削除・更新を拒否する考え方。
  • CASCADE: 親の更新・削除に連動して子側へ処理を伝播する設定。
  • SET NULL: 親削除時などに子の外部キーをNULLへ変更する設定。
  • 参照整合性は挿入時だけでなく更新・削除時にも守る。

間違えやすい点

  • CASCADEを常に安全と考えない。
  • SET NULLにはNULL許可が必要なことを忘れない。
  • 孤児データを単なる重複と混同しない。

用語解説

孤児データ
参照先の親行が存在しないのに子行だけ残る状態。
RESTRICT
参照中の親行の削除・更新を拒否する考え方。
CASCADE
親の更新・削除に連動して子側へ処理を伝播する設定。
SET NULL
親削除時などに子の外部キーをNULLへ変更する設定。
参照整合性制約
外部キーと参照先キーの対応をDBMSが検証する制約。

関連教材

参考資料

教材データに登録された参考リンクです。リンク先の内容や更新日は提供元でご確認ください。

確認問題の出題・採点や学習履歴の保存にはログインが必要です。