Вложенность дерева

Leshas0

Новичок
Вложенность дерева

Есть таблица tree со следующей стандартной структурой:
id | parent_id | name

Рекурсия - это хорошо, дерево строиться правильно, но мне нужно посчитать глубину дерева.

Как узнать вложенность дерева?
 

_vampiro_

Новичок
Leshas0
Вложенность дерева во что? :)

Может глубину ветки определенной? по кол-ву вызовов рекурсивной функции для её построения.
 

Leshas0

Новичок
Хорошо, перфразирую)
Мне нужно узнать глубину ветки, у которой parent_id = 0
 

Leshas0

Новичок
нет, ничего нового не ввели.
ответ не могу получить, никто не знает как узнать глубину любой ветки?
 

Gorynych

Посетитель PHP-Клуба
Leshas0
при такой структуре таблица не приспособлена для того, чтобы простым и односложным образом работать с ветвями.
 

Leshas0

Новичок
Gorynych
а что нужно сделать, чтобы приспособить таблицу? или вообще, как это можно реализовать? какими способами?
 

_vampiro_

Новичок
можно добавить поле (сюрприз!) "уровень вложенности". и пересчитывать его при модификации дерева. Можно хранить в поле всех родителей через запятую... По форуму полазать-можно еще найти методы. часто обсуждается тема.
 

Leshas0

Новичок
Была идея про поле "Сюрприз", но мне показалось, что это не слишком хорошая идея.
 

Gorynych

Посетитель PHP-Клуба
2 Leshas0: собственно _vampiro_ уже написал, что можно сделать.

ответ на вопрос что именно из возможных решений стоит применять зависит от того, какие операции вы хотите (предполагаете) совершать над таблицей и как часто?

например, глубину дерева можно хранить в отдельном поле и тогда ответить на вопрос: "какова глубина?" - будет очень легко.

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

Leshas0

Новичок
Gorynych, дерево модифицироваться будет очень НЕчасто. В принципе, идея хранить информацию о глубине ветки в отдельном поле - хорошая. Пожалуй, буду использовать именно этот алгоритм. Спасибо.
 

WP

^_^
Leshas0
Структура называется "brain dead method", а не "стандартная".
Открой для себя Nested Sets.
 
Сверху