У меня есть система файлов и папок. В данном контексте - папка и файл некое структурированное значение в БД. Я хочу сделать удаление папки. Для этого мне нужно узнать все ID файлов и папок, которые могут находится внутри удаляемой папки.
Моя таблица folders:
id folder_id 1 0
Моя таблица files
id folder_id 1 0
Например папка folder_id 90 может находится в folder_id 100, а та в свою очередь может находится в десятках других.
Как мне получить все связанные таким образом значения из таблицы mySQL методами php ?
Есть несколько способов хранения иерархических структур в БД:
Adjacency List («список смежности») Для каждой записи хранится id родителя. Вся ветка вычисляется рекурсивными запросами. Подходит для небольшой вложенности. Требуется много запросов к бд
Materialized Path («материализованный путь») В каждой записи хранится длинная строка, содержащая все id родителей с неким разделителем
Nested Sets («вложенные множества») В каждой записи хранится пара колонок lft и rgt, хранящие диапазон всех вложенных элементов. Можно быстро получить всю ветку, но много накладных расходов на вставку новой записи или перемещение её между ветками.
Closure Table («таблица связей») В отдельной таблице хранятся все связи родитель-потомок. Быстрое получение нужной ветки, но большое кол-во записей связей. Сложности с выводом отсортированного дерева
Существует множество реализаций данных алгоритмов как в php, так и непосредственно в хранимых процедурах mySQL.
Преимущества и недостатки каждого из способов надо рассматривать вместе с требованиями к конкретному проекту
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Вернее, обработчик один, но много запросов идут вместе (телеграмм бот)Заметил, что в логе в пиковые моменты далеко не вся информация записана,...
Laravel требует чтобы были установлены следующие php расширения:
Я новичок в джаве и вот мой код: