| |||||
|
Деревья в базах данных => Примеры скриптов => Id раздела по URL Как найти id раздела по URLВ базе хранятся в виде Nested Sets разделы сайта. Пользователь набрал скажем /info/news/archive/. Как наиболее эффективно вычислить id этого раздела? Для решения этой задачи важна ТОЛЬКО возможность быстрой проверки, является ли одна вершина непосредственным ребенком другой. Эта проверка выполняется одинаково быстро как в списках смежности, так и во вложенных множествах. Поэтому c точки зрения быстродействия для решения этой задачи не имеет никакого значения, хранятся ли деревья в виде Nested Sets, либо они хранятся в виде Adjacency Lists.
На вход следующей функции подается путь (строка) в виде: Функция text_top_id() возвращает идентификатор самого верхнего узла дерева. В таблице t_text_data хранится описание вершины дерева (имя файла – s_file, идентификатор текста – k_text). В этой таблице должен быть индекс по полю s_file. В таблице t_text_tree хранится собственно дерево Nested Set (i_id – идентификатор вершины, который соответствует идентификатору текста k_text; i_left, i_right – левое и правое значение узла; i_level – уровень).
<?phpЗамечание Эта функция работает на деревьях с ограниченной глубиной вложенности. Ограничение связано с количеством таблиц, которые можно использовать в разделе FROM оператора SELECT.
Один комментарий.
[Показать комментарии/форму]
| |||||