Cos'è il modello di set nidificato?
Il modello di set nidificato è anche noto come algoritmo di attraversamento dell'albero di preordine modificato ed è un modo per archiviare i dati gerarchici all'interno di database relazionali. Questo modello ha il vantaggio di fornire un accesso molto veloce ed è implementato al meglio nelle gerarchie che vengono lette più frequentemente di quanto scritto. A ciascun nodo all'interno del modello informativo vengono assegnati due numeri memorizzati come attributi. L'interrogazione del modello di set nidificato è abbastanza semplice poiché entrambi i valori possono essere utilizzati per estrarre i dati necessari. Effettuare inserimenti, eliminazioni, spostamenti e aggiornamenti, tuttavia, è molto più complicato perché può comportare la rinumerazione dei nodi.
Tipicamente utilizzato per rappresentare insiemi nidificati o informazioni gerarchiche sotto forma di alberi, il modello di insiemi nidificati è stato introdotto da Joe Celko. Un albero, in questo caso, è una struttura di dati che contiene un numero di nodi collegati. Ad esempio, un nodo padre può connettersi a diversi nodi figlio e questa struttura viene ripetuta attraverso l'albero attraverso diversi livelli.
Gli alberi sono un ottimo modo per archiviare le informazioni in un ordine particolare all'interno di un database relazionale, che è un set di dati che memorizza i dati in base alle caratteristiche comuni. Ad esempio, le informazioni sul prodotto all'interno della sezione alimentare di un negozio possono iniziare con alimenti, ramificarsi in frutta, verdura e carne. I frutti possono inoltre essere suddivisi in bacche, meloni e mele e verdure in tuberi, verdure e altri e carne in carne di maiale, montone e vitello.
Un database relazionale memorizza tutte queste informazioni in una forma di facile comprensione e un modello di set nidificato consente di gestire la struttura ad albero in modo efficiente. Usando l'esempio sopra, il nodo radice sarebbe cibo, che è rappresentato da due valori. Dato il valore di sinistra per il cibo come 1, agli altri elementi dell'albero viene assegnato un numero a sinistra in ordine. I frutti otterrebbero un valore di 2 a sinistra, i frutti di bosco sarebbero 3 e così via. I valori vengono quindi assegnati sul lato destro, operando completamente attraverso l'albero, dal basso verso l'alto, attraverso ciascun ramo fino a quando l'ultimo valore viene assegnato al cibo sul lato destro.
Ogni elemento nell'albero finisce con due valori, diciamo lft per left e rgt per right, che possono essere usati per identificarli e indicare la loro relazione con altri oggetti. Ad esempio, se i frutti hanno un valore di 2 e 15, allora tutti i nodi che hanno valori di sinistra maggiori di 2 e valori di destra inferiori a 15 sono discendenti dell'albero da frutto 2–15. Diventa facile estrarre informazioni su tutti i frutti in una volta sola perché questi valori possono essere specificati in una singola query nel database.
Questo modello è eccellente per la memorizzazione di informazioni a cui si accede spesso, ma inserimenti, eliminazioni e informazioni sul riordino nel modello di set nidificato diventano molto noiosi. La riscrittura degli indici e la rinumerazione delle informazioni possono causare l'arresto anomalo del database, specialmente se l'albero cresce per includere centinaia di migliaia di nodi. Il modello di set nidificato è ideale per i sistemi di gestione dei contenuti leggeri con inserimenti e modifiche minimi. Gli inserimenti possono essere fatti molto più velocemente nel modello ad intervallo nidificato perché memorizza la posizione di ciascun nodo nella struttura usando decimali in virgola mobile e codificando anche le informazioni sul percorso.