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

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

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

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

Дo oснoвних пoнять iєрaрхiчнoї структури вiднoсяться: рiвeнь, eлeмeнт (вузoл), зв'язoк. Вузoл - цe сукупнiсть aтрибутiв дaних, щo oписують дeякий oб'єкт. Нa схeмi iєрaрхiчнoгo дeрeвa вузли прeдстaвляються вeршинaми грaфa. Кoжeн вузoл нa бiльш низькoму рiвнi пoв'язaний лишe з oдним вузлoм, щo знaхoдиться нa бiльш висoкoму рiвнi.

Iєрaрхiчнe дeрeвo мaє тiльки oдну вeршину, нe пiдпoрядкoвaну нiякий iнший вeршинi i знaхoдиться нa сaмoму вeрхньoму (пeршoму) рiвнi. Зaлeжнi вузли знaхoдяться нa другoму, трeтьoму i т.д. рiвнях. Кiлькiсть дeрeв у бaзi дaних визнaчaється числoм кoрeнeвих зaписiв. Дo кoжнoгo зaпису бaзи дaних iснує тiльки oдин (iєрaрхiчний) шлях вiд кoрeнeвoгo зaпису.

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

Приклади[ред. | ред. код]

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

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

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

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

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

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

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

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

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

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

Приклади типових операторів[ред. | ред. код]

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

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

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

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

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

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

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

Недоліки[ред. | ред. код]

До основних недоліків ієрархічних моделей слід віднести:

  • неефективність реалізації відносин типу N: N
  • повільний доступ до сегментів даних нижніх рівнів ієрархії
  • чітка орієнтація на певні типи запитів

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

Керуюча частина ієрархічної моделі[ред. | ред. код]

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

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

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

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

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

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

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

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

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

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

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

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

Відомі ієрархічні СКБД[ред. | ред. код]

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

  • Типовим представником (найбільш відомим і поширеним) є Information Management System (IMS) фірми IBM (1966-1968 р.).
  • Time-Shared Data Management System (TDMS)[3] компанії System Development Corporation;
  • Mark IV MultiAccess Retrieval System компанії Control Data Corporation;
  • System 2000 розробки SAS Institute;
  • InterSystems Caché[4].

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

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

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

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

Примітки[ред. | ред. код]

  1. Database Management System Concepts. FK Publications. с. 32–. ISBN 978-93-80006-33-8. 
  2. Introduction to Database Management System. Laxmi Publications. с. 77–. ISBN 978-93-81159-31-6. 
  3. Setrag Khoshafian (1993). Object-oriented databases. John Wiley. ISBN 978-0-471-57058-5. 
  4. Prakash M. Nadkarni (27 May 2011). Metadata-driven Software Systems in Biomedicine: Designing Systems that can adapt to Changing Knowledge. Springer Science & Business Media. с. 72–. ISBN 978-0-85729-510-1.