Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МОДЕЛИРОВАНИЕ ИЕРАРХИЧЕСКИХ ОБЪЕКТОВ СРЕДСТВАМИ...doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
9.06 Mб
Скачать

Федеральное агентство по образованию

ГОУ ВПО «Уральский государственный технический университет – УПИ»

Д.Г. Ермаков

МОДЕЛИРОВАНИЕ ИЕРАРХИЧЕСКИХ ОБЪЕКТОВ СРЕДСТВАМИ РЕЛЯЦИОННЫХ СУБД

Учебно-методическое пособие

Екатеринбург

2025 г.

УДК

ББК

И 5

Автор: Д.Г. Ермаков

И 5 Моделирование иерархических объектов средствами реляционных СУБД: учебно-методическое пособие/ Д.Г. Ермаков.

Екатеринбург: ГОУ ВПО УГТУ-УПИ, 2007. 109 с.

Учебно-методическое пособие содержит сведения о способах моделирования произвольных абстрактных иерархических объектов (деревьев) средствами реляционных СУБД. Описаны базовые способы отображения абстрактных иерархических структур в реляционные структуры данных: рекурсивный, правого и левого коэффициентов, вспомогательной таблицы. Для каждого из способов рассмотрены возможности выполнения операций выборки поддерева, нахождения корневых элементов и листьев деревьев, добавления элементов в иерархии и их удаления.

Также рассматриваются два частных случая: иерархия с ограниченным количеством уровней и иерархия с ограниченным количеством потомков для всех узлов.

Пособие содержит варианты заданий для самостоятельной работы по данной теме.

Для использования данного пособия от студентов требуется представление о реляционной СУБД и знание языка SQL.

Пособие предназначено для студентов второго курса всех специальностей факультета ИМТЭМ дневной формы обучения. Пособие составлено в соответствии с программой курса «Базы данных» и может быть использовано для самостоятельного изучения соответствующего раздела учебного курса. Также возможно использование данного пособия при изучении курса «Управление данными».

Библиогр.: 11 назв. Табл. 16. Рис. 86.

Печатается по решению редакционно-издательского совета УГТУ-УПИ.

ГОУ ВПО «Уральский

государственный технический

университет – УПИ», 2025

Основные понятия и определения Иерархическая модель данных

Дерево может быть определено как иерархия узлов с попарными связями, в которой:

  1. самый верхний уровень иерархии имеет единственный узел, называемый корнем;

  2. каждый узел, кроме корня, связан с одним и только одним узлом находящемся на более высоком уровне по сравнению с ним самим.

Дерево может быть представлено как специальный вид направленного графа. Графы - структуры данных, состоящие из узлов связанных дугами. Каждая дуга показывает однонаправленную связь между двумя узлами. Вершина графа называется корнем (рис. 1). Остальные элементы называют узлами иерархии. Узел, связанный с данным узлом и находящийся на более низком уровне в иерархии, называют дочерним узлом или потомком данного узла. Узел, связанный с данным узлом и находящийся на более высоком уровне в иерархии, называют родительским узлом или предком данного узла. Потомки, или дети, родительского узла - все узлы в поддереве, имеющие родительский узел корнем. Узлы дерева, которые не имеют потомков, называют листьями.

Рис. 1 Основные элементы иерархии

В общем случае, дерево называется n-мерным, если его некоторый узел может иметь не больше чем n узлов - потомков.

Все элементы иерархии показаны на рис. 2 – 5.

Рис. 2 Уровни иерархии

Рис. 3 Диаграмма максимального пути

Рис. 4 Глубина пути в иерархии

Рис. 5 Семейство и размерность семейства иерархии

Рис. 6 Стандартное графическое представление иерархии в ОС MS Windows

Другой способ представления иерархий – вложенные множества. Здесь корень дерева это внешнее или объемлющее множество, содержащее все узлы дерева. Каждый узел в дереве рассматривается как множество своих потомков (рис. 6).

Рис. 7 Представление иерархии как набора вложенных множеств

В качестве примеров использования иерархий для моделирования объектов реального мира можно отметить организационные диаграммы (графы), генеалогические деревья, карты как описания географических объектов и т.п.

Для работы с данными этого типа еще в 60-70 гг. прошлого века были разработаны иерархические СУБД, например, IBM IMS выполняющаяся на компьютерах IBM zSeries. Однако подобные продукты в настоящее время в нашей стране не имеют широкого распространения. Другие средства работы с иерархиями предоставляются с XML.

Реляционная модель данных

Реляционные СУБД создавались как метафора данных, наилучшим способом представления которых являются таблицы. Архитектура реляционных баз данных ориентирована на хранение внутри таблиц информации о сущностях и связях между ними. Важной особенностью реляционной модели является наличие простого и мощного языка запросов SQL.

Задача моделирования

В реляционных СУБД организация хранения информации о независимых друг от друга экземплярах сущностей (т.е. так называемых «плоских» данных) не вызывает никаких затруднений. Однако в реляционной модели и языке SQL нет встроенных средств поддержки иерархических структур данных. Практически любая промышленная база данных должна обладать возможностями хранения данных с иерархической организацией. На практике, при построении информационных систем, приходится обеспечивать хранение в реляционной БД информации о «вложенных» друг в друга сущностях, т.е. иерархические данные (самой распространенной иерархической структурой является организационная структура предприятия, в которой отражаются отношения между различными подразделениями и их служащими, представляющиеся при помощи деревьев). Организация хранения такой информации в реляционных БД не очевидна.

Наиболее часто возникают следующие задачи характерные только для иерархий:

  • Определить, находится ли узел А в поддереве, вершиной которого является узел Б.

  • Выбрать непосредственного родителя узла А.

  • Выбрать всех родителей узла А в порядке их уровня в дереве.

  • Выбрать все узлы, находящиеся в поддереве, вершиной которого является узел А.

  • Выбрать все узлы, непосредственным родителем которых является узел А.

  • Определение наиболее близкого общего родителя для узлов А и B.

Кроме того, существуют более сложные задачи, например, задача объединения деревьев, обратная задача – выделение (удаление) поддерева из иерархии, получение количества всех потомков у данного элемента, вычисление того, на каком уровне находится некоторый узел, или требуется получить список всех потомков заданного узла, у которых, в свою очередь, нет потомков и т.п.