Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/05/2011, 11h42   #1
Candidat au titre de Membre du Club
 
Inscription : juin 2009
Messages : 28
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 28
Points : 11
Points : 11
Par défaut Gestion d'ensembles et d'arbres dans Oracle

Bonjour à tous

J'ai une question d'ordre conceptuel plus que technique.

Le contexte :

Il existe dans ma base deux tables qui me permettent d'associer des personnes entre elles mais aussi de qualifier cette association :

Personne 1 est l'enfant de personne 2

Pourquoi 2 tables ? Parce que l'une s'occupe d'associer les personnes sur un plan relationnel personel (ami de, parent de, ...) l'autre sur un plan professionel.

Chaque personne possède un capital sympathie (appelé score).
Ce capital est sur plusieurs niveau représentant l'importance de ce capital (A = capital faible, Z = capital élevè).
Ce capital sympathie est "héritable" entre personnes en fonction du type d'association. Par exemple l'héritage du score sera plus important si c'est qqu'un de ma famille tandis qu'il le sera moins si c'est juste un ami.

Le problème :

Je dois pouvoir construire un structure autour de ces ensembles de personnes et faire hériter chacunes d'entre elles.

J'ai déjà mis en oeuvre une première solution : je construis un arbre Naire qui me permet de calculer le score de la personne racine. Donc pour chaque personne je dois reconstruire l'arbre afin d'être sûr qu'elle soit la dernière personne à recevoir le score de ces feuilles et noeud. J'insiste sur le fait qu'il m'est impossible de garantir l'héritage pour une autre personne que la racine.

Mon problème est que les associations se multiplient et rendent la constructions de l'arbre très couteuse (un ami, d'un ami, d'un parent, d'un patron, d'un ami, etc...). Mon premier réflexe serait de stocké les arbres afin de pas devoir les reconstruires MAIS qque chose me gêne : Lorsque je construis un arbre pour une personne racine, je dois aussi construire ensuite un arbre pour toutes les feuilles et noeud de l'arbre. C'est ça va vite devenir énorme est ingérable.

La question

N'existe t'il rien qui me permet, une fois l'arbre construit pour une personne et stocké dans une table, d'utiliser ce même arbre mais de changer la personne root sans pour autant devoir reconstruire l'arbre et le stocké.

Je me rend compte aussi qu'il serait utile de pouvoir identifier les ensembles avec un id. Mais ce qui m'ennuye c'est que pour un même ensemble je peux avoir plusieurs arbre. Le fait de ne devoir stocker qu'un seul arbre et de le modifier après est alors très intéressante.

... j'ai peur de ne pas avoir été très clair et moi même je n'arrive pas à trouver de solution clair. J'ai beaucoup de mal à aborder le problème.

Un grand merci pour ceux qui sont arrivés jusqu'ici
diplomegalo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2011, 14h01   #2
Modérateur
 
Avatar de doc malkovich
 
Homme
Consultant en Business Intelligence
Inscription : juillet 2008
Messages : 950
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : juillet 2008
Messages : 950
Points : 1 467
Points : 1 467
Hello

Sous Oracle tu peux utiliser les notions d'arborescence avec start with connect by prior. Et la fonction SYS_CONNECT_BY_PATH
C'est expliqué dans la FAQ.

En gros tu aurais ta table principale avec seulement le score de la personne, et il faudrait recalculer le score "hérité" avec cette fonctionnalité.

Par contre ça m'étonnerait que tu y arrives du 1er coup
Bon courage
__________________
Avez-vous 60 secondes pour répondre aux sondages sur BO ici et ?
doc malkovich est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2011, 14h16   #3
Candidat au titre de Membre du Club
 
Inscription : juin 2009
Messages : 28
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 28
Points : 11
Points : 11
Ok merci pour la réponse.
diplomegalo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h39.


 
 
 
 
Partenaires

Hébergement Web