Мягкое удаление, безусловно, простой подход в теории.Однако не особо много внимания уделяется тому, что делать с данными, которые не были удалены.На самом деле, это замаскировано.
На мой взгляд, это потому, что в центре внимания не та проблема.Не только «что означает удаление», но и то, что УДАЛЯЕТСЯ.Когда запись должна быть удалена, то на самом деле удаляется узел в графе, а не просто одна запись.Весь этот граф является причиной, по которой люди решают проблему с «мягким удалением».Эти запрещенные решения, как правило, скрывают гангрену под ногами - сложная проблема, которая только усугубляется со временем.
Что еще хуже, то для того, чтобы сопровождать логику мягкого удаления, нужно все время включать (много раз нарушая различные соглашения иреализации анти-паттернов) для учета возможных разрывов в графе объектов.Кроме того, что за бизнес-логика является «isDeleted»?!
Я считаю, что очень сильное решение этой проблемы, проблема удаления объекта при сохранении ссылочной целостности графа объекта, заключается в использовании архива.шаблон.При удалении объекта объект архивируется, а затем удаляется.Архивная база данных, зеркальная база данных с метаданными (временная структура базы данных может использоваться и очень важна здесь), затем получит объект, который будет заархивирован и восстановлен при необходимости.
Это делает его очень прямым, чтобы избежатьперечисление или включение удаленного объекта, поскольку соответствующая база данных больше не будет его содержать.Теперь та же логика, которая применялась при поиске «isDeleted», «isActive» или «DeletedDate», может быть применена в правильном месте (не везде) к внешним ключам извлеченных объектов.Когда присутствует внешний ключ, а объекта нет, то теперь есть логическое объяснение и логический набор опций.Покажите, что содержащий объект был удален, и некоторые действия: «Восстановить, Удалить текущий содержащий объект, Просмотр удален».Эти параметры могут быть выбраны пользователем или явно определены в коде в логической форме.В зависимости от того, насколько развита архивная база данных, возможно, существуют дополнительные параметры, например, кто ее удалил, когда, почему и т. Д. И т. Д.