Мягкое удаление. Перемещение записей или создание колонки "удалено"

Я немного запутался в том, что лучше использовать для мягкого удаления. Есть два способа мягкого удаления.

  1. create table for deleted records.(In this way we will make copy for the records in the table of deleted records, then delete it from its table)
  2. create extra column called deleted,(In this way we will only change the status of this field to true , then at display records we will filter according to this extra field)

Кроме того, я хочу хранить изменения записей после каждого обновления, поэтому я думаю, что создание дополнительной таблицы будет более подходящим решением. Каково ваше мнение?

Лучшим вариантом будет второй, в вашем первом примере это не мягкое удаление, если вы удаляете его из таблицы - мягкое удаление должно минимально изменять данные. Оставление строки на месте - это цель мягкого удаления, оно оказывает минимальное влияние на данные и сохраняет все атрибуты, такие как значение индекса первичного ключа и любые внутренние параметры, которые вы не можете видеть, которые может использовать база данных.

Ваш первый вариант гораздо менее лаконичен, поскольку он означает дублирование структур данных. Обычный подход заключается в добавлении столбца "deleted_at" (по умолчанию NULL), который позитивно идентифицирует состояние записи.

Я согласен с @web-engineer, добавление нулевого столбца с датой, когда строка была мягко удалена, является лучшим вариантом. Я использовал этот ресурс для этого.

Отвечая на вторую часть вашего вопроса, да, потребуется дополнительная таблица. Существует стороннее приложение под названием django-simple-history, которое обрабатывает ее за вас.

Вернуться на верх