| 
 
  | Apache.RU - Webboard
 
  Вернуться 
  Многоуровневый каталог (Виктор) 13/07 - 14:59:36 
  Re: Многоуровневый каталог (Alec) 13/07 - 15:27:58 
  Re: Многоуровневый каталог (Валентин) 13/07 - 16:44:16 
  Re: Многоуровневый каталог (Андрей) 14/07 - 11:52:08 
  Re: Несколько способов (Sam<un_sem@hotmail>) 14/07 - 14:38:26 
  Re: Несколько способов (Валентин) 14/07 - 16:09:48 
  Re: Несколько способов (Виктор) 14/07 - 16:47:28 
  Re: Несколько способов (Aleksandr Ognev) 16/08 - 13:55:33 
  Re: Несколько способов (Владимир) 23/03 - 11:06:07 
 > Original message text:
 > From: 
> Виктор - 13/07 - 14:59:36
 > Subject:Многоуровневый каталог
 > -----------------
 > Джентельмены!
 >
 > простая задача - нужно хранить в БД каталог, потенциально большого размера (более десятка тысяч записей, чем и обуслевлено требование хранения в бд) произвольного уровня вложенности с быстрым доступом к произвольным данным.
 >
 > Я взял за основу ссылку на родителя элемента и пытаюсь строить часть дерева.
 >
 > структура таблицы:
 > ID
 > parentID
 > hasChilds
 >
 > nodeName
 > value
 >
 > последние два определяют данные элемента каталога, а дерево получается за счет связки ID-parentID. hasChilds стопер, обновляется при добавлени и удалении елементов для parentID.
 >
 > Как я строю меню по этому дереву
 > 1) нахожу текущий элемент, например, по значению (один запрос)
 > 2) строю цепочку его родителей к корню (по parentID), чтобы активировать всю ветвь (отдельный запрос на каждый елемент :( )
 > 3)затем нахожу всех соседей, т.е детей parentID (еще один запрос).
 >
 > есть ли более быстрая схема? Можно ли и стоит ли упаковывать шаг 2 в один запрос (и собственно как :) )?
 >
 
 
 From: 
Виктор - 14/07 - 16:47:28
 Subject:Несколько способов
 -----------------
 самым быстрым вариантом, сдается мне, будет применение маски, поскольку она уже содержит в себе информацию о наикратчайшем пути по ветви.
 
 И найдя текущий активный элемент, можно разобрав его идентификатор, без обращения к базе, занести в массив идентификаторы активных предков, с которыми потом сверяться при их выводе. Т.е. реальная экономия на получении информации о пути по дереву, и строится все одним проходом.
 
 Правда, в данном случае, неудобно двигать ветви - один parentID уже не заменить, нужно менять всех потомков (хотя, кажется, это можно сделать одним апдейтом), но все-таки быстрый вывод важнее - перемещение ветви, наверное, одно на тысячу или более показов.
 
 кажется, это наиболее оптимальный вариант.
 
 
 [Это сообщение - спам!]
 
 Последние сообщения из форума
 
 16825
 
 
 
 |  
 |