Modello relazionale

Il modello più moderno dei dati è quello relazionale. In precedenza erano diffusi quello reticolare e quello gerarchico, che però si basavano su considerazioni che lasciavano trasparire dettagli dell’implementazione fisica dei dati.

Il modello relazionale è basato solo su considerazioni matematiche, per cui non solo non include nel modello dettagli di macchina, ma dispone anche di un apparato teorico per dimostrarne precisamente tutte le proprietà e caratteristiche.

Il concetto matematico che sta alla base dei database relazionali è quello di relazione della teoria degli insiemi.

Un insieme è una collezione di dati, che indicheremo separati da virgole e chiusi tra parentesi graffe:

Ins_1 = {1,3,4}

Ins_2 = {alfa,beta}

 

Per definire una relazione dobbiamo prima definire una operazione tra insiemi: il prodotto cartesiano, che indicheremo con x. Il prodotto cartesiano tra due insiemi è l’insieme di tutte le possibili coppie di valori dei due insiemi.

Per esempio il prodotto cartesiano tra Ins_1 e Ins_2 è:

Ins_1 x Ins_2 = {(1,alfa),(1,beta),(3,alfa),(3,beta),(4,alfa),(4,beta)}

Possiamo estendere questa operazione a più di due insiemi, cioè definire il prodotto cartesiano tra più di due insiemi; in questo caso il risultato sarà un insieme di n-uple anzichè un insieme di coppie.

Ora siamo pronti a definire una relazione: una relazione è un sottoinsieme del prodotto cartesiano di più insiemi.

Per esempio:

Rel_1 = {(1,alfa),(3,alfa),(3,beta)}

 

è una relazione tra i due insiemi descritti prima.

Gli elementi della relazione sono detti tuple. Due tuple identiche,

cioè con gli stessi valori, sono la stessa tupla. Le due relazioni

{(1,alfa),(1,alfa),(1,alfa)} = {(1,alfa)}

sono uguali, cioè sono la stessa relazione.

Per quanto riguarda la teoria dei database siamo interessati solo alle relazione con un numero finito di tuple.

Giunti a questo punto si può vedere con facilità il legame tra relazioni e database: gli insiemi di partenza sono i campi, il prodotto cartesiano è l’insieme di tutte le possibili combinazioni tra i valori dei campi, una relazione è un archivio.

Per distinguersi dai modelli precedenti, il relazionale ha introdotto una propria terminologia; database: collezione di tabelle, tabella: relazione (il vecchio file), attributi: i campi di ogni tabella.

Vi è una sostanziale differenza rispetto ai database orientati al record: mentre in questi possiamo immaginare che esistano due record con valori identici nei campi (basi di dati orientate all’oggetto), in un database relazionale tutti i record devono avere almeno un campo o una combinazione di campi che diano un valore univoco all’interno dell’intero database (basi di dati orientate al valore), in quanto come per le tuple, due record con valori identici sono lo stesso record.

Tra le relazioni si possono definire delle operazioni, che portano all’algebra relazionale.

Le operazioni fondamentali dell’algebra relazionale sono cinque:

Unione, tra due relazioni, che indichiamo con R U S, cioè l’insieme delle tuple che stanno in R o in S o in entrambe.

Differenza, tra due relazioni, che indichiamo con R - S, cioè l’insieme delle tuple che stanno in R ma non in S.

Prodotto cartesiano, tra due relazioni, che indichiamo con R x S, ed è definito come il prodotto cartesiano tra insiemi.

Proiezione, di una relazione, che indichiamo con s (c1,c2,c3,...)( R ) che seleziona i componenti C1, C2, C3 ... di ogni tupla.

Selezione, di una relazione, che indichiamo con s (<Expr>.)( R ), che seleziona delle tuple in base ad una espressione logica.

Queste operazioni possono essere composte tra loro per costruire delle azioni più complesse, con delle regole di calcolo che permettono di semplificare le espressioni più lunghe.

Una operazione che si definisce in termini di quelle già viste è la JOIN, che seleziona delle tuple dal prodotto cartesiano di due relazioni.

JOIN(R,S,<Expr.>)= s (<Expr>.)( R x S )

La JOIN è di gran lunga l’operazione più utile quando si eseguono delle interrogazioni su una base di dati, perchè collega il contenuto di più archivi, ma come si può facilmente intuire è anche la più dispendiosa dal momento che viene espressa in termini di un prodotto cartesiano di relazioni.

L’algebra relazionale ci viene incontro, aiutandoci a cambiare l’ ordine delle operazioni in modo da ottenerne una valutazione più veloce, per esempio anticipando la selezione che riduce il numero di tuple rispetto al prodotto cartesiano.

E’ proprio questo metodo di ottimizzazione delle query che ha reso possibile la creazione di sistemi efficiente basati sul modello relazionale.