|
|
|
| есть такая задача:
допустим есть иерархическое дерево родителей и потомков. При обращении к какому-либо объекту этого дерева необходимо увидеть не только его потомков, но и потомков их потомков (так сказать правнуков и проправнуков) до самого конца.
У меня сразу возникает вопрос, как логически организовать структуру такой базы?
Давайте обсудим все варианты и найдём оптимальный! | |
|
|
|
|
|
|
|
для: pengo
(11.07.2006 в 15:00)
| | Да собственно варант тут один добавить поле, в котором хранить ссылку на родительский элемент, а выводить всё рекурсивной функцией. Подробнее можно почитать в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=701. | |
|
|
|
|
|
|
|
для: cheops
(11.07.2006 в 15:22)
| | Спасибо. Только я хотелбы уточнить. Для создания такой базы нужна всего одна таблица, ведь есчё необходимо хранить какието данные об этих объектах. | |
|
|
|
|
|
|
|
для: pengo
(11.07.2006 в 16:17)
| | Нет не обязательно одна - смысл тот, что для организации иерархии объектов можно использовать одну таблицу - а свойства объектов вы можете хранить в другой таблице (таблицах), как вам будет удобнее. | |
|
|
|
|
|
|
|
для: cheops
(11.07.2006 в 15:22)
| | Этот вариант не единственный но, пожалуй, самый распространенный. | |
|
|
|
|
|
|
|
для: cheops
(11.07.2006 в 15:22)
| | >Да собственно варант тут один добавить поле, в котором
>хранить ссылку на родительский элемент, а выводить всё
>рекурсивной функцией. Подробнее можно почитать в теме по
>ссылке
>http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=701.
почитал форум по приведённой вами ссылке. Я не очень силён (пока) в MySql и мне хотелось бы посмотреть на приблизительный SQL-запрос, который бы выбирал из базы всех предков своего родителя, и не в хаотическом виде, а в определённой последовательности, скажем от высшего к низшему, чтобы можно было отследить связь.
Все статьи, которые я прочитал по этому вопросу, описывают SQL-запросы со вложенными процедурами. MySql, на сколько я знаю, их не поддерживает или поддерживает частично.
Как быть? | |
|
|
|