論理削除 【logical delete】 ソフトデリート / soft delete
概要
論理削除(logical delete)とは、リレーショナルデータベースのレコードを削除する際、現在有効か否かを示すフィールドの値を変更することで削除したのと同じ扱いにする方式。実際のデータは削除しない。単にデータを削除する「物理削除」(physical delete)と対比される。テーブル作成時に「このレコードは削除済み」を意味する論理型(ブーリアン型)のフィールド(削除フラグ)を用意しておき、レコードを作成するときはデフォルトで「False」(偽)に設定する。レコードを削除したいときは削除フラグの値を「True」(真)に変更することで、以降はシステム上からは存在しないものとして扱う。データベース上の実際のデータは削除しない。
後からレコードを復活させたい場合は削除フラグを再び「False」に書き換えるだけで済み、現在無効なものも含め過去のすべてのデータを参照したいといった場合にもデータは残っているため簡単に対応することができる。
ただし、一度登録したデータは削除されないため用途によっては時間経過に従って記憶容量の逼迫や処理性能の劣化が問題となることがある。また、そのテーブルを扱うクエリやプログラムなどは必ず削除フラグの存在を加味したコードにしなければならず、不具合や欠陥を誘発しやすいとされる。
(2021.10.25更新)