Темпоральна база данихТемпоральна база даних — база даних, що містить історичні (хронологічні) дані, тобто дані, що відносяться до минулого і, можливо, до майбутнього періоду часу. Звичайна, нехронологічна база даних містить тільки поточні дані. КласифікаціяУнітемпоральна база данихУнітемпоральна база даних має тільки одну вісь часу: або діапазон чинності (англ. validity range), або діапазон системного часу (англ. system time range). Бітемпоральна база данихБітемпоральна база даних має дві осі часу:
Тритемпоральна база данихТритемпоральна база даних має три осі часу:
Цей підхід вводить додаткові складнощі. Темпоральні бази даних є протилежністю поточним (не плутати з поточно доступними базами даних), які зберігають тільки ті факти, які вважаються істинними на поточний час. МожливостіТемпоральні бази даних підтримують керування та доступ до темпоральних даних шляхом надання однієї чи більше наступних можливостей[1][2]:
Типи даних і операториХронологічні дані представляють собою істинні висловлювання із зазначенням інтервалів часу. Інтервалом часу є непорожній відрізок часової шкали, для його позначення використовується спеціальний інтервальний тип даних INTERVAL_DATE. Значення цього типу записується у вигляді , де — вирази типу DATE, відповідні початковій і кінцевій часовій позиції інтервалу. Під часовими позиціями (позиціями на часовій шкалі) розуміють одиниці часу, що підходять для певної мети (мілісекунди, секунди, доба) і вважаються неподільними. Припустимо — значення інтервального типу, що мають відповідні початкові позиції і кінцеві позиції , — довільна тимчасова позиція. Для позначення попередньої і наступної часової позиції використовуються вирази вигляду і . Оператор повертає кількість різних позицій таких, що . Інтервал є одиничним інтервалом, якщо . Для перевірки умов, пов'язаних з інтервалами, використовуються оператори Аллена:
Крім того, є бінарні оператори над інтервалами, які повертають інтервали:
Оператори EXPAND і COLLAPSE приймають в якості операнда унарне відношення, кортежі якого містять інтервали і повертають відношення того ж типу, що є розгорнутою і стислою формою вихідного відношення. Приклад використання операторів EXPAND і COLLAPSE:
Розгорнутою формою відношення R є відношення Rx, що містить всі кортежі з одиничним інтервалом [p:p], де p – позиція в деякому інтервалі деякого кортежу відношення R. Стислою формою відношення R є таке відношення Rc, де: відношення R і Rc мають одну і ту ж розгорнуту форму; ніякі два різних кортежі відносно Rc не містять інтервали i1 і i2 такі, що i1 MERGES i2 є істиною. Оператор PACK і UNPACK приймають в якості операндів відношення і атрибут інтервального типу, що належить цьому відношенню, і повертає відношення того ж типу, відповідно згорнуте по вказаному атрибуту з угрупованням по іншим атрибутам, і розгорнуте по вказаному атрибуту. Приклад використання операторів PACK і UNPACK:
Упакувати відношення R за кількома атрибутами D1, D2, ..., Dn можна розпакувавши R за всіма вказаними атрибутами, а потім упакувати отриманий результат за атрибутом D1, результат упаковки упакувати по атрибуту D2, ..., результат упаковки упакувати по атрибуту Dn. Для всіх звичайних реляційних операторів визначені аналогічні їм U_оператори, які розпаковують відношення за вказаними атрибутами, виконують відповідну операцію і упаковують отриманий результат. Наприклад, оператори U_MINUS, U_INTERSECT, U_UNION, U_JOIN відповідають операторам MINUS, INTERSECT, UNION, JOIN. U_OPERATOR визначається як:
Операція розпакування при використанні довгих інтервалів з великим ступенем деталізації може зажадати занадто великого обсягу пам'яті для свого виконання. Використання U_операторів дозволяє вибрати оптимізатору реалізацію, яка вимагає мінімальної кількості проміжних результатів. Приклад використання оператора U_MINUS:
ДекомпозиціяЗберігання поточної інформації в одних змінних відношення, а історичної інформації — в інших називається горизонтальною декомпозицією. Зберігання історичної інформації у вигляді безлічі окремих змінних відношення (кожна з яких містить один атрибут інтервального типу і один атрибут іншого типу) називається вертикальною декомпозицією. Припустимо, змінна відношення R має атрибут інтервального типу D та атрибути інших типів A1, A2, ..., An. При зміні атрибутів A1, A2, ..., An незалежно один від одного у часі в змінну відношення необхідно вносити складний ряд оновлень для подання інформації про значення атрибута протягом визначеного періоду часу може знадобитися більше одного кортежу. Тому доцільно розподілити інформацію по змінним відношення R1, R2, ..., Rn, які будуть мати атрибути D і A1, D A2, ..., D і An відповідно.
Дане відношення після виконання декомпозиції знаходиться в шостій нормальній формі. Обмеження цілісностіВходження атрибута D інтервального типу до складу потенційного ключа не вирішує проблему надмірності і протиріччя. Відношення може мати два кортежі з інтервалами, що перекриваються і співпадаючими значеннями інших атрибутів. При цьому присутня надмірність інформації, дані за деякі часові інтервали, зазначаються двічі. Крім того, існує проблема багатослів'я, коли два кортежі мають інтервали, слідуючи безпосередньо один за одним при співпадаючих значеннях інших атрибутів. У цьому випадку, хоча інформація і не дублюється, але її можна представити у вигляді одного кортежу. Для усунення проблеми надмірності і багатослів'я необхідно, щоб змінна відношення постійно була упакована по атрибуту D. Крім того, відношення може містити два кортежі з інтервалами, що перекриваються, але з різними значеннями інших неключових атрибутів, в результаті чого інформація буде суперечливою. Для усунення суперечності необхідно, щоб змінна відношення була постійно розпакована по атрибуту D. Для задоволення цих вимог вводяться U_ключі. Змінна відношення підтримується упакованою по U_ключу і розпаковується при внесенні змін для підтримки несуперечливого стану. Посилання
|