Структура таблицы для множественной истории - PullRequest
0 голосов
/ 05 января 2010

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

У меня есть еще 3 столбца даты для ведения истории и столбца состояния для фактической истории объекта. Status, StatusFrom, Statusto, UpdateDate & NextUpdateDate

UpdateDate & NextUpdateDate предназначен для поддержки истории изменений.

Есть ли лучший способ сохранить фактическую историю истории Record & Ammend?

1 Ответ

1 голос
/ 05 января 2010

Вы создаете так называемую «таблицу аудита». Есть много способов сделать это; пара из них:

  1. Создайте таблицу с соответствующими ключевыми полями и полями до / после для всех интересующих вас столбцов исходной таблицы вместе с отметкой времени, чтобы вы знали, когда было сделано изменение.

  2. Создание таблицы с соответствующими ключевыми полями, отметкой времени изменения, именем поля и столбцами до / после.

Метод (1) имеет проблему с тем, что в итоге вы получите много полей в таблице аудита - в основном два для каждого поля в вашей исходной таблице. Кроме того, если изменяется только одно или два поля в исходной таблице, большинство полей в таблице аудита будут иметь значение NULL, что может привести к потере пространства (в зависимости от вашей базы данных). Также требуется много специального кода, чтобы выяснить, какое поле изменилось, когда вы вернетесь к обработке таблицы аудита.

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

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

Надеюсь, это поможет.

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