データベース設計・開発

論理削除(ソフトデリート) ろんりさくじょ

論理削除ソフトデリート物理削除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が必要◎ シンプル
外部キー制約△ 見えないが参照関係が残る◎ 参照も消える

論理削除が有効なケース

  • 注文・取引履歴:会計監査のためにデータを保持
  • ユーザーアカウント:退会後も一定期間はデータ保持が必要
  • コンテンツ管理:管理者が誤削除した場合に復元できる
  • 法規制への対応:一定期間の記録保持が義務付けられている場合

歴史と背景

  • 会計・金融システムの影響:「データは消してはならない」という慣習がIT設計に反映
  • 個人情報保護法GDPR等):「忘れられる権利」で論理削除後の物理削除タイミングも設計が必要に

関連用語