Общие > Базы данных
Обсуждение статьи ДЕРЕВО КАТАЛОГОВ NESTED SETS (ВЛОЖЕННЫЕ МНОЖЕСТВА) И УПРАВЛЕНИЕ ИМ
Phoinix:
Сама статья находится по адресу:
http://www.webscript.ru/stories/04/09/01/8197045
Вообщем я смотрю у народа начали возникать вопросы по поводу организации деревьев Nested Sets, поэтому я думаю все таки поместить обсуждение суда, так как в комментах, это несколько не удобно...
Последний комментарий
--- Цитировать ---Dmitry Zlygin пишет 09.09.2004 @ 19:13
Не пинайте сильно, но из статьи не понял сути организации такого дерева. Что за поля такие, на что ссылаются? Что такое правый ключ, левый ключ, что они обозначают? Зачем применяется уровень? Статья явно рассчитана на тех, кто уже знает Nested Sets. Я не знаю, и, думаю, что не один в своем незнании. Man что?
Нормальные FOREIGN KEYS определить нельзя, хотя бы в терминах распространенного PostgreSQL?
Как сейчас есть - одна из самый бестолковых статей на сайте (не в обиду будет сказано).
--- Конец цитаты ---
1. "Что за поля такие, на что ссылаются?" - Обычные поля тип - INT(), никуда не ссылаются ;).
2. В них (правый и левый ключ) хранится информация о дереве. Так же по ним выбираются диапазоны дерева, и сортировка (по левому ключу);
3. Уровень применяется для удобства, что бы видеть на каком уровне находится узел, а так же для упрошения выбора родительского и подчиненных узлов;
4. Статья явно расчитана на тех, кто хоть когда имел опыт работы с деревьями, первый раздел посвящен именно организации, если информации там не хватает, то: man Google, man yandex;
5. Что значит нормальные FOREIGN KEYS? Есть еще и не нормальные ;)? И собсвенно не понял этой фразы. На протяжении всей статьи мы работаем с одной таблицей, и куда прилепить FOREING KEYS в статье, ума не приложу... Если же ты хочешь прицепить еще одну таблицу, то вперед, поле ID в дереве которое PRIMARY KEY никто не отменял...
[OFF]А вот насчет бестолковости, я бы не был столь критичен... Вы собственно кто? что бы делать такие утверждения? Очередной Победитель региональной олимпиады по программированию???[/OFF]
P.S. Собственно, все комментарии и вопросы по статье наверно лучше выкладывать сюда...
NeoNox:
Phoinix не заморачивайся. Парень просто не в теме и ему обидно стало за свою недалекость. Когда возникнет задача - откопает и еще спасибо скажет.
Phoinix:
NeoNox
Да нет... просто сама по себе тема интересная, я сам некоторое время использовал принцип построения дерева:
| id | paretn_id | name | ... |
И имел довольно большой гемморой, пока случайно не натолкнулся на Nested Sets... Хотя решение было написано для PHP, перевести на Perl было не долго...
Но мне не понравился класс PHP cdbtree, в части переноса узлов. Поэтому я сделал свое решение, которое позволяет 1 запросом перемещать узел в любую точку дерева...
Интересен факт, что мои знакомые программисты, которые не используют подобный принцип построения деревьев, видят в нем удобство, но не могут перейти в силу того, что прийдется изменять очень много своих наработок. Поэтому хочется что бы начинающие пользователи все-таки поняли идею, и применяли её в дальнейшем, и меньше наступали на грабли. А то что это им прийдется "вдалбливать", я думаю, ты знаешь лучше меня... ;)
APL:
Вот подробная и понятная статья:
http://www.pyaticom.ru/article/004/
Croaker:
APL
[OFF]Вообще-то эта статья та же самая.[/OFF]
Навигация
Перейти к полной версии