MW211 EXIT

devlog
DB設計/削除済フラグと復活の考察
2014年10月22日
削除処理時、直接DELETEで抹消するのではなく、
削除済フラグを立ててで削除レコード扱いとしたとする。

この場合、自然キーとサロゲートキー(主キー)のあるレコードで
同一自然キーで再度追加したら、以下の二つの対応ができる。

(1) 削除レコードの削除済フラグを落として、上書きする(復活)
(2) 別サロゲートキーを採番して別レコードとして追加する(追加)

容量的なことを考えると前者が効率的だし、履歴管理的なことを考えると後者が実用的。

では、そのレコードに子分がいた場合には?

前者は子分も復活できるが削除した経緯を知らない人が追加したつもりで
子分が突然ゾンビのように現れてくるということがおきる。

一方後者は、親分が一度削除されたら子分も削除される。復活はできない。
CASCADEのDELETEと同じようなものだ。

どっちらかというと後者が一般的か。
間違って削除したのを復活するのは
ハードディスクから削除データを復活する的な職人技と考えれば、
前者はSQLで解決できるが、一般的には簡単にできないという点で合致する。
分類:SQL