Сталкивались ли вы с концепцией временного моделирования данных? Вы могли бы хотеть Google для этого. Одним из очень популярных методов временного моделирования является логика «Эффективная дата», широко используемая в Peoplesoft. Вкратце, это выглядит так:
Каждая таблица в системе будет иметь такой шаблон проектирования:
Table{
Primary_key,
effdt,
effseq,
other data,
modified_ts
};
Несколько версий записи «складываются» с использованием первичного ключа, effdt и effseq. Effdt хранит только дату, а не дату и время. effseq (int) используется для хранения нескольких изменений в один и тот же день. Измененный_ts хранит отметку даты изменения данных.
данные в таблице будут выглядеть так:
PrimaryKey1 2012-01-01 1 MyData1 MyData2
PrimaryKey1 2012-02-01 1 MyData1 Change1
PrimaryKey1 2012-02-01 2 Change2 Change1
Чтобы получить последние данные из любой таблицы, вы должны использовать такой запрос:
select * from MyTable A
where effdt = (select max(effdt) from MyTable where PrimaryKey = A.PrimaryKey)
and effseq = (select max(effseq) from MyTable where PrimaryKey = A.PrimaryKey
and Effdt=A.EFfdt)
Это поможет?