Ієрархічна модель даних
У цій статті не вистачає посилань на джерела інформації.
Ієрархічна модель даних - це модель даних. де використовується уявлення бази даних у вигляді дерева (ієрархічної) структури, що складається з об'єктів (даних) різних рівнів.
Між об'єктами існують зв'язки, кожен об'єкт може включати в себе кілька об'єктів нижчого рівня. Такі об'єкти перебувають у відношенні предка (об'єкт більш близький до кореня) до нащадка (об'єкт більш низького рівня), при цьому можлива ситуація, коли об'єкт-предок не має нащадків або має їх кілька, тоді як у об'єкту-нащадка обов'язково тільки один предок. Об'єкти, що мають загального предка, називаються близнюками (в програмуванні стосовно до структури даних дерево усталене назва брати).
Бази даних з ієрархічною моделлю одні з найстаріших, і стали першими системами управління базами даних для мейнфреймів. Розроблялися в 1950-х і 1960-х, наприклад, Information Management System (IMS) [1] фірми IBM.
Наприклад, якщо ієрархічна база даних містила інформацію про покупців і їх замовленнях, то буде існувати об'єкт «покупець» (батько) і об'єкт «замовлення» (дочірній). Об'єкт «покупець» матиме покажчики від кожного замовника до фізичного розташування замовлень покупця в об'єкт «замовлення».
У цій моделі запит, спрямований вниз по ієрархії, простий (наприклад, які замовлення належать цьому покупцеві); проте запит, спрямований вгору по ієрархії, більш складний (наприклад, який покупець помістив це замовлення). Також, важко уявити не-ієрархічні дані при використанні цієї моделі.
Ієрархічної базою даних є файлова система. що складається з кореневого каталогу, в якому є ієрархія підкаталогів і файлів.
Структурна частина ієрархічної моделі
Основними інформаційними одиницями в ієрархічній моделі даних є сегмент і поле. Поле даних визначається як найменша неподільна одиниця даних, доступна користувачу. Для сегмента визначаються тип сегмента і екземпляр сегмента. Примірник сегмента утворюється з конкретних значень полів даних. Тип сегмента - це пойменована сукупність вхідних у нього типів полів даних.
Як і мережева, ієрархічна модель даних базується на графових формі побудови даних, і на концептуальному рівні вона є просто окремим випадком мережевий моделі даних. В ієрархічній моделі даних вершині графа відповідає тип сегмента або просто сегмент, а дугам - типи зв'язків предок - нащадок. В ієрархічних структуpax сегмент - нащадок повинен мати в точності одного предка.
Ієрархічна модель являє собою зв'язний неорієнтований граф деревовидної структури, що об'єднує сегменти. Ієрархічна БД складається з упорядкованого набору дерев.
Керуюча частина ієрархічної моделі
В рамках ієрархічної моделі виділяють мовні засоби опису даних (МОД) і засоби маніпулювання даними (ЯМД). Кожна фізична база описується набором операторів, що обумовлюють як її логічну структуру, так і структуру зберігання БД. При цьому спосіб доступу встановлює спосіб організації взаємозв'язку фізичних записів.
Визначено такі способи доступу:
- ієрархічно послідовний;
- ієрархічно індексного-послідовний;
- ієрархічно прямий;
- ієрархічно індексного-прямої;
- індексний.
Крім завдання імені БД і способу доступу опису повинні містити визначення типів сегментів, що становлять БД, відповідно до ієрархією, починаючи з кореневого сегмента. Кожна фізична БД містить тільки один кореневий сегмент, але в системі може бути кілька фізичних БД.
Серед операторів маніпулювання даними можна виділити оператори пошуку даних, оператори пошуку даних з можливістю модифікації, оператори модифікації даних. Набір операцій маніпулювання даними в ієрархічній БД невеликий, але цілком достатній.
Приклади типових операторів пошуку даних
- знайти вказане дерево БД;
- перейти від одного дерева до іншого;
- знайти екземпляр сегмента, що задовольняє умовам пошуку;
- перейти від одного сегмента до іншого всередині дерева;
- перейти від одного сегмента до іншого в порядку обходу ієрархії.
Приклади типових операторів пошуку даних з можливістю модифікації:
- знайти і утримати для подальшої модифікації єдиний екземпляр сегмента, що задовольняє умовам пошуку;
- знайти і утримати для подальшої модифікації наступний екземпляр сегмента з тими ж умовами пошуку;
- знайти і утримати для подальшої модифікації наступний екземпляр для того ж батька.
Приклади типових операторів модифікації ієрархічно організованих даних, які виконуються після виконання одного з операторів другої групи (пошуку даних з можливістю модифікації):
- вставити новий екземпляр сегмента в зазначену позицію;
- оновити поточний екземпляр сегмента;
- видалити поточний екземпляр сегмента.
В ієрархічній моделі автоматично підтримується цілісність посилань між предками і нащадками. Основне правило: ніякої нащадок не може існувати без свого батька.
Відомі ієрархічні СУБД
Прикладами баз даних з ієрархічною моделлю є [2]:
Перетворення концептуальної моделі в ієрархічну модель даних
Перетворення концептуальної моделі в ієрархічну структуру даних багато в чому схоже з перетворенням її в мережеву модель. але і має деякі відмінності в зв'язку з тим, що ієрархічна модель вимагає організації всіх даних у вигляді дерева.
Перетворення зв'язку типу «один до багатьох» між предком і нащадком здійснюється практично автоматично в тому випадку, якщо нащадок має одного предка, і відбувається це наступним чином. Кожен об'єкт з його атрибутами, що бере участь в такого зв'язку, стає логічним сегментом. Між двома логічними сегментами встановлюється зв'язок типу «один до багатьох». Сегмент з боку «багато» стає нащадком, а сегмент з боку «один» стає предком.
Ситуація значно ускладнюється, якщо нащадок в зв'язку має не одного, а двох і більше предків. Так як такий стан є неможливим для ієрархічної моделі, то відображена структура даних потребує перетвореннях, які зводяться до заміни одного дерева, наприклад, двома (якщо є два предка). В результаті такого перетворення в базі даних з'являється надмірність, так як єдино можливий вихід з цієї ситуації - дублювання даних.