論理削除(ソフトデリート) ろんりさくじょ
論理削除ソフトデリート物理削除deleted_at監査ログデータ復元
論理削除って何?普通に削除するのと何が違うの?
簡単に言うとこんな感じ!
論理削除は「データを実際には消さず、『削除済みフラグ』を立てて見えなくする」方法だよ!ゴミ箱に入れるイメージ。実際にはDBにデータが残っているから、後から「やっぱり戻して」が可能なんだ。履歴管理が必要なシステムでよく使われるよ。
論理削除とは
論理削除(Soft Delete) とは、データベースのレコードを実際には削除(物理削除)せずに、「削除済み」を示すフラグやタイムスタンプを付与して「見えない状態」にする設計パターンです。
対義語は物理削除(Hard Delete / Permanent Delete)で、DELETE文でレコードを完全に消去します。
実装例
-- 論理削除フラグを持つテーブル設計
ALTER TABLE orders ADD COLUMN deleted_at TIMESTAMP DEFAULT NULL;
-- 論理削除の実行(DELETEではなくUPDATE)
UPDATE orders SET deleted_at = NOW() WHERE id = 123;
-- 削除されていないレコードのみを取得
SELECT * FROM orders WHERE deleted_at IS NULL;
論理削除と物理削除の比較
| 比較軸 | 論理削除 | 物理削除 |
|---|---|---|
| データ復元 | ◎ 可能(フラグを戻すだけ) | ✕ 原則不可 |
| 監査ログ | ◎ 削除者・日時が残る | ✕ 記録が消える |
| DB容量 | △ データが増え続ける | ◎ 容量が解放される |
| クエリの複雑さ | △ 常にWHERE deleted_at IS NULLが必要 | ◎ シンプル |
| 外部キー制約 | △ 見えないが参照関係が残る | ◎ 参照も消える |
論理削除が有効なケース
- 注文・取引履歴:会計監査のためにデータを保持
- ユーザーアカウント:退会後も一定期間はデータ保持が必要
- コンテンツ管理:管理者が誤削除した場合に復元できる
- 法規制への対応:一定期間の記録保持が義務付けられている場合