Существует несколько способов решения общей проблемы хранения контрольных журналов исходных данных. Самое простое - это поставить метку времени в строке и включить битовое поле IsHead.
Например:
FactID Timestamp Attribute Value IsHead
2 8/1 KPI_1_QTY 83 true
1 7/31 KPI_1_QTY 88 false
Если вам нужна ветвь данных head, вы фильтруете IsHead = true (обычно вы создаете для этого представление).
Если вы хотите журнал изменений, вы отображаете все строки в порядке убывания по отметке времени.
Если вы хотите, чтобы данные существовали в определенный момент времени, вы восстанавливаете данные, которые существовали на эту дату (оставленные в качестве упражнения для читателя).
Если с корректировкой связаны свойства, создайте другую таблицу с полями, которые необходимо описать для изменения. Например ...
FactID ModifiedBy ModifiedOn ValueDelta Description
2 Fred 8/1 -5 Adjusted KPI_1_QTY per customer request