Problème de modélisation : liste chainée
Le
Timur
Bonjour,
j'ai un soucis de modélisation d'une base de données.
Je dois stocker une liste chainée dans laquelle
- je dois pouvoir facilement ajouter ou enlever un élément
- la chaîne n'a ni début ni fin : tous les élements ont un "élement suivant"
(on est plutôt sur un collier de perles !)
- je n'ai besoin de parcourir ma liste que dans un seul sens
J'ai bien pensé à une table (simplifiée bien sur)
ID int autoincrémenté
libElement varchar(100)
Next ID int
Cela me fait une insertion + 1 update à chaque insertion d'un nouvel élément
dans la chaîne.
Par contre, comment faire un ordre SQL qui réponde à la question "Je veux
les 200 élements suivant l'élement dont l'ID est xxx ?"
Je ne peux pas faire de récursivité vu le nombre d'éléments à retourner.
Un autre point. L'appli est développé sous SQL 2000, mais doit être portable
sous MySQL
Help !
--
Cordialement
j'ai un soucis de modélisation d'une base de données.
Je dois stocker une liste chainée dans laquelle
- je dois pouvoir facilement ajouter ou enlever un élément
- la chaîne n'a ni début ni fin : tous les élements ont un "élement suivant"
(on est plutôt sur un collier de perles !)
- je n'ai besoin de parcourir ma liste que dans un seul sens
J'ai bien pensé à une table (simplifiée bien sur)
ID int autoincrémenté
libElement varchar(100)
Next ID int
Cela me fait une insertion + 1 update à chaque insertion d'un nouvel élément
dans la chaîne.
Par contre, comment faire un ordre SQL qui réponde à la question "Je veux
les 200 élements suivant l'élement dont l'ID est xxx ?"
Je ne peux pas faire de récursivité vu le nombre d'éléments à retourner.
Un autre point. L'appli est développé sous SQL 2000, mais doit être portable
sous MySQL
Help !
--
Cordialement

Poser une question


peut-être une table avec un simple numéro d'ordre (avec des trous pour
pouvoir renuméroter uniquement si on a des collisions) ?
---
Patrice
"Timur" news:
suivant"
élément
portable
j'avais bien pensé à cette solution, mais ça n'est pas terrible quand-même,
non ?
C'est pour une appli web, et je me vois mal renuméroter mes quelques
dizaines de milliers de lignes en temps réel !
Même une proc de maintenance le soir qui recrée les trous, c'est moyen !
En plus, cela suppose un début (no ordre le plus petit) et une fin (no ordre
le plus grand), ce qui n'a pas de sens dans mon appli (le plus grand
'pointe' sur le plus petit pour faire la boucle)
--
Cordialement
"Patrice" news:
veux
exceptionnelle. Pour le rebouclage, tu peux éventuellement faire une autre
requête pour compléter si tu ne sélectionnes que les derniers
enregistrements.
Sinon explique peut-être la nature des données plus que la représentation
technique que tu as retenue et cela pourra peut-être faire germer de
nouvelles idées.
Pourquoi la liste chaînée est-elle circulaire ?
--
Patrice
"Timur" news:
quand-même,
ordre
de
retourner.
du style
ID LIB
IDNEXT
1 'sur la place xxx, prendre à gauche la rue YYY'
2
2 'Continuer tout droit sur 200 m'
3
3 'tourner à gauche'
4
4 'tourner encore à gauche'
1
Je peux avoir besoin de remplacer le ID 2 par plusieurs dizaines de lignes
permettant de passer par un autre chemin.
--
Cordialement
"Patrice" news:%23$
Donc
message
Excellent article de Fred Brouard sur :
http://sqlpro.developpez.com/cours/arborescence/
"Timur" news: