Für all Ihre Bedürfnisse sollten Sie diese Struktur nehmen
CREATE TABLE `menus` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`parent_id` int(11) unsigned DEFAULT NULL,
`label` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `fk_parent_menu` (`parent_id`),
CONSTRAINT `fk_parent_menu` FOREIGN KEY (`parent_id`)
REFERENCES `menus` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
);
Demo zeigt das Einfügen und Löschen eines übergeordneten Knotens
Der Magic-Drop-Teil für alle Kinder wird von ON DELETE CASCADE
erledigt