
- •Основные понятия и определения Иерархическая модель данных
- •Реляционная модель данных
- •Задача моделирования
- •Три базовых способа моделирования иерархий
- •Рекурсивный способ представления иерархии
- •Задачи повышенной сложности
- •Способ правого и левого коэффициентов
- •Такой запрос применять не следует
- •Задачи повышенной сложности
- •Способ вспомогательной таблицы
- •Два важных частных случая
- •Случай ограниченного количества уровней иерархии
- •Случай ограниченного числа потомков
- •Заключение
- •Библиографический список
- •620002, Екатеринбург, ул. Мира, 19
Федеральное агентство по образованию
ГОУ ВПО «Уральский государственный технический университет – УПИ»
Д.Г. Ермаков
МОДЕЛИРОВАНИЕ ИЕРАРХИЧЕСКИХ ОБЪЕКТОВ СРЕДСТВАМИ РЕЛЯЦИОННЫХ СУБД
Учебно-методическое пособие
Екатеринбург
УДК
ББК
И 5
Автор: Д.Г. Ермаков
И 5 Моделирование иерархических объектов средствами реляционных СУБД: учебно-методическое пособие/ Д.Г. Ермаков.
Екатеринбург: ГОУ ВПО УГТУ-УПИ, 2007. 109 с.
Учебно-методическое пособие содержит сведения о способах моделирования произвольных абстрактных иерархических объектов (деревьев) средствами реляционных СУБД. Описаны базовые способы отображения абстрактных иерархических структур в реляционные структуры данных: рекурсивный, правого и левого коэффициентов, вспомогательной таблицы. Для каждого из способов рассмотрены возможности выполнения операций выборки поддерева, нахождения корневых элементов и листьев деревьев, добавления элементов в иерархии и их удаления.
Также рассматриваются два частных случая: иерархия с ограниченным количеством уровней и иерархия с ограниченным количеством потомков для всех узлов.
Пособие содержит варианты заданий для самостоятельной работы по данной теме.
Для использования данного пособия от студентов требуется представление о реляционной СУБД и знание языка SQL.
Пособие предназначено для студентов второго курса всех специальностей факультета ИМТЭМ дневной формы обучения. Пособие составлено в соответствии с программой курса «Базы данных» и может быть использовано для самостоятельного изучения соответствующего раздела учебного курса. Также возможно использование данного пособия при изучении курса «Управление данными».
Библиогр.: 11 назв. Табл. 16. Рис. 86.
Печатается по решению редакционно-издательского совета УГТУ-УПИ.
ГОУ ВПО «Уральский
государственный технический
университет –
УПИ»,
Основные понятия и определения Иерархическая модель данных
Дерево может быть определено как иерархия узлов с попарными связями, в которой:
самый верхний уровень иерархии имеет единственный узел, называемый корнем;
каждый узел, кроме корня, связан с одним и только одним узлом находящемся на более высоком уровне по сравнению с ним самим.
Дерево может быть представлено как специальный вид направленного графа. Графы - структуры данных, состоящие из узлов связанных дугами. Каждая дуга показывает однонаправленную связь между двумя узлами. Вершина графа называется корнем (рис. 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.
Кроме того, существуют более сложные задачи, например, задача объединения деревьев, обратная задача – выделение (удаление) поддерева из иерархии, получение количества всех потомков у данного элемента, вычисление того, на каком уровне находится некоторый узел, или требуется получить список всех потомков заданного узла, у которых, в свою очередь, нет потомков и т.п.