Плюсы и минусы для столбцов CreatedDate и ModifiedDate во всех таблицах базы данных - PullRequest
2 голосов
/ 11 июня 2010

Какие плюсы и минусы?Когда мы должны их иметь, а когда нет?

ОБНОВЛЕНИЕ

Что это за комментарий в обновлении SP, автоматически сгенерированном с помощью RepositoryFactory?Должно ли это что-то делать с отсутствующими столбцами?

--The [dbo].[TableName] table doesn't have a timestamp column. Optimistic concurrency logic cannot be generated

Ответы [ 5 ]

12 голосов
/ 11 июня 2010

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

Если вам do или может понадобиться историческая информация, то этого может быть недостаточно для ваших нужд.Возможно, вы захотите использовать другую систему, такую ​​как ValidFrom и ValidTo, и никогда не изменять и не удалять данные в какой-либо строке, просто отметьте их как недействительные и создайте новую строку.

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

3 голосов
/ 12 июня 2010

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

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

2 голосов
/ 11 июня 2010

Некоторые СУБД предоставляют другие средства для автоматического сбора этой информации.Например, Oracle Flashback или Microsoft Отслеживание изменений / сбор данных изменений.Эти методы также фиксируют больше деталей, чем просто последняя дата модификации.

2 голосов
/ 11 июня 2010

Их наличие практически не имеет недостатков, поэтому, если есть шанс, что они вам понадобятся, добавьте их.

Люди могут упомянуть проблемы производительности или хранения, но,

  • в действительности они практически не повлияют на производительность SELECT с современным оборудованием, а правильно определенные SELECT пункты
  • может быть незначительное влияние на производительность записи, но это, скорее всего, будет проблемой только в системах типа OLTP, и это как раз тот случай, когда вам обычно нужны такие столбцы
  • если вы находитесь в точке, где добавление таких столбцов является нарушителем производительности с точки зрения производительности, то, скорее всего, вы собираетесь отойти от баз данных SQL в качестве платформы хранения

С CreatedDate я почти всегда устанавливаю значение по умолчанию GetDate(), поэтому мне никогда не приходится об этом думать. При построении схемы я добавлю оба этих столбца, если только это не справочная таблица без графического интерфейса для ее администрирования, поскольку я знаю, что вряд ли данные будут обновляться при изменении вручную.

1 голос
/ 11 июня 2010

Эта временная метка типа столбца вводит в заблуждение. Это не имеет ничего общего со временем, это неосторожность. Широко используется для оптимистичного параллелизма, пример здесь

...