Макс не думал, что субд тут играет определяющую роль.. MySql, как у всех.
К тому же структура зависит от того какие действия тебе надо будет производить с деревом и отдельными его узлами.
да просто выводить... сделать меню разделов.. ничего такого особенного.
Теоретически, я частично понимаю, как это делается всё - храним ид предка и всего то. Но как это реализовать...
Раздел 1
_Раздел 1.1
__Раздел 1.1.2
__Раздел 1.1.3
___Раздел 1.1.3.1
очевидно надо хранить ид родителей. как например хранить ид родителя 1.1.3.1? (вернее, как получать его??)
В виде строки? Потом парсить эту строку? Я видел такое у коллеги - он смs сделал, там ид родителей в ввиде строк хранились и именно в форме "число-точка-число-точка"...
После немногочисленых раздумий, я надумал такое:
id - auto increment, первичный ключ
Раздел 1 создаём: id=1, parent_id=0
Раздел 2 создаём: id=
2, parent_id=0
Раздел 2.1 создаём: id=3, parent_id=
2Раздел 2.2 создаём: id=
4, parent_id=
2Раздел 2.2.1 создаём: id=
5, parent_id=
4Раздел 2.2.1.1 создаём: id=6, parent_id=
5вот так, как думаете, правильно будет? теперь я могу добавить к любой ветке любой раздел, могу удалить любой раздел... НО! Необходимо учесть, что нужно будет програмно управлять положением разделов в визуальном представлении страницы. Т.е. имея 2 подраздела с одинаковым родителем, но разными id
Раздел 2.1: id=3, parent_id=2
Раздел 2.2: id=4, parent_id=2
нужно будет поднять раздел 2.2 наверх, фактически сделать его разделом 2.1. Как тогда быть?
Тогда есть идея сделать дополнительное поле скажем с timestamp и разделу, который нужно будет "поднять", просто в поле обновить timestamp и отсортировать в порядке убывания по полю timestamp. Так я на ленте новостей делал...
Как вам такие идеи?