Exposé de la situation :
Une base de données pour représenter un arbre, 0 comme PARENT indique la racine, un autre nombre indique que l'élément possède un autre élément parent :
Code :
- ID | PARENT | DATA
- 1 | 0 | texte1
- 2 | 1 | texte2
- 3 | 2 | texte3
|
Ce qui donne l'arbre suivant :
Code :
- texte 1
- |-texte2
- |-texte3
|
Le problème :
Supposons que je modifie le PARENT de 1 de la manière suivante :
Code :
- ID | PARENT | DATA
- 1 | 3 | texte1
- 2 | 1 | texte2
- 3 | 2 | texte3
|
Voila qui me fait perdre ma racine et par conséquent l'ensemble de ma structure logique en créant une boucle.
La question :
Quelle méthode efficace existe-il pour détecter la circularité et empêcher que celà puisse se produire lors d'un UPDATE ? Existe-il une meilleure solution de représenter un arbre ?
Note : c'est pour un code en PHP, mais en fin de compte peu importe le langage.
Message édité par Requin le 09-05-2004 à 19:21:31