Molte tabelle usate in X-Cross non hanno semplicemente una struttura piatta, ma gerarchica, dove ogni elemento della tabella può essere connesso ad uno padre in una struttura nodo-sottonodo, in cui ogni ramo può avere un numero diverso di livelli.
Il classico esempio di tabella ad albero è un piano dei conti
dove i record sono organizzati in livelli e sottolivelli, ma in molti altri casi è preferibile una struttura ad albero piuttosto che piatta, ad esempio:
- Categorie di clienti
- Zone di vendita
- Categorie di articoli di magazzino
e molti altri.
Le tabelle ad albero di X-Cross
Le tabelle ad albero sono utilizzate in molte parti del programma e tutte hanno la stessa struttura.
Ogni record della tabella può essere connesso o meno a un record padre. I record di livello superiore non sono collegati a uno principale.
L’albero viene creato durante la lettura della tabella, tramite una vista che crea i vari livelli in modo molto veloce.
La struttura della tabella ad albero
Ogni livello di una tabella ad albero può essere numerico o alfanumerico, può avere una lunghezza massima e il livello del codice può ripetere o meno il codice del padre. I valori predefiniti per questa impostazione possono essere sovrascritti dalle impostazioni utente, in modo che la struttura dei codici possa essere personalizzata.
Modifica della struttura della tabella ad albero
La struttura della tabella ad albero può essere modificata in qualsiasi momento, ed i codici dei singoli record possono essere modificati di conseguenza se il codice padre viene ripetuto.
Poiché la connessione ai record figlio (transazioni) avviene tramite l’ID del record, i codici record possono essere modificati in qualsiasi momento anche se il record è stato utilizzato in transazioni.
Ricerche su tabelle ad albero
Nelle ricerche che utilizzano come parametri i record di una tabella ad albero, possono essere utilizzate tutte le sottotabelle di un nodo.
Ad esempio, immaginiamo di avere una tabella di zone clienti con la seguente struttura:
- Europa
- Francia
- Italia
- Austria
- America
- Stati Uniti d’America
- Canada
I clienti verranno collegati al livello più basso (es. Francia, Italia o Austria); se selezioniamo l’Europa, si troveranno i clienti di tutte e tre le nazioni.