GudGuy тут ведь как... можно по-разному реализовывать. можно выдавать только корень дерева, а подкатегории загружать с помощью технологии ajax и отрисовывать соответственно. а если пришли на какой-то конкретный товар, то под него и отрисовать дерево по вложениям. а так, если посещаемость будет большой, то дерево или хранить в виде статики, если меняется редко, или использовать технологии типа memcache и делать только insert / update запросы к базе и перезаписывать полный массив дерева в memcache'е. Единственное, в этом случае не забудь, что поисковики не умеют получать данные с помощью ajax и предусмотри для них возможность прямого перехода по ссылкам. HTML: <a href="/catalog/1/44/1759/list.html" onclick="load_list('1759'); return false;">подкаталог 1759</a>
Все "если" можно опустить, когда вопрос сформулирован предельно точно. KISS - Keep It Simple,Stupid, один из моих любимых принципов. Другое дело что в вопросе я так и не увидел концепции и чётко поставленной задачи, поэтому привёл самый простой вариант создания дерева. Все остальные посты сводятся к обмусоливанию понятия "дерево", хотя никто так и не задался вопросом какую именно CRUD операцию необходимо оптимизировать (create/insert,retrivе,update,delete) или достигнуть определённого баланса ? Есть сотни различных алгоритмов, подходящих для различных задач, но все они упираются в одни и те же операции, создавая тот или иной баланс системы.