0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

はじめに

論理削除を勉強したので備忘録も兼ねて本記事を作成しました。
DBからのデータの削除方法として、論理削除と物理削除があります。
本記事では論理削除がどういったものかMySQL環境でクエリを使用し実際に試しながら確認していきます。

論理削除とは?

論理削除とはDBからデータを完全に削除する代わりに、そのデータを 削除済み とマークする削除方法の事。
データは削除しないのでDB上にデータは存在しますが、任意の削除フラグを用いて対象のデータは削除されているもの判断します。

物理削除とは?:DBから完全にデータを削除するデータの復元が不可能な削除方法

メリデメ

  • メリット:
    データの復元が容易なところ。DB上からデータを消していないので、データを復元し過去のデータを参照できる。

  • デメリット:
    物理削除しないためデータはDB上に残り続け、その分DBの容量を取ってしまうところ。また、データを取得する際に削除フラグをクエリに加える必要がでてくるため、クエリの複雑化が考えられます。

論理削除をやってみる

実際にMySQL環境でクエリを使ってデータの論理削除をやってみます。
DBのテーブルに削除フラグ( is_deleted )のカラムを設けたテーブルを作成してみます。
is_deleted1 または true の場合に削除済みとみなします。

-- 例: テーブル定義
CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100),
    is_deleted BOOLEAN DEFAULT FALSE
);

INSERTでデータをいくつかテーブルに追加します。

INSERT INTO users (name, email) VALUES ('tarou', 'tarou@example~~');
INSERT INTO users (name, email) VALUES ('Bob', 'Bob@example~~');
INSERT INTO users (name, email) VALUES ('hogesan', 'hogesan@example~~');

テーブルの状態

id name email is_deleted
1 tarou tarou@example~~ FALSE
2 Bob Bob@example~~ FALSE
3 hogesan hogesan@example~~ FALSE

tarouのデータだけis_deleted フラグを TRUE に設定し削除フラグを更新します。

UPDATE users SET is_deleted = TRUE WHERE name = 'tarou';

テーブルの状態

id name email is_deleted
1 tarou tarou@example~~ TRUE
2 Bob Bob@example~~ FALSE
3 hogesan hogesan@example~~ FALSE

論理削除されたデータを確認します。
論理削除したデータを復元する際には、UPDATEで再度更新します。

SELECT * FROM users WHERE is_deleted = TRUE;
id name email is_deleted
1 tarou tarou@example~~ TRUE

論理削除されていないデータを表示します。

SELECT * FROM users WHERE is_deleted = FALSE;
id name email is_deleted
2 Bob Bob@example~~ FALSE
3 hogesan hogesan@example~~ FALSE

今回は削除フラグとしてTRUE、FALSEを使用しましたが、他にも削除フラグとしてデータを論理削除した日付を削除フラグとして記録するやり方もあるようです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?