3.1.Иерархическая модель данных.
3.1.1.Структура данных.
Организация данных в СУБД иерархического типа определяется
в терминах: элемент, агрегат, запись (группа), групповое отношение,
база данных.
-
Атрибут
(элемент данных) - наименьшая единица структуры данных.
Обычно каждому элементу при описании базы данных присваивается уникальное
имя. По этому имени к нему обращаются при обработке. Элемент данных также
часто называют полем.
-
Запись - именованная совокупность
атрибутов. Использование записей позволяет за одно обращение к базе получить
некоторую логически связанную совокупность данных. Именно записи изменяются,
добавляются и удаляются. Тип записи определяется составом ее атрибутов.
Экземпляр записи - конкретная запись с конкретным значением элементов
-
Групповое отношение - иерархическое
отношение между записями двух типов. Родительская запись (владелец группового
отношения) называется исходной записью, а дочерние записи (члены группового
отношения) - подчиненными. Иерархическая база данных может хранить только
такие древовидные структуры.
Корневая запись каждого дерева обязательно должна содержать ключ с уникальным
значением. Ключи некорневых записей должны иметь уникальное значение только
в рамках группового отношения. Каждая запись идентифицируется полным сцепленным
ключом, под которым понимается совокупность ключей всех записей от корневой
по иерархическому пути.
При графическом изображении групповые отношения изображают дугами ориентированного
графа, а типы записей - вершинами (диаграмма Бахмана).
Для групповых отношений в иерархической модели обеспечивается автоматический
режим включения и фиксированное членство. Это означает, что
для запоминания любой некорневой записи в БД должна существовать ее родительская
запись (подробнее о режимах включения и исключения записей сказано в
параграфе о сетевой модели). При удалении родительской записи автоматически
удаляются все подчиненные.
Пример:
Рассмотрим следующую модель данных предприятия
(см. рис. 3.1): предприятие состоит из отделов, в которых работают
сотрудники. В каждом отделе может работать несколько сотрудников, но сотрудник
не может работать более чем в одном отделе.
Поэтому, для информационной системы управления
персоналом необходимо создать групповое отношение, состоящее из родительской
записи ОТДЕЛ (НАИМЕНОВАНИЕ_ОТДЕЛА, ЧИСЛО_РАБОТНИКОВ) и дочерней записи
СОТРУДНИК (ФАМИЛИЯ, ДОЛЖНОСТЬ, ОКЛАД). Это отношение показано на рис. (а)
(Для простоты полагается, что имеются только две дочерние записи).
Для автоматизации учета контрактов с заказчиками
необходимо создание еще одной иерархической структуры : заказчик - контракты
с ним - сотрудники, задействованные в работе над контрактом. Это дерево
будет включать записи ЗАКАЗЧИК(НАИМЕНОВАНИЕ_ЗАКАЗЧИКА, АДРЕС), КОНТРАКТ(НОМЕР,
ДАТА,СУММА), ИСПОЛНИТЕЛЬ (ФАМИЛИЯ, ДОЛЖНОСТЬ, НАИМЕНОВАНИЕ_ОТДЕЛА) (рис.
(b)).
Рис. 3.1
Из этого примера видны недостатки иерархических БД:
-
Частично дублируется информация между записями СОТРУДНИК и ИСПОЛНИТЕЛЬ
(такие записи называют парными), причем в иерархической модели данных не
предусмотрена поддержка соответствия между парными записями.
-
Иерархическая модель реализует отношение между исходной и дочерней записью
по схеме 1:N, то есть одной родительской записи может соответствовать
любое число дочерних. Допустим теперь, что исполнитель может принимать
участие более чем в одном контракте (т.е. возникает связь типа M:N).
В этом случае в базу данных необходимо ввести еще одно групповое отношение,
в котором ИСПОЛНИТЕЛЬ будет являться исходной записью, а КОНТРАКТ - дочерней
(рис. (c)). Таким образом, мы опять вынуждены дублировать информацию.
3.1.2.Операции над данными, определенные в иерархической
модели:
-
ДОБАВИТЬ в базу данных новую запись. Для корневой записи обязательно
формирование значения ключа.
-
ИЗМЕНИТЬ значение данных предварительно извлеченной записи. Ключевые
данные не должны подвергаться изменениям.
-
УДАЛИТЬ некоторую запись и все подчиненные ей записи.
-
ИЗВЛЕЧЬ:
-
извлечь корневую запись по ключевому значению, допускается также последовательный
просмотр корневых записей
-
извлечь следующую запись (следующая запись извлекается в порядке левостороннего
обхода дерева)
В операции ИЗВЛЕЧЬ допускается задание условий выборки (например, извлечь
сотрудников с окладом более 1 тысячи руб.)
Как видим, все операции изменения применяются только к одной "текущей" записи
(которая предварительно извлечена из базы данных). Такой подход к манипулированию
данных получил название "навигационного".
3.1.3.Ограничения целостности.
Поддерживается только целостность связей между владельцами и членами группового отношения
(никакой потомок не может существовать без предка). Как уже отмечалось, не обеспечивается
автоматическое поддержание соответствия парных записей, входящих в разлные иерархии.
Литература:
Бойко В.В., Савинков В.М. Проектирование баз данных информационных систем.
-М.:"Финансы и статистика",1989.
Следующая глава: 3.2.Сетевая модель данных.
Введение в базы данных. (c) Зеленков
Ю.А. (yz@yars.free.net) 1997
г.
(c) Центр Интернет ЯрГУ