Mysql удалить потомков

У меня есть таблица изображений, и у этих изображений будут различные потомки, такие как миниатюры, версии разных размеров, и кадрирование (и превью этих культур) и т. Д.

Это означает, что у каждого исходного изображения может быть довольно много потомков. На этих потомков ссылается поле parent_id, которое дает прямого родителя.

Каков будет лучший и наиболее эффективный способ сделать это, так как очевидно, что выбор всех дочерних элементов для каждого изображения / уровня и последующее их удаление будет довольно трудоемким, если есть пакетное удаление изображений?

2 ответа

Решение

То, на что вам нужно обратить внимание... это каскадное удаление.

Эта статья с сайта MySQL должна помочь вам.

http://dev.mysql.com/tech-resources/articles/mysql-enforcing-foreign-keys.html

Используйте внешние ключи InnoDB - и свяжите parent_id с id с опцией каскадного удаления

Или используйте разные древовидные индексы, чтобы избежать рекурсии. Например, модель вложенного набора, как описано в разделе "Управление иерархическими данными в MySQL".

Другие вопросы по тегам