chelkaz
@chelkaz

Бесконечная вложенность — Категории-Подкатегории, какая структура MySql И как вывести рекурсивно?

На данные момент сделал одну таблицу для хранения всех (категорий и подкатегорий)
Определяющее поле таблицы сделал parent
Думаю логически, так как у каждой записи можно получить родителя. Но не пойму правильно ли это для бесконечной вложенности?
Да и не могу понять, как рекурсивно получить дерево?
Например я получил категорию и проверил есть ли у нее родитель parent и если есть, то проверить его и так далее... Как это сделать и например 1000 записей в таблице, то как это сделать, что бы с минимумом запросов и нагрузкой? Может по другому логику хранения нужно делать?
  • Вопрос задан
  • 1209 просмотров
Пригласить эксперта
Ответы на вопрос 4
riky
@riky
Laravel
если хотите минимум запросов используйте более продвинутые структуры хрнения деревьев
nested sets
materialized path
etc...
Ответ написан
Комментировать
@karminski
Senior React.JS Developer
Ответ написан
Комментировать
trevoga_su
@trevoga_su
лень писать под конец дня..
при твой структуре хороший вариант - написать cron который будет делать денормализацию. например, хранить ID потомков узла и/или всех потомков узла. таким образом, сокращается кол-во sql запросов и остается будет только рекурсивно пробежать по массиву данных и отсортировать дерево.

т.е. у категории 1 потомки 2,3,4,5,6,7,8,9,10,11
у категории 2 потомки 5,6,7,89,10,11
у категории 5 потомки 7,89,10,11

и т.д.

и что бы получить потомков узла 1 достаточно написать select * from t where id in (2,3,4,5,6,7,8,9,10,11)

а далее - сортировка на уровне php
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы