Реферат: Иерархические структуры данных в реляционных БД
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
Бесплатно скачать Реферат: Иерархические структуры данных в реляционных БД
|