Реферат: Иерархические структуры данных в реляционных БД

WHILE (ID > 0) DO

BEGIN

SELECT C.ID, C.PARENT_ID, C.NAME

FROM CATALOG C

WHERE ID = :ID

INTO :E_ID, :P_ID,:NAME;

ID=P_ID;

SUSPEND;

END

END ^

структура с потабличным хранением уровней, структура с поразрядным ключом

Полный путь содержится в первичном ключе элемента.

Операции вставки, удаления, перемещения элемента и его потомков

структура со ссылкой на предка

Добавление нового элемента:

insert into “CATALOG”(“name”,”parent_id”) values( _win1251 ‘Новый элемент’, <значение первичного ключа предка>);

Удаление элемента: Кроме непосредственно самого элемента необходимо удалить и его потомков. Проблема решается введением триггера:

CREATE TRIGGER "CATALOG_AFTER_DEL" FOR "CATALOG"

ACTIVE AFTER DELETE POSITION 0

AS

BEGIN

delete from "CATALOG" where "PARENT_ID" = OLD."ID";

END ^

Перемещение элемента: надо просто поменять ссылку на родителя.

UPDATE “CATALOG” SET “PARENT_ID” = <Значение первичного ключа нового родителя> WHERE “ID” = <Значение первичного ключа элемента>

структура со ссылкой на предка и поддержкой уровней

Можно использовать запросы, аналогичные случаю с базовой структурой. Для проверки корректности поля Level можно ввести дополнительные триггеры:

CREATE EXCEPTION "WRONG_LEVEL" 'Неверный уровень вложенности элемента';

/*

Триггер перед вставкой записи в таблицу - проверяет корректность поля Level и формиррует ID записи

*/

К-во Просмотров: 218
Бесплатно скачать Реферат: Иерархические структуры данных в реляционных БД