勉強前イメージ
完全にサーバから消すか、戻せる状態で削除するのかの違い・・かと
でも、DBのdelete以外何で削除するんだろう
調査
論理削除 とは
実際にデータを削除せずに、論理的に削除する方法
論理的とは、テーブルに削除フラグのカラムを追加し、true or falseで削除されているかされていないか管理する方法
例が以下になります。
ユーザID(user_id)とユーザ名(user_name)を管理しており、最後に削除フラグ(delete_flag)のカラムが存在します。
存在するユーザには delete_flag=false
が記載されていますが、
削除されたユーザには delete_flag=true
が記載されています。
このように削除フラグで管理することを 論理削除
と呼びます
user_id | user_name | delete_flag |
---|---|---|
1 | kimura | false |
2 | suzuki | true |
3 | sato | true |
4 | matsui | false |
-
メリット
- 誤って削除した場合に簡単に戻せる(システムでのバグも同様)
-
デメリット
- 実際にデータが削除されず、容量の圧迫や性能低下につながる
- 管理するカラムを追加する必要がある
- ゴミが残る
物理削除 とは
実際にデータベースからデータを削除する方法で、DBから delete
コマンドで削除を行う
論理削除とは違い、実際にデータベースからデータが削除されます
- メリット
- ゴミが残らず、管理がしやすい
- 管理するカラムがないので、実装のときにバグが出にくい
- デメリット
- 誤って削除した場合にはデータの復元が容易ではない(バックアップから戻したり等しないといけない)
勉強後イメージ
実際に使ってたけど、論理削除・物理削除って言うのを知らなかった・・・
何でもかんでも論理削除してたらゴミがすごいことになっちゃうかも