Ієрархічна модель даних

У цій статті не вистачає посилань на джерела інформації.

Ієрархічна модель даних - це модель даних. де використовується уявлення бази даних у вигляді дерева (ієрархічної) структури, що складається з об'єктів (даних) різних рівнів.

Між об'єктами існують зв'язки, кожен об'єкт може включати в себе кілька об'єктів нижчого рівня. Такі об'єкти перебувають у відношенні предка (об'єкт більш близький до кореня) до нащадка (об'єкт більш низького рівня), при цьому можлива ситуація, коли об'єкт-предок не має нащадків або має їх кілька, тоді як у об'єкту-нащадка обов'язково тільки один предок. Об'єкти, що мають загального предка, називаються близнюками (в програмуванні стосовно до структури даних дерево усталене назва брати).

Бази даних з ієрархічною моделлю одні з найстаріших, і стали першими системами управління базами даних для мейнфреймів. Розроблялися в 1950-х і 1960-х, наприклад, Information Management System (IMS) [1] фірми IBM.

Наприклад, якщо ієрархічна база даних містила інформацію про покупців і їх замовленнях, то буде існувати об'єкт «покупець» (батько) і об'єкт «замовлення» (дочірній). Об'єкт «покупець» матиме покажчики від кожного замовника до фізичного розташування замовлень покупця в об'єкт «замовлення».

У цій моделі запит, спрямований вниз по ієрархії, простий (наприклад, які замовлення належать цьому покупцеві); проте запит, спрямований вгору по ієрархії, більш складний (наприклад, який покупець помістив це замовлення). Також, важко уявити не-ієрархічні дані при використанні цієї моделі.

Ієрархічної базою даних є файлова система. що складається з кореневого каталогу, в якому є ієрархія підкаталогів і файлів.

Структурна частина ієрархічної моделі

Основними інформаційними одиницями в ієрархічній моделі даних є сегмент і поле. Поле даних визначається як найменша неподільна одиниця даних, доступна користувачу. Для сегмента визначаються тип сегмента і екземпляр сегмента. Примірник сегмента утворюється з конкретних значень полів даних. Тип сегмента - це пойменована сукупність вхідних у нього типів полів даних.

Як і мережева, ієрархічна модель даних базується на графових формі побудови даних, і на концептуальному рівні вона є просто окремим випадком мережевий моделі даних. В ієрархічній моделі даних вершині графа відповідає тип сегмента або просто сегмент, а дугам - типи зв'язків предок - нащадок. В ієрархічних структуpax сегмент - нащадок повинен мати в точності одного предка.

Ієрархічна модель являє собою зв'язний неорієнтований граф деревовидної структури, що об'єднує сегменти. Ієрархічна БД складається з упорядкованого набору дерев.

Керуюча частина ієрархічної моделі

В рамках ієрархічної моделі виділяють мовні засоби опису даних (МОД) і засоби маніпулювання даними (ЯМД). Кожна фізична база описується набором операторів, що обумовлюють як її логічну структуру, так і структуру зберігання БД. При цьому спосіб доступу встановлює спосіб організації взаємозв'язку фізичних записів.

Визначено такі способи доступу:

  • ієрархічно послідовний;
  • ієрархічно індексного-послідовний;
  • ієрархічно прямий;
  • ієрархічно індексного-прямої;
  • індексний.

Крім завдання імені БД і способу доступу опису повинні містити визначення типів сегментів, що становлять БД, відповідно до ієрархією, починаючи з кореневого сегмента. Кожна фізична БД містить тільки один кореневий сегмент, але в системі може бути кілька фізичних БД.

Серед операторів маніпулювання даними можна виділити оператори пошуку даних, оператори пошуку даних з можливістю модифікації, оператори модифікації даних. Набір операцій маніпулювання даними в ієрархічній БД невеликий, але цілком достатній.

Приклади типових операторів пошуку даних

  • знайти вказане дерево БД;
  • перейти від одного дерева до іншого;
  • знайти екземпляр сегмента, що задовольняє умовам пошуку;
  • перейти від одного сегмента до іншого всередині дерева;
  • перейти від одного сегмента до іншого в порядку обходу ієрархії.

Приклади типових операторів пошуку даних з можливістю модифікації:

  • знайти і утримати для подальшої модифікації єдиний екземпляр сегмента, що задовольняє умовам пошуку;
  • знайти і утримати для подальшої модифікації наступний екземпляр сегмента з тими ж умовами пошуку;
  • знайти і утримати для подальшої модифікації наступний екземпляр для того ж батька.

Приклади типових операторів модифікації ієрархічно організованих даних, які виконуються після виконання одного з операторів другої групи (пошуку даних з можливістю модифікації):

  • вставити новий екземпляр сегмента в зазначену позицію;
  • оновити поточний екземпляр сегмента;
  • видалити поточний екземпляр сегмента.

В ієрархічній моделі автоматично підтримується цілісність посилань між предками і нащадками. Основне правило: ніякої нащадок не може існувати без свого батька.

Відомі ієрархічні СУБД

Прикладами баз даних з ієрархічною моделлю є [2]:

Перетворення концептуальної моделі в ієрархічну модель даних

Перетворення концептуальної моделі в ієрархічну структуру даних багато в чому схоже з перетворенням її в мережеву модель. але і має деякі відмінності в зв'язку з тим, що ієрархічна модель вимагає організації всіх даних у вигляді дерева.

Перетворення зв'язку типу «один до багатьох» між предком і нащадком здійснюється практично автоматично в тому випадку, якщо нащадок має одного предка, і відбувається це наступним чином. Кожен об'єкт з його атрибутами, що бере участь в такого зв'язку, стає логічним сегментом. Між двома логічними сегментами встановлюється зв'язок типу «один до багатьох». Сегмент з боку «багато» стає нащадком, а сегмент з боку «один» стає предком.

Ситуація значно ускладнюється, якщо нащадок в зв'язку має не одного, а двох і більше предків. Так як такий стан є неможливим для ієрархічної моделі, то відображена структура даних потребує перетвореннях, які зводяться до заміни одного дерева, наприклад, двома (якщо є два предка). В результаті такого перетворення в базі даних з'являється надмірність, так як єдино можливий вихід з цієї ситуації - дублювання даних.