lign="justify"> Заголовки мають чітку ієрархічну структуру, тому природно буде припустити для їх зберігання використовувати дерево. При цьому схематично структуру вузла дерева можна зобразити таким чином:
Додаток С
При цьому в якості значення вимірювання логічно зберігати посилання на відповідний елемент таблиці вимірювань багатовимірного куба. Це дозволить скоротити витрати пам'яті для зберігання зрізу і прискорити роботу. В якості батьківських і дочірніх вузлів також використовуються посилання. p align="justify"> Для додавання елемента в дерево необхідно мати інформацію про його місце розташування в гіперкубі. В якості такої інформації треба використовувати його координату, яка зберігається в словнику значень вимірювання. Розглянемо схему додавання елемента в дерево заголовків зведеної таблиці. При цьому в якості вихідної інформації використовуємо значення координат вимірювань. Порядок, в якому ці вимірювання перераховані, визначається необхідним способом агрегування і збігається з рівнями ієрархії дерева заголовків. У результаті роботи необхідно отримати список стовпців або рядків зведеної таблиці, в які необхідно здійснити додавання елемента. p align="justify"> Додаток D
В якості вихідних даних для визначення цієї структури використовуємо координати вимірювань. Крім того, для визначеності, будемо вважати, що ми визначаємо цікавить нас стовпець у матриці (як будемо визначати рядок розглянемо трохи пізніше, бо там зручніше застосовувати інші структури даних, причина такого вибору також див. нижче). В якості координат візьмемо цілі числа - номери значень вимірів, які можна визначити так, як описано вище. p align="justify"> Отже, після виконання цієї процедури отримаємо масив посилань на стовпці розрідженій матриці. Тепер необхідно виконати всі необхідні дії з рядками. Для цього всередині кожного шпальти необхідно знайти потрібний елемент і додати туди відповідне значення. Для кожного з вимірів в колекції необхідно знати кількість унікальних значень і власне набір цих значень. p align="justify"> Тепер розглянемо, в якому вигляді необхідно представити значення всередині стовпців - тобто як визначити необхідну рядок. Для цього можна використовувати кілька підходів. Найпростішим було б уявити кожен стовпець у вигляді вектора, але так як він буде сильно розрідженим, то пам'ять буде витрачатися вкрай неефективно. Щоб уникнути цього, застосуємо структури даних, які забезпечать більшу ефективність подання розріджених одновимірних масивів (векторів). Найпростішою з них буде звичайний список, одно-або двусвязний, проте він неекономічний з точки зору доступу до елементів. Тому будемо використовувати дерево, яке забезпечить більш швидкий доступ до елементів. p align="justify"> Наприклад, можна використовувати точно таке ж дерево, як і для стовпців, але тоді довелося б для кожного стовпця заводити своє власне дерево, що призведе до значних н...