Структура данных
Основными терминами при организации данных в СУБД иерархического типа являются: элемент данных, агрегат, запись, групповое отношение, база данных.
Элемент данных (атрибут) является наименьшей единицей структуры данных. Обычно каждый элемент при описании базы данных имеет свое уникальное имя, по которому к нему можно обращаться при обработке. Элемент данных часто именуют полем.
Запись (группа) является именованной совокупностью атрибутов.
При использовании записей можно при одном обращении к базе получить совокупность данных, которая будет логически связанной. Сами записи можно изменять, добавлять и удалять. Состав атрибутов записи определяет ее тип. Экземпляром записи является конкретная запись с определенным значением элементов.
Групповое отношение представляет собой иерархическое отношение между записями 2-х типов.
Владельца группового отношения (родительскую запись) называют исходной записью, а члены группового отношения (дочерние записи) – подчиненными.
Иерархическая база данных может состоять только из таких древовидных структур.
В состав корневой записи каждого дерева обязательно должен входить ключ с уникальным значением. Некорневые записи должны иметь ключи с уникальным значением только в пределах группового отношения. Каждую запись идентифицируют с помощью полного сцепленного ключа, который является совокупностью ключей всех записей, начиная от корневой.
При использовании графического изображения групповые отношения изображаются с помощью дуг ориентированного графа, а типы записей – с помощью вершин (диаграмма Бахмана).
В иерархической модели для групповых отношений используется автоматический режим включения, а также фиксированное членство. Проще говоря, что при запоминании любой некорневой записи в базе данных должна существовать ее родительская запись, при удалении которой происходит автоматическое удаление всех подчиненных.
Пусть существует модель данных предприятия (рисунок 1), которое состоит из отделов с работающими сотрудниками. При этом работа каждого отдела может обеспечиваться несколькими сотрудниками, но сотрудник не может относиться более чем к одному отделу.
В таком случае для базы данных необходимо создание группового отношения, которое состоит из родительской записи ОТДЕЛ и дочерней записи СОТРУДНИК (рисунок 1, а).
Для обеспечения автоматизированного учета контрактов с заказчиками необходимо создать еще одну иерархическую структуру, которая содержит записи ЗАКАЗЧИК, КОНТРАКТ и ИСПОЛНИТЕЛЬ (сотрудник, который задействован для работы над контрактом) (рисунок 1, b).
Этот пример демонстрирует недостатки иерархической базы данных:
- Частично происходит дублирование информации между записями СОТРУДНИК и ИСПОЛНИТЕЛЬ (такие записи называются парными), при этом при использовании иерархической модели данных не предусматривается поддержка соответствия между парными записями.
- В иерархической модели реализуется отношение между исходной и дочерней записью варианта 1:n, при котором одной родительской записи может ставиться в соответствие любое количество дочерних. Рассмотрим вариант, при котором исполнитель может участвовать более чем в одном контракте (связь m:n). В таком случае база данных должна содержать еще одно групповое отношение, при котором исходной записью будет являться ИСПОЛНИТЕЛЬ, а дочерней – КОНТРАКТ (рисунок 1, c). Таким образом, информация снова дублируется.
Операции над данными
Добавление в базу данных новой записи. Корневая запись обязательно должна содержать значение ключа.
Изменение значения данных записи. Ключевые данные не должны изменяться.
Удаление некоторой записи и всех подчиненных ей записей.
Извлечение:
- корневой записи по ключевому значению, допускается также последовательный просмотр корневых записей;
- следующей записи (следующая запись извлекают в порядке левостороннего обхода дерева).
Операция извлечения допускает задать условия выборки (например, извлечение сотрудников с окладом менее 10 тысяч рублей).
Все операции изменения могут применяться лишь к одной «текущей» записи, предварительно извлеченной из базы данных. Такой подход к работе с данными называется навигационным.
Ограничения целостности
Иерархическая модель поддерживает лишь целостность связей между владельцем и членами группового отношения. Не может быть обеспечено автоматическое поддержание соответствия парных записей, которые входят в разные иерархии.