/note/social

削除フラグを使ってはいけない理由

泥箱的なメモ — 論理削除が奪うものより

私はここまで「事実の削除アリエナイ」という論を展開したに過ぎません。「データって事実なんだからDELETEするのって無いよねー」って話をしてきました。でも、それでも物理削除と論理削除を比べるとなお論理削除の方が罪深いと考えます。それはなぜかと言うと、

「あるエンティティ定義に、論理削除有無を設定する属性が定義されている時点で、開発者は『ああ、この表のデータって削除していいんだ』という暗黙の了解に思考を縛られる」

からです。

論理削除フラグ属性って、割と一律定義されるケースが多いのでなおさらこの刷り込みに汚染されがちなんです。

本来削除されてはいけないモノに対して削除要否の検討機会をひっそりと奪う。そう、論理削除は積極的に削除を推奨するわけではなく、静かに「削除してもいいよ」と囁き続ける。だからこそ気付かない。そしてそこが恐ろしいのです。

実際にそこに存在しているリソースやイベントに分類される何かをE/Rモデルにモデル化する立場にあなたが立っているならば、どうか「データは事実。事実は消えない。」という大原則を、論理削除などというアンチパターンに汚染されることなく正しい姿を取り出してあげて下さい。