Modello gerarchico
# Modello gerarchico

In informatica il modello di database gerarchico è stato storicamente il primo modello di database ad affermarsi sul mercato.

## Descrizione

Il modello di database gerarchico prevede che i dati siano organizzati secondo strutture ad albero, che si suppone riflettano una gerarchia esistente tra le entità (un esempio di entità è l'entità "Fornitori") che appartengono al database. Ogni albero è formato da un unico record radice (detto anche segmento o padre) e da un insieme di uno o più sotto-alberi dipendenti da esso, costruiti in modo simile.

Ciascuna struttura ad albero costituisce, quindi, un insieme organizzato di segmenti o rami strutturati del database, in forma gerarchica. Al livello più alto (la radice della struttura ad albero) può apparire solo una tipologia di entità (ad esempio "Fornitore X"). Tutte le altre tipologie di entità possono avere un solo "padre", mentre il numero dei "figli" è variabile.

Il modello gerarchico consente di rappresentare informazioni usando la relazione tra segmenti "padre" e segmenti "figli": ogni padre può avere molti figli, ma ogni figlio può avere un solo padre. In questo caso si parla di relazioni 1:N, chiamate anche relazioni uno-a-molti.

Per fare un esempio di modello gerarchico, prendiamo un'organizzazione con un archivio di dipendenti memorizzati in una tabella chiamata appunto "Dipendenti". Nella tabella si trovano attributi come Nome, Cognome, Sesso, Livello, Reparto. Immaginiamo che l'organizzazione abbia dati sui figli dei dipendenti, memorizzati in una tabella "Figli" con attributi come Nome, Cognome, Sesso, Data di nascita. La tabella Dipendenti rappresenta il segmento padre e la tabella Figli il segmento figlio. I due segmenti formano una gerarchia dove un impiegato può avere diversi figli, mentre un figlio può avere un solo padre.

Un altro esempio di modello gerarchico è dato dai file system attualmente in uso sulla totalità dei computer presenti in aziende, uffici e abitazioni.

Il modello gerarchico era ampiamente usato nei primi DBMS per mainframe, mentre successivamente i DBMS gerarchici sono stati sostituiti dai DBMS reticolari e in seguito da quelli relazionali chiamati anche RDBMS. Le relazioni di tipo gerarchico rendono molto semplice rispondere alle interrogazioni quando la realtà rappresentata è appunto gerarchica, ma molto difficile rispondere quando le relazioni rappresentate sono di tipo molti-a-molti (ad esempio nel caso classico di fornitori che vendono diversi prodotti e prodotti venduti da diversi fornitori).

### Svantaggi

* A causa della struttura ad albero dello schema logico, per ottenere relazioni di tipo molti-a-molti è necessario duplicare i dati.
* Per accedere ai dati è necessario attraversare tutto l'albero partendo dalla radice fino al nodo interessato.
* Possono diventare piuttosto ingombranti da usare se il numero di rami supera un certo limite. Pertanto, in un ambito molto ampio, la scalabilità può essere un problema.
