Реферат: Иерархические структуры данных в реляционных БД
union
select "ID",'2' as "LEVEL" from CATALOG3_LEVEL3 where PARENT_ID = 1
Ввод дополнительного поля LEVEL в запрос обусловлен тем, что потомки элемента в разных таблицах могут иметь одинаковые ID и при объединении запросов вместо нескольких строк в результате будет получена одна. Еще одна проблема, приводящая к необходимости ввода дополнительного поля в запрос, т.к. надо знать, из какой таблицы выбран данный ID.
структура с поразрядным ключом
В данной структуре содержится информация о полном пути к элементу. Это облегчает выборку всех потомков.
Левый ключ
Для первого корневого элемента диапазон ID потомков будет 10001… 19999, для второго 20001…29999 и т.д.
Правый ключ
Ну, здесь тоже все просто. Первый элемент иерархии ID = 1, на втором уровне его первый предок 11 и т.д. Таким образом, потомки будут иметь в конце ID цифры, совпадающие с ID предка.
структура с хранением границ ветви
Элементы структуры LOW и HIGH хранят границы диапазона первичных ключей всех потомков.
Получения уровня вложенности элемента
Часто уровень вложенности элемента иерархии привязан к какому-либо классификационному признаку предметной области. Отсюда возникает задача определения уровня вложенности произвольного элемента.
структура со ссылкой на предка, структура с хранением границ ветви
Построение полного пути к корню дерева и определение числа предков. Довольно неудобно, но другого способа нет.
структура со ссылкой на предка и хранением уровня вложенности
Недаром мы ввели поле для хранения уровня вложенности. Оно-то и содержит нужную нам информацию.
структура с потабличным хранением уровней
Уровень вложенности определяется таблицей, в которой хранится запись об элементе.
структура с поразрядным ключом
Уровень вложенности определяется положением последнего ненулевого разряда в ключе.
Получения полного пути от элемента до корня иерархии
структура со ссылкой на предка и ее модификация с поддержкой информации об уровне элемента, структура с хранением границ ветви
Опять же, для вычисления полного пути нужно получать предков с помощью последовательных запросов. Одним простым запросом здесь не обойтись. Ниже приведен текст хранимой процедуры получения полного пути от произвольного элемента:
CREATE PROCEDURE GET_PARENTS (ID INTEGER) RETURNS (E_ID INTEGER, NAME CHAR(200)) AS declare variable P_ID integer; BEGIN К-во Просмотров: 217
Бесплатно скачать Реферат: Иерархические структуры данных в реляционных БД
|