Toon posts:

[MySQL] boom structuur verwijderen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een database waar data in een soort van boom structuur wordt opgeslagen, de database ziet er als volgt uit:
id - INT
parentid - INT
naam - CHAR (niet belangrijk maar toch)
data - BLOB (niet belangrijk maar toch)

Zoals een ieder mischien zal opmerking is dit een soort van directory structuur...

Nou is mijn vraag hoe kan ik zo'n als ik een bepaald ID verwijder alle onderliggende id's op een zo makkelijk mogenlijk manier verwijderen (zonder sub/embedded-queries aangezien MySQL dit niet ondersteunt).

De oplossing die ik nu kan bedenken is:

Door de hele boom struktuur LOOPEN en vanaf de 'laatste' tak verwijderen enkel zou dit betekenen dat ik per delete opdracht op de root van de tree minimaal zown 1000 queries per delete moet doen en dat is net niet wat ik wil :(

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Je zult (helaas) wel lastig moeten doen.

Wat je gelukkig nog wel kan doen is uiteindelijk een query ala:
delete from boom where parentid IN (id1, id2, ...)

Dan hoef je iig niet alle laatste takken af te gaan (als dit makkelijk te vinden is).

Verwijderd

Maar als je dat doet dan worden dus niet alle subnodes van die node verwijderd, dus dit kun je alleen doen als je zeker weet dat de boom na die node geen vertakkingen meer heeft.

Je zult dus wel veel queries uit moeten voeren.