Изучение методов восстановления мягко удаленных записей в системах баз данных

В системах баз данных мягкое удаление означает пометку записей как удаленных вместо физического удаления их из базы данных. Этот подход часто предпочтительнее, поскольку он упрощает восстановление данных и аудит. В этой статье мы рассмотрим различные методы получения обратимо удаленных записей из базы данных, сопровождаемые примерами кода. Давайте погрузимся!

  1. Метод: использование флага обратимого удаления
    Наиболее распространенный подход к реализации обратимого удаления — добавление в таблицу столбца флага, например «is_deleted». Вот пример использования SQL:
-- Create a table with a soft delete flag
CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    is_deleted BOOLEAN DEFAULT false
);
-- Soft delete a record
UPDATE users SET is_deleted = true WHERE id = 1;
-- Retrieve all records, including soft deleted ones
SELECT * FROM users;
-- Retrieve only non-deleted records
SELECT * FROM users WHERE is_deleted = false;
  1. Метод: мягкое удаление на основе временной метки.
    Другой подход заключается в использовании столбца временной метки для отслеживания времени удаления. Вот пример использования SQL:
-- Create a table with a deletion timestamp
CREATE TABLE orders (
    id INT PRIMARY KEY,
    order_details VARCHAR(200),
    deleted_at TIMESTAMP
);
-- Soft delete a record
UPDATE orders SET deleted_at = NOW() WHERE id = 1;
-- Retrieve all records, including soft deleted ones
SELECT * FROM orders;
-- Retrieve only non-deleted records
SELECT * FROM orders WHERE deleted_at IS NULL;
  1. Метод: Архивная таблица
    В некоторых случаях полезно переместить обратимо удаленные записи в архивную таблицу. Такой подход упрощает основную таблицу и позволяет быстрее выполнять запросы к активным записям. Вот пример использования SQL:
-- Create a table to archive soft deleted records
CREATE TABLE users_archive (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    deleted_at TIMESTAMP
);
-- Soft delete a record by moving it to the archive table
INSERT INTO users_archive SELECT * FROM users WHERE id = 1;
DELETE FROM users WHERE id = 1;
-- Retrieve all records, including soft deleted ones from the archive table
SELECT * FROM users_archive;
-- Retrieve only non-deleted records from the main table
SELECT * FROM users;

Мягкое удаление – это полезный метод управления базами данных, обеспечивающий гибкость в сценариях восстановления данных и обеспечения соответствия требованиям. В этой статье мы рассмотрели несколько методов получения обратимо удаленных записей, в том числе использование флага обратимого удаления, обратимое удаление на основе временной метки и использование архивной таблицы. Используя эти методы, разработчики могут эффективно управлять обратимо удаленными записями и восстанавливать их, обеспечивая целостность данных и производительность системы.