Soft Delete vs. DB Archive

Предлагаемое чтение

Аналогичный:Является ли софт удаляет хорошую идею?Хорошая статья:http://weblogs.asp.net/fbouma/archive/2009/02/19/soft-deletes-are-bad-m-kay.aspx

Как я попал сюда

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

Это привело к некоторому содроганию при взгляде на типичный подход удаления, CASCADE. Yikes, немного сверх того для моей текущей ситуации. Я хотел сохранить целостность реляционного графа, но я не хотел удалять каждый граф только потому, что одна часть цепочки была неактуальной. Поэтому я решил пойти по пути мягкого удаления, чтобы убедиться, что целостность данных сохранится, а записи могут быть удалены из релевантности. Я сделал это, добавив поле «DateDeleted» вкаждыйВздох, таблица в базе.

Поворотный момент

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

При поиске погоды или нет людей, как мягкое удаление, кажется, что естьмного поддержки для этого. На самом деле, ссылка «Похожие» наверх содержит ответ «Я всегда мягко удаляю». Более того, большинство ответов там и вокруг SO включают в себя своего рода подход «isDeleted» или «isActive».

Новая идея реализации

Ссылка «Хорошая статья» охватывает некоторые из вопросов, с которыми я фактически столкнулся. Он также предлагает альтернативу мягкому удалению, которое я нашел с точки зрения передового опыта. Предлагается использовать «Архивируемую базу данных», которую я на самом деле рассматривал, рассматривая мягкое удаление. Причина, по которой я отказался, заключалась в том, что я ранее высказал мысль об удалении CASCADE. Я осторожен, чтобы удалить целые графики из базы данных, потому что одна часть цепочки удаляется. Тем не менее, этот график можно было бы сохранить по крайней мере из архива, поэтому я не уверен, что это будет действительно так ужасно.

распутье

Итак, я должен просто продолжать добавлять логику, логику, логику .... логику? Или мне следует подумать о создании архивной базы данных, в которой большая часть логики просто находилась бы в очень сложном классе управления графами для хранения / восстановления реляционных графов объектов? Последнее кажется мне лучшей практикой.

Ответы на вопрос(1)

Ваш ответ на вопрос