JeuWeb - Crée ton jeu par navigateur
Structures chaînées en SQL - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Structures chaînées en SQL (/showthread.php?tid=1611)



Structures chaînées en SQL - uriak - 20-08-2007

Voilà, je vais avoir besoin de stocker des structures constituant des listes en SQL. Et je voulais savoir s'il existait déjà un formalisme ou une manière pratique de faire les choses.

Exemple : j'ai une structure de graphe dans ma BDD, sous la forme
Code :
table links :
id_node1, id_node2, length, type

celle-ci définit donc des paires de noeuds liés par une chemin d'un type particulier et d'une distance définie.

Maintenant si je veux définir un trajet emprunant ce graphe

une solution facile serait de le stocker sous forme finale :
Code :
id_nodeStart, id_nodeEnd, totalLength, type, ...

problème : si un noeud intermédiaire disparaît, ce stockage ne permet de mettre à jour le trajet.

Donc il faut que je le stocke sous forme d'une suite de liaisons...
Code :
table trajets :
id_traj, id_trajSuivant, startNode, endNode

avec pour un trajet, une suite de champ qui s'appellent. Mais à priori je ne peux pas réunir tous les composants d'un trajet en une seule requête (corrigez moi si je me trompe) et récupérer les informations utiles les plus souvents - départ, arrivée, distance - coûtera beaucoup.
Du coup je serai tenté de stoker les éléments sous une forme plus complète, mais redondante
Code :
table trajets :
id_traj, startNode, endNode, length, type

table traj_elems :
id_elem, id_traj, id_liaison, id_nextTraj

Un trajet est composé d'éléments qui notent la liaison employée et l'id du prochain élément...

Est-ce que vous voyez une meilleure solution ?


RE: Structures chaînées en SQL - Klemmth - 20-08-2007

Personnellement je suis pas un pro en sql mais je ferai comme toi Smile


RE: Structures chaînées en SQL - Globe - 20-08-2007

Ouais j'aurais fais ça comme toi, d'ailleurs il me semble que j'avasi fait ça quand j'avais bossé sur un RPG par carte... Mais je ne comprend cependant pas la notion d'id du node ? t'as une autre table à coté ? Parce que moi il me semble que je stockais les coordonnées.


RE: Structures chaînées en SQL - uriak - 20-08-2007

Le node correspondra à un bâtiment de stockage (chantier, entrepot, mine...) ou un lieu de transit (port, relais...) donc son id pointe vers une table contenant le type de lieu, le propriétaire, les coordonnées...


RE: Structures chaînées en SQL - Globe - 21-08-2007

Ah ok, très bien merci d'avoir éclairci ce point Big Grin