Les graphs c'est un peu loin derrière moi, et habituellement, je me base sur des applications physiques pour modéliser mes bases et alogs, par sur des concepts mathématiques qui m'embrouillent.
Donc si tu pouvais poster un petit exemple, ou une appplication physique pour qu'on puisse mieu se représenter ton problème, ça pourrait certainement nous aider...
Bon, ton histoire de ligne avec variations me fait bêtement penser à une évolution d'une valeur dans le temps, comme le cours de la bourse par exemple.
-> Si les points sont répartis de façon homogène selon X, et que chaque point n'est connecté qu'aux points ayant la valeur précédente et suivante de X, alors il suffit que tu stockes ton graphe dans une table ne reprennant comme clé les couples X,Y et la valeur associée s'il y en a une.
Pour les requêtes, tu pourras sans problème te baser sur les fonctions statistiques telles que éccart type ou autres, ce sera très rapide, et tu n'aura pas de perte de place.
-> Si les points forment un nuage, c'est plus chiant. Tu stockes de la même façon, mais avec un ID en plus, et une seconde table qui va stocker les liaisons entre les points. A priori, là tu devrait pouvoir t'en sortir de la même façon. A savoir que sous Oracle il y a une instruction "conect by" qui permet de suivre un cheminement père/fils, qui pourrait te venir en aide lors de l'interrogation. Je ne sais pas s'il y a un équivalent sous MySQL.
-> Si non seulement les points mais aussi les segments sont pondérés, alors il faudra stocker les pondérations des segments en plus.
Exemple des deux structures :
Code :
- La première :
- -------------
- X
- Y
- POIDS_POINT
- POIDS_PREV
- POIDS_NEXT
- -> (X,Y) = Clé primaire, coordonées du point
- -> POIDS_POINT : Pondération du point
- -> POIDS_PREV et POIDS_NEXT : Pondération des segements précédents et suivants. Ce ne marche qu'avec un graphe linéraire.
- La seconde :
- ------------
- ID
- X
- Y
- POIDS_POINT
- -> ID : Clé primaire. Identifiant du poids utilisé pour les relations entre segments
- -> X, Y : Clé alternative. Coordonnées du point.
- -> POIDS_POINT : Pondération du point.
- ID_PERE
- ID_FILS
- POIDS_SEG
- -> ID_PERE : Clé étrangère. Point de départ.
- -> ID_FILS : Clé étrangère. Point d'arrivée.
- -> POIDS_SEG : Pondération du segment. (le modèle est bi-directionnel)
|
Voilà, j'espère que ça pourra t'être utile, mais vu que je vois pas ce qu'est ton graph, et encore moins ce que tu veux en faire, je peux pas t'aider plus.
Message édité par MagicBuzz le 29-03-2003 à 12:32:14