Проект L.E.S. - технология разработки распределенных приложений для баз данных.

Реализация иерархических структур.

Здесь еще раз приведена схема взаимодействия клиентской и серверной частей.


Рис.1

Компонент,который отображает дерево, представляет собой модифицированный TDbGrid.



Изначально был разработан вариант с составным ключом, но было интересно не ограничивать уровень вложенности узлов.

Каждый узел дерева представлен в базе данных в виде:

    Ид_род     - идентификатор родителя
    Ид         - идентификатор узла
    Уровень    - уровень узла
    Количество - количество сыновей
    
    Как было сказано ранее,процедура(менеджер) должна с определенного места
    "отдать" пакет записей,поэтому внутри нее сидит нерекурсивный алгоритм обхода узлов.
    Для каждого пользователя список открытых узлов свой,поэтому при создании
    табличная сетка запрашивает на сервере создание временной таблицы в которую она записывает
    открытые узлы дерева,а процедура обхода дерева это использует.Временные таблицы уникальны 
    для каждого пользователя.После того как необходимые записи отобраны они передаются клиенту
    в виде "куска" плоской таблицы.Табличная сетка,имея уровень узла, а также информацию о том,
    открыт он или нет и имеет ли сыновей отрисовывает его.
    




Сайт создан в системе uCoz