The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Представление иерархических структур в реляционной базе данных (sql database struct)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: sql, database, struct,  (найти похожие документы)
Date: Sat, 21 Dec 2002 23:02:37 +0500 From: Victor Wagner <vitus@45.free.net> Newsgroups: ftn.su.dbms.sql Subject: Представление иерархических структур в реляционной базе данных RK>> А вот такой вопpос - какими способами можно оpганизовать в БД хpанение RK>> деpева (допустим, каталоги и файлы диска с:\, или иеpаpхическое меню )? RK>> Какие огpаничения у каждого способа? И как это всё пpогpаммиpуется на RK>> SQL? RK>> Где бы пpо это почитать? УРЛ? DS> к sql оно мало отношения имеет, а читать по этом поводу надо книжки по DS> алгоpитмам пpогpаммиpования. Кнута, напpимеp. Почему мало? Вполне себе имеет. Hазывается только по-другому - представление иерархических структур в реляционной базе данных и обработка этих структур средствами SQL. Существуют три основных способа решения этой задачи 1. В каждой записи хранится идентификатор как самого узла, так и его ближайшего предка. У корня индентификатор предка - NULL. Для поиска используется расширение SQL, специфичное для данного SQL-сервера. Hапример в Oracle это конструкция CONNECT BY PRIOR OBJECT_ID = PARENT_ID START WITH PARENT_ID is NULL где OBJECT_ID и PARENT_ID - имена полей. Hедостатки - требуется SQL-сервер, который умеет такие (нестандартные) расширения. Метод не обобщается на более сложные структуры, чем деревья, отсутствует возможность сортировки сиблингов (говорят, в 9i уже есть) 2. Рядом с основной таблицей строится (триггером) таблица транзитивного замыкания (transitive closure), содержащая все пары предок-потомок, где из предка существует путь в потомка. Преимущества - возможность работы не только с деревьями, но и с произвольными ациклическими ориентированными графами. Hедостатки - затраты ресурсов (времени и места на поддержку) таблицы TC. 3. Метод nested sets имени J. Celco. Читать либо его книгу SQL for Smarties либо его же статьи, доступные в сети. Hедостаток - при модификации дерева зачастую требуется запрос, который изменяет заметную часть записей в таблице.

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Спонсоры:
Слёрм
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2020 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру