Дошло дело. Нужно организовать категории неограниченной вложенности. Принципиально, стандартная функция во многих движках. Но вот вопросы организации такого в базах встречаются разные.
В общем, чтобы не тратить лишнее время, полез в движки смотреть, как умные люди делают. И немного офигел. Везде по-разному. У одних это все находится в одной таблице. В другом все лежит в одной, кроме зависимостей с родителями. Это вынесено в отдельную. В третьей все разнесено на 5 таблиц. В общем, к однозначному решению никак не удалось прийти.
Мне же все видится достаточно тривиально. Три столбца. ID категории, ID родителя, Имя категории. Если ID родителя равно 0, то это корневая. Если нет, строим дерево, поднимаясь наверх.
Но я не мега гуру. Я допускаю, что чего то не учел. Отсюда и вопрос: какая форма построения зависимостей среди категорий наиболее приемлема?
тогда удобно для выбора «все потомки этого узла» — вложенные множества.
а для выбора «все потомки поколения M» — таблица(IDпредка, IDпотомка, длинаСвязи).
и т.п. какие путешествия по дереву наиболее частые?
Почитал, интересно, но там дикие объемы данных предусматриваются. Я не исключаю масштабирование, но чтобы тормоза при выборке стали критичными нужно гигабайты записей собрать.