1. Получаем массив помеченных на удаление (МПУ).
2. Берем первый элемент из МПУ, и будем формировать группу на удаление (ГНУ).
Т.е. помещаем элемент в ГНУ.
3. Ищем в базе ссылки на ГНУ. Если среди них есть не помеченные на удаление, то элемент заносим в пропущенные и удаляем из МПУ. Переходим к п.1
4. Если все найденные ссылки также помечены на удаление, то добавляем их в ГНУ.
5. Если в ГНУ появились новые сслыки, то переходим к п.3.
6. Если новых ссылок не появилось, т.е. ГНУ ссылается на себя и все эл-ты ГНУ помеч. на удаление, то можно непосредственно удалять из базы данных всю группу. Что и делается в транзакции. Далее удаляем обработанный элемент из МПУ и переходим к п.1.
Папка служебных файлов хранит лог сообщений и таблицу с пропущенными объектами.
По кнопке "Прочитать" можно увидеть в таблице пропущенные объекты и поработать с ними.
Обработка открыта. Ответственность за работу обработки в вашей базе вы берете на себя.