Tree/AlFaq

Материал из PhpWiki.

Перейти к: навигация, поиск
 Деревья в базах данных =>  Списки смежности =>  Часто задаваемые вопросы
Часто задаваемые вопросы
  • Можно ли используя списки смежности получить весь путь к заданной вершине?
Можно ли используя списки смежности получить весь путь к заданной вершине?
При заранее определенной глубине дерева можно получить весь путь одним извращенным JOINом. Но это тормозит и слишком изврашенно.

.des.

Не обязательно есть более простые способы с помощью одного SELECTA строится любая ветвь. Ultratree http://www.tourbase.ru/zink/ultratree.php3

su1d .des., ты издеваешься? он же ВСЁ дерево грузит в память, а потом из массивов его строит! Ессно будет один запрос: SELECT * FROM table_name... полный дебилизм.

В модели Adjacency Matrix ты не построишь любую ветвь одним запросом средствами ~MySQL 3.x, так что не морочь новичкам голову.

.des.

Я и не утверждал что это лучший выход. Однако это очень и очень неплохой вариант для .. ну например разделов каталога. Где количество записей и вложенность не очень велика. Грузить все дерево и строить его средствами php зачастую лучше чем рекурсивные select.

Для форума и вообще где счет записей идет на тысячи, десятки, сотни или более естественно с тобой не спорю насчет nested nets.

У каждого решения есть свои ограничения в области применения.

Что касается алгоритмов вообще - взять к примеру сортировку - для маленьких массивов сортировка вставками лучшая. Для экономии памяти на больших массивах - пирамидальная.

su1d

Согласен, но проблема в том, что коллега только-только разбирается в деревьях, и было бы стратегически неправильно учить его сразу худшему методу, подходящему лишь для частных случаев.

Личные инструменты