інших джерел даних. Такі системи характеризуються наступними ознаками:
Додавання в систему нових даних відбувається відносно рідко крупними блоками (наприклад, раз на квартал завантажуються дані за підсумками квартальних продажів з OLTP-додатку).
Дані, додані в систему, звичайно ніколи не віддаляються.
Перед завантаженням дані проходять різні процедури "очищення", зв'язані з тим, що в одну систему можуть поступати дані з багатьох джерел, що мають різні формати уявлення для одних і тих же понять, дані можуть бути некоректні, помилкові.
Запити до системи є нерегламентованими і, як правило, достатньо складними. Дуже часто новий запит формулюється аналітиком для уточнення результату, одержаного в результаті попереднього запиту.
Швидкість виконання запитів важлива, але не критична.
Дані OLAP-додатків звичайно представлені у вигляді одного або декількох гіперкубів, вимірювання якого є довідковими даними, а в осередках самого гіперкуба збережуться власне дані. Наприклад, можна побудувати гіперкуб, вимірюваннями якого є: час (в кварталах, роках), тип товару і відділення компанії, а в осередках збережуться об'єми продажів. Такий гіперкуб міститиме даних про продажі різних типів товарів по кварталах і підрозділах. Грунтуючись на цих даних, можна відповідати на питання ніби "біля якого підрозділу найкращі об'єми продажів в поточному році?", або "які тенденції продажів відділень Південно-західного регіону в поточному році в порівнянні з попереднім роком?"
Фізично гіперкуб може бути побудований на основі спеціальної багатовимірної моделі даних (MOLAP - Multidimensional OLAP) або побудований засобами реляційної моделі даних (ROLAP - Relational OLAP).
Повертаючись до проблеми нормалізації даних, можна сказати, що в системах OLAP, що використовують реляційну модель даних (ROLAP), дані доцільно берегти у вигляді слабо нормалізованих відносин, що містять наперед обчислені основні підсумкові дані. Велика надмірність і пов'язані з нею проблеми тут не страшні, оскільки оновлення відбувається тільки у момент завантаження нової порції даних. При цьому відбувається як додавання нових даних, так і перерахунок підсумків.
Коректність процедури нормалізації - декомпозиція без втрат. Теорема Хеза
Як було показано вище, алгоритм нормалізації полягає у виявленні функціональних залежностей предметної області і відповідної декомпозиції відносин. Припустимо, що ми вже маємо працюючу систему, в якій накопичені дані. Хай даних коректні у нинішній момент, тобто факти предметної області правильно відображаються поточним поляганням бази даних. Якщо в предметній області знайдена нова функціональна залежність (або вона була пропущена на етапі моделювання предметної області, або просто змінилася предметна область), то виникає необхідність наново нормалізувати дані. При цьому деякі відносини доведеться декомпозувати відповідно до алгоритму нормалізації. Виникають природні питання - що відбудеться з вже накопиченими даними? Чи не будуть дані втрачені в ході декомпозиції? Чи можна повернутися назад до початкових відносин, якщо буде ухвалено рішення відмовитися від декомпозиції, чи відновляться при цьому дані?
Для відповідей на ці питання потрібно відповісти на питання - чим же є декомпозиція відносин з погляду операцій реляційної алгебри? При декомпозиції ми з одного відношення одержуємо два або більш відносин, кожне з яких містить частину атрибутів початкового відношення. В одержаних нових відносинах необхідно видалити дублікати рядків, якщо такі виникли. Це в точності означає, що декомпозиція відношення є не що інше, як узяття однієї або декількох проекцій початкового відношення так, щоб ці проекції в сукупності містили (можливо, з повтореннями) всі атрибути початкового відношення. Тобто, при декомпозиції не повинні втрачатися атрибути відносин. Але при декомпозиції також не повинні загубитися і самі дані. Дані можна вважати не втраченими в тому випадку, якщо можлива зворотна операція - по декомпозованим відносинах можна відновити початкове відношення в точності в колишньому вигляді. Операцією, зворотної операції проекції, є операція з'єднання відносин. Є велика кількість видів операції з'єднання (див. гл. 4). Оскільки при відновленні початкового відношення шляхом з'єднання проекцій не повинні з'явитися нові атрибути, то необхідно використовувати природне з'єднання.
Визначення 6. Проекція відносини на безліч атрибутів називається власною, якщо безліч атрибутів є власною підмножиною безлічі атрибутів відношення (тобто безліч атрибутів не співпадає з безліччю всіх атрибутів відношення ).
Визначення 7. Власні проекції і відносини називаються декомпозицією без втрат, якщо відношення точно відновлюється з них за допомогою природного з'єднання для будь-якого полягання відношення :
.
Розглянемо приклад, що показує, що декомпозиція без втрат відбувається не завжди.
Приклад 2. Хай дано відношення :
НОМЕР | ПРІЗВИЩЕ | ЗАРПЛАТА
1 | Іванов | 1000
2 | Петров | 1000
Таблиця 7 Відношення
Розглянемо перший варіант декомпозиції відношення на два відношення:
НОМЕР | ЗАРПЛАТА
1 | 1000
2 | 1000
Таблиця 8 Відношення
ПРІЗВИЩЕ | ЗАРПЛАТА
Іванов | 1000
Петров | 1000
Таблиця 9 Відношення
Природне з'єднання цих проекцій, що мають загальний атрибут "ЗАРПЛАТА", очевидно, буде наступним (кожний рядок однієї проекції з'єднається з кожним рядком іншої проекції):
НОМЕР | ПРІЗВИЩЕ | ЗАРПЛАТА
1 | Іванов | 1000
1 | Петров | 1000
2 | Іванов | 1000
2 | Петров | 1000
Таблиця 10 Відношення
Отже, дана декомпозиція не є декомпозицією без втрат, оскільки початкове відношення не відновлюється в точному вигляді по проекціях (сірим кольором виділені зайві кортежі).
Розглянемо інший варіант декомпозиції:
НОМЕР | ПРІЗВИЩЕ
1 | Іванов
2 | Петров
Таблиця 11 Відношення
НОМЕР | ЗАРПЛАТА
1 | 1000
2 | 1000
Таблиця 12 Відношення
По даних проекціях, мають загальний атрибут "НОМЕР", початкове відношення відновлюється в точному вигляді. Проте, не можна сказати, що дана декомпозиція є декомпозицією без втрат, оскільки ми розглянули тільки одне конкретне полягання відношення , і не можемо сказати, чи буде і в інших поляганнях відношення відновлюватися точно. Наприклад, припустимо, що відношення перейшло в полягання:
НОМЕР | ПРІЗВИЩЕ | ЗАРПЛАТА
1 | Іванов | 1000
2