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