Que sont les modèles de stockage des arborescences et quelles sont leurs caractéristiques ?

StackOverflow https://stackoverflow.com/questions/27850

  •  09-06-2019
  •  | 
  •  

Question

Jusqu'à présent, j'ai rencontré des listes de contiguïté, des ensembles imbriqués et des intervalles imbriqués comme modèles pour stocker des structures arborescentes dans une base de données.Je les connais assez bien et j'ai migré des arbres de l'un à l'autre.

Quels sont les autres modèles populaires ?Quelles sont leurs caractéristiques ?Quelles sont les bonnes ressources (livres, Web, etc.) sur ce sujet ?

Je ne recherche pas seulement du stockage de base de données, mais j'aimerais élargir mes connaissances sur les arbres en général.Par exemple, je comprends que les ensembles/intervalles imbriqués sont particulièrement favorables au stockage de bases de données relationnelles et je me suis demandé s'ils sont réellement un mauvais choix dans d’autres contextes ?

Était-ce utile?

La solution

La ressource fondamentale à cet égard sont les chapitres 28 à 30 de SQL pour les Smarties.

(J'ai tellement recommandé ce livre que je pense que Celko me doit des redevances maintenant !)

Autres conseils

Une variante est l'endroit où vous utilisez une représentation hiérarchique directe (c.-à-d.lien parent dans le nœud), mais stocke également une valeur de chemin.

c'est à dire.pour une arborescence de répertoires composée des éléments suivants :

C:\
   Temp
   Windows
       System32

Vous auriez les nœuds suivants

Key     Name     Parent     Path
1       C:                  *1*
2       Temp       1        *1*2*
3       Windows    1        *1*3*
4       System32   3        *1*3*4*

Le chemin est indexé et vous permettra d'effectuer rapidement une requête qui récupère un nœud et tous ses enfants, sans avoir à manipuler les plages.

c'est à dire.pour trouver C: emp et tous ses enfants :

WHERE Path LIKE '*1*2*%'

Cette représentation est le seul endroit auquel je puisse penser où stocker les identifiants dans une chaîne comme celle-ci, c'est ok.

@lassevk : Cet article parle de votre approche plus en détail et fournit des extraits de code.

J'espère que cela t'aides.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top