# Modello reticolare

In informatica il modello reticolare è una tipologia di implementazione di un database ideato nel 1973 e perfezionato nel 1978 . La logica su cui si basa questo modello è basata su record e puntatori. Esso è stato recepito da un organismo di unificazione per cui ne esiste una versione standard, detta CODASYL. Questo modello a differenza del modello relazionale che si basa su gruppi di record, considera un record alla volta. Esso è molto vicino alla struttura fisica di memorizzazione dei record, infatti per poter "navigare" all'interno della base di dati si devono utilizzare i puntatori, proprio come avviene nella memoria fisica di un computer.

## Descrizione
### Strutture

La struttura è composta da uno schema che sarebbe il contenitore dei dati e di tutte le altre informazioni connesse. Il nome schema è stato dato in quanto una struttura può essere realmente disegnata graficamente come schema, con quadrati che rappresentano i record e frecce i puntatori. Le strutture, come già detto prima, si basano su record e su puntatori che li uniscono tra di loro; più precisamente parliamo di record come file di record in COBOL. Il comando set permette di creare puntatori tra i vari record. Per quanto riguarda le strutture vi sono due definizioni importanti:
* tipo di record: è un tipo di dato composito, ed è costituito da un insieme di campi, ognuno dei quali è un tipo di dato semplice. Per ogni tipo di record vi deve essere definita direttamente o indirettamente la chiave: nel primo caso viene espressamente detto quali siano i campi (uno o più di uno) che la compongono, mentre nel secondo caso la chiave è dovuta ad uno o più puntatori provenienti da altri record.
* tipo di set: è un legame logico tra due tipi di record distinti; tra un owner (proprietario) ed un member (membro) della relazione. La corrispondenza quindi che si può andare a creare è del tipo 1:n.
Quando andiamo ad istanziare un tipo di record andiamo a creare un record, ed allo stesso modo l'istanziazione di un tipo di set porta a creare un set.
Nelle strutture l'unico vincolo di integrità che si può andare a creare è l'obbligatorietà della partecipazione delle occorrenze tra tipi di set o meno.

### DDL

I DDL sono i comandi del Data Definition Language ovvero i comandi per poter costruire una base di dati. Nel modello reticolare i DDL sono i seguenti:
* dichiarazione di schema;
* dichiarazione di record;
* criterio di memorizzazione;
* dichiarazione di campo;
* tipo semplice;
* dichiarazione di set;
* opzione di inserimento;
* opzione di ritenzione;
* opzione di ordinamento.

### DML

I DML sono i comandi del Data Manipulation Language ovvero i comandi per effettuare modifiche sulla base di dati. Ricordando che la "navigazione" della base di dati viene fatta seguendo i puntatori, essa viene fatta sfruttando un linguaggio ospite che sia dotato di comandi DML per una base di dati reticolare (es. COBOL). Dovendo "navigare" la base di dati vi è la necessità di utilizzare dei cicli per compiere le operazioni desiderate, ed è fondamentale avere sempre un riferimento al "record corrente", ovvero il record a cui stiamo puntando in ogni momento. Le operazioni che possono essere eseguite sono:
* ricerca: per ricercare dati all'interno della struttura si deve utilizzare il comando find. Per poter estrarre dati dallo schema e passarli al programma si utilizza l'istruzione get che copia il contenuto del record corrente nel buffer del programma che sta interagendo con la base di dati.
* aggiornamento: gli aggiornamenti possono essere fatti un record alla volta. Per inserire un nuovo record si utilizza il comando store, per la modifica di un record già esistente si utilizza il comando modify, mentre per la cancellazione erase.