В темпоральных базах данных действительное время — это период времени, когда произошло событие или что-то было истинным в реальном мире, или, более формально, когда факт был действителен в смоделированной реальности.
Период допустимого времени — это интервал, основанный на времени событий, который в хранилище данных называется датой и временем события . [1] [2] Другие названия — период времени приложения [1] или реальная временная шкала . [1] SQL:2011 поддерживает допустимое время с помощью так называемых таблиц периода времени приложения . [3] [4] [5] [6] В таблице базы данных допустимое время часто представлено двумя дополнительными столбцами таблицы, такими как и . Интервал времени закрыт на своей нижней границе (обозначается ) и открыт на своей верхней границе (обозначается ). start_validtime
end_validtime
[
)
В интеграционных слоях (например, хранилище данных ) действительное время контролируется исходной системой , которая доставляет данные в хранилище данных. [7] По многим причинам действительная временная шкала отличается от временной шкалы транзакций (когда данные поступают в хранилище), и важно, чтобы хранилище данных могло однозначно сообщать о том, что на самом деле произошло в прошлом, объединяя эти две временные шкалы. [7] В битемпоральных моделях данных действительное время и время транзакции могут быть представлены в двухмерном виде в декартовой системе координат . Когда данные доставляются из интеграционного слоя и должны быть представлены в слое представления (часто в размерной модели или широкой таблице ), часто желательно иметь данные только на одной временной шкале.
Термин «допустимое время» был введен Ричардом Т. Снодграссом и его аспирантом (1986). [8]
По состоянию на декабрь 2011 года стандарт ISO/IEC 9075 «Язык баз данных SQL:2011 Часть 2: SQL/Foundation» включил в определения таблиц положения, определяющие «таблицы периода времени приложения» (то есть таблицы времени действия).
[ Нужна дополнительная строка: «Зарегистрирована смерть Джона». ]
Действительное время — это время, для которого факт является истинным в реальном мире. В приведенном выше примере таблица Person получает два дополнительных поля valid_from
и valid_to
, указывающих, когда адрес человека был действителен в реальном мире. 1975-04-04 отец Джона с гордостью зарегистрировал рождение своего сына. Затем должностное лицо вставит новую запись в базу данных, указывающую, что Джон живет в Смолвиле с 3 апреля. Обратите внимание, что хотя данные были вставлены 4-го числа, база данных утверждает, что информация действительна с 3-го числа. Должностное лицо еще не знает, переедет ли Джон когда-либо в другое место и когда это произойдет, поэтому в базе данных valid_to
заполнено бесконечностью (∞) или очень поздней датой (например, 2300-01-01). В результате в базе данных появляется эта запись:
1994-12-27 Джон сообщает свой новый адрес в Бигтауне, где он живет с 1994-08-26. Чиновник Бигтауна не меняет адрес текущей записи Джона Доу в базе данных. Он добавляет новый:
Исходная запись Person (John Doe, Smallville, 1975-04-03, ∞) затем обновляется (не удаляется!). Поскольку теперь известно, что John перестал жить в Smallville 1994-08-26, valid_to
запись может быть заполнена. Теперь в базе данных есть две записи для John Doe
Когда Джон умирает, база данных снова обновляется. Текущая запись будет обновлена, и дата смерти будет указана как последняя valid_to
для Бигтауна, поскольку Джон больше не живет в Бигтауне. Новые записи не добавляются. База данных теперь выглядит так: