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