|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Développeur informatique Inscription : mai 2006 Messages : 30 ![]() |
Bonjour
J'ai besoin de gérer une structure arborescente dans une table. Chaque élément de la table a une clé primaire qui l'identifie et une clé étrangère qui pointe vers son parent. Mon problème est : comment créer la racine qui n'a pas de parent et donc viole la contrainte sur la clé étrangère ? La seule mauvaise solution que j'ai trouvée, c'est de ne pas mettre de contrainte. Mais ce n'est pas satisfaisant. Problème annexe: comment autoriser les suppressions de feuilles et de branches tout en empéchant la suppression de la racine ? Cordialement |
|
|
00
|
|
|
#2 |
|
Membre émérite
![]() ![]() |
Salut,
J'ai une structure semblble au tiens : Une Table TARTICLE qui contient ART_REF et ART_SUBSTITUT. J'ai mis une Foreign key sur ART_SUBSTITUT qui pointe vers ART_REF. Mais ART_SUBSTITUT peux être null et ça passe sans problème. A+
__________________
On progresse ..... |
|
|
00
|
|
|
#3 |
|
Futur Membre du Club
![]() Développeur informatique Inscription : mai 2006 Messages : 30 ![]() |
Oui bien sur, mais ce n'est pas mon problème.
Dans mon cas tous les éléments sont dans la même table, un arbre classique quoi, avec des feuilles, des noeuds, et ... une racine. La longueur des branches, la profondeur, est indéfinie. Exemple: le registre de windows. |
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : septembre 2002 Messages : 144 ![]() |
Bonjour,
je pense qu'il faut que tu gère l'intégrité avec des triggers, à chaque insertion tu regarde si le parent appartient à ta table. Dans ce cas, tu peux mettre 0 (si l'id est numérique) au parent de ta racine. Il faut aussi que ton trigger vérifie qu'il n'y a aucun autre enregistrement avec 0 en parent, sinon tu peux mettre plusieurs racines Bonne chance |
|
|
00
|
|
|
#5 |
|
Futur Membre du Club
![]() Développeur informatique Inscription : mai 2006 Messages : 30 ![]() |
J'avais mis le problème un peu de côté.
Je vais reprendre en suivant ton conseil Merci |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com