Классика баз данных - статьи

       

Ни для кого не секрет,


Ни для кого не секрет, что динамические деревья существуют уже давно, и активно используются в различных задачах, однако рискну предложить вам новый взгляд на способы формирования и работы такого дерева применительно к базам данных.

На приведен пример работающего приложения.

Это приложение напоминает всем известный Проводник в операционной системе Windows. Ничего оригинального в плане внешнего вида здесь нет, оригинальность идеи заключается именно в самой методике построении дерева. Как уже было указано – дерево динамическое. То есть, оно строится на основании информации содержащейся в базе данных. Структура такого дерева хранится в отдельной таблице, и, что очень важно, эта таблица не содержит самих данных, она хранит только структуру представления данных. Повторюсь еще раз – хранится только структура представления данных, которая не содержит самих данных. Данные, которые нужно отображать лежат в своих таблицах и ничего не знают о том, как их будут отображать и не имеют каких либо связей со структурой отображения.

Структура представления данных хранится в очень простом виде – в виде таблицы состоящей из элементов – узлов дерева. Каждый элемент таблицы хранит SQL запрос на получение дочерних элементов относительно текущего элемента и несколько дополнительных свойств элемента, которых мы коснемся ниже.

Проще всего пояснить работу такого дерева на примере. Рассмотрим формирование дерева на примере списка трестов (см. ).

Предположим, что мы находимся на разделе дерева Тресты и нам нужно получить список всех трестов. В этом случае пользователь нажимает мышкой на крестик рядом с узлом Тресты или нажимает стрелку вправо – то есть выполняет стандартное действие разворота дерева. При этом система определяет SQL – запрос, который связан с элементом Тресты и выполняет его. Для более ясного представления структуры запроса приведем его текст:

select 5 as IdType, ‘Id_Trust’ as IdName, Id_Trust as IdValue, to_char (Id_Trust) ' - ' name as Name ‘Trust’ as Icon from Main.Trust order by Id_Trust asc


Содержание  Назад  Вперед