論理削除とは
データベースで、削除フラグを付けることにより、 物理的には削除していないにも関わらず、削除しているように見せかけることです。
使わない方がよい
自分としては論理削除は使わない方が良いという結論です。 その理由としては以下になります。
- 戻したい要件への対応には、バックアップ & 物理削除時にログ追加で対応
- 状態を表すには、フラグでなく、enumなどで対応する。
- そもそも、要件にないなら実装してはいけない
以下の記事が自分の考えと近いです。
戻したい要件への対応
何かの間違いで必要なレコードを消してしまった場合は、 バックアップから復旧するのがいいですが、 ちょっとしたオペミスでテーブル全体を戻すのは気が引ける場合もあるので、 そういうときは、削除したことをログに残すのがいいんじゃないかなぁと思っています。
状態を表す方法
先程の記事もありますが、削除フラグが必要な場合は、 だいたいは「状態」が必要なケースがほとんどです。
例えば会員の状態の場合、 「仮登録」「登録済」「停止中」「解約」などが考えられます。 これを1つ1つフラグで持つとものすごくメンテしづらいです(経験あり)。
要件にないなら実装してはいけない
あとそもそも、マスタデータなどで、 削除が要件にないものは、削除フラグだろうと状態だろうと、付けるのは間違いです。 YAGNIの法則です。