親が消されたときに子をどうするか

Posted by mkamo on 2008年7月21日

親子関係にあるオブジェクトやテーブルで親が消されるときに子をどうするべきか.典型的なものを以下に示す.

  • 子があるときは親を削除できない
    親を削除したければすべての子を先に削除しておく必要がある.利用者の負荷は高いが,意図しない子の削除が行われにくい.
  • すべての子を削除する
    親を削除されたときに自動的に子も巻き込んで削除する.利用者の負荷は低くなるが,意図しない子の削除が行われる危険性が高い.
  • すべての子の親への参照をnullにする
    子が孤児状態で存在できる場合はこういうやり方も取れる.親を経由せずに孤児を直接管理できるインタフェースが必要になる.
  • 親を実際には消さずに,削除されたことを記録するだけにする
    親や子が重要なデータであったり,削除後もなんらかの形で参照できる必要性がある場合は,こうしたやり方にする.親に削除フラグを立てて,親に対する直接的な検索や更新は無効にする.ただし,子からたどって親の情報を参照することは可能にしておく.


コメントを書く




XHTML: 次のタグが使用できます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Please note: 投稿されたコメントが表示されるにはいくらかの時間がかかります.投稿後直ちに表示されませんが投稿ボタンを何度も押さないようお願いします.