Хранить удаленные строки в таблице
Это хорошая практика иметь is_deleted
столбец в таблице SQL Server или есть другой способ решения этого вопроса?
Другое решение, которое я могу придумать, - удалить эту строку и вставить ее в другую таблицу для удаленных строк.
Каковы лучшие решения?
Заранее спасибо.
4 ответа
Зависит.
Я бы пошел с IsDeleted
поле, а затем время от времени запускайте процесс архивирования, который перемещает эти строки в архивную таблицу, чтобы они не занимали место в часто запрашиваемых таблицах, но по-прежнему могут быть получены при необходимости.
Я бы сказал, использовать флаг IsDeleted вместо удаления строк (или, альтернативно, IsEnabled, который я использую для таких вещей, как пользовательские таблицы). Хранилище дешево и только потому, что строка больше не действительна, не означает, что данные бесполезны.
Еще одна вещь, которую я обычно имею, - это столбец RowCreatedDateStamp, он был полезен много раз.
Может быть, немного поздно ответить на ваш вопрос, но вы действительно должны прочитать пост Уди Дахана, используя "мягкие удаления", такие как IsDeleted
колонка.
Это действительно зависит от вашего сценария. Пометка записи как удаленной является намного менее трудоемкой операцией ввода-вывода, чем реальное удаление (без проверки ограничений, без объединения страниц и т. Д.), Но это также создает много дополнительной сложности в вашем коде, поскольку теперь ваше приложение должно справляться с программным удалением везде записи Все запросы должны учитывать это, потому что некоторые могут захотеть вернуть даже удаленные записи, некоторые строго не могут и т. Д.
Еще одна важная вещь, которую стоит отметить, это то, что ваше приложение может потребовать полного удаления из-за законодательства или требований клиента.