Я думаю, что ответ заключается в вопросе: «Как часто вам нужно просматривать историю конкретной записи и по какой причине?
Если вам нужно время от времени исследовать, кто что сделал, когда или дляОдной из целей аудита является использование подхода таблицы аудита, заполняемого триггерами при каждом изменении данных, или использование отслеживания изменений, если оно работает для вас (честно говоря, мы не находим его достаточно хорошим для аудита). Отслеживание изменений также можно успешно использовать, чтобы определить,например, запись была изменена с момента последнего импорта данных. Имейте в виду, что данные отслеживания изменений не являются постоянными, если только вы физически не копируете их в другую таблицу.
Если вам нужно часто просматривать всю историю, сохраняйте еевсе в одной таблице с активным флагом, который поддерживается с помощью триггеров. Создайте представление, которое имеет только активные записи для разработчиков, когда они хотят видеть только самые последние данные. Если вы делаете это с существующей базой данных, которая ранее былане хранить историю, топереименуйте таблицу и назовите вид той же самой таблицы, которая изначально была, чтобы ничего не ломалось.
Я бы также рассмотрел возможность использования отдельных таблиц истории, если бы мне нужны были данные истории для отчетов, но не остальная часть приложения.Например, у нас есть это, потому что нам нужно знать, действительно ли цели, о которых говорят торговые представители, на самом деле являются целями высокого уровня на момент установления контакта, поскольку эта оценка является частью того, как можно измерить эффективность торговых представителей.Очевидно, нам нужна история, но на самом деле только раз в месяц или около того.Поэтому ежедневное снижение производительности при сохранении ее в одной таблице может оказаться не лучшим решением.Это может помочь избежать трудоемких операций, связанных с отчетностью, от повседневных задач и в целом повысить производительность.