Как указано в комментариях выше, рекомендуется добавлять аудит только в те таблицы, которые действительно в этом нуждаются.
Как правило, вы хотите провести аудит пользователя приложения - во многих случаях приложения (такие как Web или SOA) могут подключатьсявсе пользователи с одинаковыми учетными данными, поэтому хранить логин БД бессмысленно.
ИМХО, шаблоны date created
/ last date updated
/ lastupdateby
никогда не дают полной картины, так как вы сможете только увидеть, кто сделал последнее изменение, и не увидеть, что было изменено.Если вы проводите аудит, я бы посоветовал вам провести полный аудит изменений с использованием таких шаблонов, как аудит триггер .Вы также можете избежать использования триггеров, если ваши вставки / обновления / удаления в ваши таблицы инкапсулированы, например, через Stored Procedures
.Правда, таблицы аудита будут очень большими, но, как правило, они не будут подвергаться большим запросам (как правило, только при охоте на ведьм) и могут быть заархивированы, легко разбиты по дате (и могут быть сделаны только для чтения).С отдельной таблицей аудита вам не понадобится столбец DateCreated
или LastDateUpdated
, так как это можно получить.Тем не менее, как правило, вам все еще понадобится последний пользователь изменений, поскольку SQL не сможет получить пользователя приложения.
Если вы решите логически удалить, я бы не стал использовать «status» в качестве поля, указывающего на логическое удаление., поскольку, скорее всего, у вас есть таблицы, которые моделируют состояние процесса (например, Статус платежа и т. д.). Использование полей bit
или char
, таких как ActiveYN
или IsActive
, типично для логического удаления.
Логическое удаление может быть громоздким, поскольку все ваши запросы должны будут отфильтровывать Active=N
записей, и, сохраняя удаленные записи в ваших таблицах транзакций, можно сделать эти таблицы больше, чем необходимо, особенно в таблицах Many : Many / junction
.На производительность также можно повлиять, так как поле с 2 состояниями вряд ли будет достаточно избирательным, чтобы его можно было использовать в индексах.В этом случае физическое удаление с полным аудитом может иметь смысл.