Хранить удаленные строки в таблице - PullRequest
0 голосов
/ 04 ноября 2010

Полезно ли иметь столбец is_deleted в таблице SQL Server или есть другой способ решения этого вопроса?

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

Какие лучшие решения?

Заранее спасибо.

Ответы [ 4 ]

2 голосов
/ 04 ноября 2010

Зависит.

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

1 голос
/ 04 ноября 2010

Это действительно зависит от вашего сценария. Пометка записи как удаленной является гораздо менее трудоемкой операцией ввода-вывода, чем реальное удаление (без проверки ограничений, без объединения страниц и т. Д.), Но это также создает много дополнительной сложности в вашем коде, поскольку теперь ваше приложение должно справляться с программным удалением везде записи Все запросы должны учитывать это, потому что некоторые могут захотеть вернуть даже удаленные записи, некоторые строго не могут и т. Д.

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

1 голос
/ 04 ноября 2010

Возможно, вы немного опоздаете с ответом на ваш вопрос, но вы действительно должны прочитать пост Уди Даана , используя "мягкие удаления", такие как столбец IsDeleted

1 голос
/ 04 ноября 2010

Я бы сказал, используйте флаг IsDeleted вместо удаления строк (или, альтернативно, IsEnabled, который я использую для таких вещей, как пользовательские таблицы). Хранилище дешево и только потому, что строка больше не действительна, не означает, что данные бесполезны.

Другая вещь, которую я обычно имею, это столбец RowCreatedDateStamp, он был полезен много раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...