"картинка для примера" напомню, очень большая дерева будет задумался, стоит ли это реализовать в PHP+MySQL или есть лучший способ?
RINDAMAN реализовывать что? Если вам нужно иметь некий объект языка или расположить такую структуру в базе - то нечего тут реализовывать. Если хочется такие картинки рисовать - то кхм, попробуйте
смысле правильную структуру в MySQl и скрипт чтоб для вывода (скрипт можно теоретический если не существует написанных примеров)
теперь вопрос такой рождается допустим, есть база Code: 1 | 1 | аа 2 | 1 | аб 4001 | 20 | ав 4002 | 21 | ад 4497 | 34 | ае 4498 | 35 | аз в какой-то прекрасный день узнаем что пропустили имя "аг", а у нее ид должна быть 4002, как тогда все ИД передвинуть вниз? (и возможно наоборот)
Расставить заново индексы: Code: ==== ALTER TABLE table DROP `id`; ALTER TABLE table ADD `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; ALTER TABLE table ADD INDEX (`id`); ====
RINDAMAN ID - никому ничего не должно, это просто идентификатор. Не пытайтесь добавлять какую-то логику, которая обяжет вас хранить идентификаторы в определенном порядке - это гиблая затея
нет тут ничего необычного, а то что «в какой-то прекрасный день узнаем что пропустили имя "аг", а у нее ид должна быть 4002» так бред вообще какой-то. для сортировки нужно использовать другие поля, позиция не должна привязываться к какому-либо идентификатору.
Есть более удобный способ хранения для деревьев, где нужно часто перемещать узлы - Nested sets: http://webscript.ru/stories/04/09/01/8197045 http://habrahabr.ru/tag/nested%20set/
что скажется насчет этого: сначала сделать много ветвей а потом их расставить по местам, т.е. построит дерево думаю так будет правильно?
+ к этому, время поиска улучиться за счет не большой информации на каждой таблице или может я ошибаюсь