山下寛人オフィシャルブログ

オイシックス株式会社 執行役員 システム本部長 山下寛人の公式ブログです。

削除フラグ

削除フラグってアンチパターンだったのですね。

www.slideshare.net
オイシックスではもろに使っています。大して深く考えず盲目的にやってました。言われてみれば昔ながらのSIerのいけてない設計のようにも思えます。この機会にやめたほうがいいでしょうかね。他にも新規作成者、新規作成日、最終更新者、最終更新日のフィールドも何も考えずに全部のテーブルについていてこれらの値を設定するコードももれなく書いています。これもどうかと思います。いちいち冗長な感じがします。トリガーで更新するほうがもれもなくてよいかも。

反面、削除フラグについてはそんなにデメリットは感じられません。SQL書くときにdelete_flg=0は必ずつけるのですが習慣になるとそんなに苦ではありません。一方削除したときにデータが残っていて助かることもたまにあります。特にマスター系ですね。データがなくなってしまっているとどうしようもなくなる可能性が高いので少々怖い感じもします。正規化をしているとデータのコピーがあんまりないので特にそうなります。正規化しないでじゃんじゃんデータをコピーするような設計にするという手もありますね。