Quali sono i modelli per la conservazione delle strutture arboree e quali sono le loro caratteristiche?

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

  •  09-06-2019
  •  | 
  •  

Domanda

Finora ho riscontrato elenchi di adiacenze, insiemi nidificati e intervalli nidificati come modelli per la memorizzazione di strutture ad albero in un database.Li conosco abbastanza bene e ho migrato gli alberi dall'uno all'altro.

Quali sono gli altri modelli popolari?Quali sono le loro caratteristiche?Quali sono le buone risorse (libri, web, ecc.) su questo argomento?

Non sto solo cercando l'archiviazione DB, ma vorrei espandere le mie conoscenze sugli alberi in generale.Ad esempio, capisco che gli insiemi/intervalli nidificati sono particolarmente favorevoli per l'archiviazione di database relazionali e mi sono chiesto, sono effettivamente un Cattivo scelta in altri contesti?

È stato utile?

Soluzione

La risorsa fondamentale per questo sono i capitoli 28-30 di SQL per Smarties.

(Ho consigliato questo libro così tanto che immagino che Celko mi debba ormai i diritti d'autore!)

Altri suggerimenti

Una variazione è quando si utilizza una rappresentazione gerarchica diretta (es.collegamento principale nel nodo), ma memorizza anche un valore di percorso.

cioè.per un albero di directory composto da quanto segue:

C:\
   Temp
   Windows
       System32

Avresti i seguenti nodi

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

Il percorso è indicizzato e ti consentirà di eseguire rapidamente una query che raccolga un nodo e tutti i suoi figli, senza dover manipolare gli intervalli.

cioè.per trovare C: emp e tutti i suoi figli:

WHERE Path LIKE '*1*2*%'

Questa rappresentazione è l'unico posto che mi viene in mente dove archiviare id in una stringa come questa va bene.

@lassevk: Questo articolo parla del tuo approccio in modo più dettagliato e fornisce frammenti di codice.

Spero che questo ti aiuti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top