Ich weiss nicht ob
MySQL das kann, aber ich würde einen Foreign Key von parent auf ID legen mit der option Delete Cascade und Update Cascade.
Damit referenziert der Foreign Key auf sich selber. Löscht Du jetzt einen Eintrag werden alle abhängigen Datensätze gelöscht, bis zum letzten Zweig.
Ein zusätzlicher Efekt ist auch, dass die Referenz zum Parent geprüft wird beim Insert. So hast bekommst Du Keine "blinden" Einträge.
Gruß Borwin