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