Я уже некоторое время занимаюсь созданием таблиц истории в базах данных, но никогда не вкладывал в это слишком много усилий и мыслей. Интересно, какая там лучшая практика?
Моя главная цель - записать любые изменения в записи за определенный день. Если в день происходит более одного изменения, то будет существовать только одна запись истории. Мне нужно записать дату, когда запись была изменена, также, когда я получаю данные, мне нужно извлечь правильную запись из истории, как это было в конкретное время. Например, у меня есть таблица клиентов, и я хочу узнать, какой у них был адрес на определенную дату. Мои Sprocs, такие как get Cust, будут принимать необязательную дату, и если дата не будет передана, то будет возвращена самая последняя запись.
Итак, вот что я искал для совета:
Сохраню ли я таблицу истории в той же таблице и использую логический флаг удаления, чтобы скрыть исторические? Обычно я этого не делаю, так как некоторые таблицы могут сильно меняться и иметь много записей. Я использую отдельную таблицу, которая отражает основную таблицу? Я обычно делаю это. Должен ли я помещать только записи изменений в таблицу истории, а не в текущую? Как наиболее эффективно использовать заданную дату, чтобы извлечь нужную запись в определенный момент времени, получить каждую запись для клиента <= дата, переданную, а затем отсортировать по самой последней дате и взять вершину? </p>
Спасибо за помощь ... С уважением, M