DATABASE: Il modello relazionale CAPITOLO V DATABASE: Il modello relazionale Il modello relazionale offre una rappresentazione matematica dei dati basata sul concetto di relazione normalizzata. I principi del modello relazionale furono originariamente proposti da Edward F. Codd nel 1970. Egli rilevò per primo che la matematica poteva essere usata per infondere alcuni solidi principi e rigore nel campo della gestione dei database. Il modello di Codd fa uso di termini come tupla, dominio, grado, attributo, dipendenza funzionale e forma normale, che sono alla base del modello relazionale e di cui bisogna comprendere il significato. Terminologia Sono di seguito introdotte alcune delle definizioni primitive più importanti: • Una RELAZIONE corrisponde ad una Tabella. • Una TUPLA (abbreviazione di n-tupla) della relazione corrisponde ad una riga della tabella. • Un ATTRIBUTO della relazione è una colonna della tabella. • Un DOMINIO è l’insieme dei possibili valori che può assumere uno specifico attributo di una certa relazione. • Il numero delle tuple è detto CARDINALITA’ della relazione. • Il numero degli attributi è detto GRADO della relazione. • Una PRIMARY KEY (Chiave primaria) è una colonna o una combinazione di colonne con la proprietà di non assumere mai lo stesso valore su righe diverse. E’ necessaria per la ricerca delle informazioni nella banca dati. Si fa notare che: Ogni riga (tupla) è omogenea con le altre. Pagina 1 di 7 DATABASE: Il modello relazionale I valori di una casella devono essere atomici, cioè non ulteriormente decomponibili in informazioni più semplici. L’insieme di tutti i possibili valori che può assumere un attributo della relazione è detto dominio dell’attributo. Più esattamente, ogni attributo deve essere definito su un dominio, ed il valore di ogni sua casella deve essere esclusivamente tra quelli offerti dal dominio. Questo significa anche che esistono valori ammissibili di un certo dominio che potrebbero non apparire mai come valori assunti dall’attributo. Il sottoinsieme del dominio composto dai valori effettivamente assunti, il cosiddetto dominio efficace, è detto insieme delle valorizzazioni. TERMINI DEL MODELLO RELAZIONALE EQUIVALENTI INFORMALI Relazione Tabella Tupla Riga o Record Attributo Colonna o campo Cardinalità Numero di righe Grado Numero di colonne Chiave primaria Identificatore unico Dominio Insieme dei possibili valori Esempio Primary Key Attributi QU.TA’ SPEDITA 001 Giulianova 12 002 Teramo 15 003 Pineto 12 004 Roseto 14 Tuple Cardinalità = 4 Relazione COD. IMP.TO CITTÀ grado = 3 L’attributo CITTA’ ha per dominio l’insieme di tutte le città italiane. L’attributo COD_IMPIEGATO ha per dominio l’insieme dei numeri interi positivi composti da tre cifre da 001 a 999 Il valore “Roma” è ammissibile per l’attributo CITTA’, ma non compare in tabella. Pagina 2 di 7 DATABASE: Il modello relazionale L’insieme delle valorizzazioni dell’attributo CITTA’ è composto dai valori: Giulianova, Teramo, Pineto, Roseto. L’insieme delle valorizzazioni dell’attributo COD_IMPIEGATO è composto dai valori: 001, 002, 003, 004. Riassumendo: • Una relazione non può avere più di due attributi con lo stesso nome, indipendentemente dal fatto che abbiano lo stesso dominio o domini distinti. • Relazioni diverse, cioè tabelle diverse, possono avere colonne con lo stesso nome, indipendentemente dal loro dominio. • Un attributo è univocamente identificato dalla relazione a cui appartiene. Per identificarlo, è sufficiente farlo precedere dal nome della relazione. Ad esempio, l’attributo NOME della relazione IMPIEGATI è univocamente identificato dalla sequenza IMPIEGATI.NOME. • Domini di attributi diversi non devono essere necessariamente distinti. E’ logico pensare che attributi diversi della stessa relazione possano essere definiti su di uno stesso dominio. Esempio Due attributi (di una relazione) ETA’ e NUM_SCARPA condividono lo stesso dominio, formato da tutti i numeri di due cifre da 000 a 100. Cambia, invece, l’insieme delle valorizzazioni per ogni attributo, cioè l’interpretazione dei dati forniti dal dominio: mentre è accettabile ETA’=78, è inaccettabile NUM_SCARPA=78. La stessa osservazione è estendibile se gli attributi che condividono lo stesso dominio sono su tabelle diverse. E’ evidente che è possibile confrontare solo dati omogenei, che condividono, cioè, lo stesso dominio. Data Type Il linguaggio utilizzato dai più diffusi DBMS Relazionali per la ricerca delle informazioni è chiamato System Query Language (SQL). Questo deve gestire diverse tipologie di dati che l’utente può assegnare ad un attributo. Si elencano alcune delle più diffuse: • INTEGER: Numeri Interi • FLOAT: Numeri con la virgola • CHARACTER: Singoli caratteri alfanumerici o loro composizione non interpretati come numero Pagina 3 di 7 DATABASE: Il modello relazionale Osservazione E’ errato associare il data type al concetto di dominio. Il concetto di Dominio è più sofisticato, perché è legato al significato dell’attributo. Infatti se è definito un attributo di tipo CHARACTER, non significa che vi appartiene qualunque valida stringa di caratteri. Se in una relazione l’attributo CITTA’ è di tipo CHAR(15), cioè composto da stringhe di lunghezza massima di 15 lettere, il DBMS accetta come valore valido anche la stringa “xyzq”, che però non appartiene al dominio, poiché non è un nome possibile di città. Tuple E’ chiaro che un attributo è un insieme di dati omogenei scelti in un insieme più grande detto dominio. Una tupla è identificata come una riga della tabella e costituisce l’informazione fornita dalla relazione. L’informazione è anche detta istanza. Si dice che una tupla è quella parte della relazione che ne descrive univocamente un’istanza. Quindi la tupla è una successione di attributi atomici nel numero necessario e sufficiente a descrive univocamente un’istanza. Una relazione è allora un insieme di tuple. Per chiarire ulteriormente il concetto di relazione e tupla è necessario definire l’operazione matematica di prodotto cartesiano tra insiemi. Prodotto Cartesiano tra Insiemi (Approfondimento matematico) La definizione matematica di Relazione è sviluppata partendo dai concetti di • Dominio • operazione di Prodotto Cartesiano tra insiemi. Per definire elementarmente il Prodotto Cartesiano tra insiemi, si ricorre ad un esempio. Esempio Dati 3 insiemi S={s1, s2}, P={p1, p2, p3} e W={w1, w2} il prodotto cartesiano SxP è un insieme i cui elementi sono le seguenti coppie ordinate: SxP={(s1,p1), (s1,p2), (s1,p3), (s2,p1), (s2,p2), (s2,p3)}. Pagina 4 di 7 DATABASE: Il modello relazionale Il prodotto cartesiano SxPxW genera invece terne ordinate Possibili combinazioni Ogni terna ordinata (si, pj, wk) è un elemento 1 s1 p1 w1 2 s1 p1 w2 3 s1 p2 w1 4 s1 p2 w2 5 s1 p3 w1 6 s1 p3 w2 contiene: 2x3x2=12. 7 s2 p1 w1 12 è il numero massimo di tuple che la 8 s2 p1 w2 relazione può contenere, 12 è quindi la 9 s2 p2 w1 cardinalità massima della relazione. 10 s2 p2 w2 11 s2 p3 w1 12 s2 p3 w2 dell’insieme SxPxW ed è una possibile tupla della relazione di domini S, P e W. Il numero massimo di terne ordinate = numero massimo di tuple è calcolabile dal prodotto tra i numeri di elementi che ciascun insieme Definizione di Relazione Data una collezione di Attributi A1, A2, …, An che hanno rispettivamente i Domini D1, D2, …, Dn (non necessariamente distinti), una Relazione di grado n è un sottoinsieme del prodotto cartesiano D1xD2x...xDn. Quindi una Relazione è un sottoinsieme dell’insieme generato dal Prodotto Cartesiano fra i Domini dei suoi Attributi. Il numero degli Attributi della Relazione è detto GRADO e il numero delle tuple è detto CARDINALITA’ della Relazione. Dalla definizione di Relazione si evince un’importante proprietà: una relazione non può mai presentare tuple duplicate. Nella tabella seguente, alcuni attributi hanno valori duplicati in colonna, però non esiste alcuna tupla identica. Cod.Part. P1 P2 P3 P4 Descrizione Dado Vite Vite Bullone Colore Rosso Blu Verde Blu Peso 12 17 14 19 Città Londra Parigi Roma Londra Pagina 5 di 7 DATABASE: Il modello relazionale In una Relazione… NON esistono tuple duplicate Le Tuple non sono ordinate (dall’alto al basso) Gli attributi NON sono ordinati (da sinistra a destra) I valori degli attributi sono atomici …NON esistono tuple duplicate Questa proprietà deriva dal fatto che la relazione è un insieme matematico (di tuple) e gli insiemi matematici, per definizione, non includono elementi duplicati. Da ciò si osserva che una tabella ed una relazione non sono esattamente la stessa cosa, in quanto una tabella (in generale) potrebbe contenere righe duplicate, mentre invece una Relazione non può proprio contenere tuple duplicate (per definizione). Un’importante conseguenza del fatto che non esistono tuple duplicate è che in una relazione esiste sempre una “primary key”. Infatti le tuple sono univoche, ne segue che al più la combinazione di tutti gli attributi della relazione (l’insieme di tutte le colonne) ha la proprietà di essere univoca e quindi può fungere da Primary Key. Nella realtà non è sempre necessario coinvolgere tutti gli attributi, poiché una combinazione minore è generalmente sufficiente per determinare la Primary Key. …Le Tuple non sono ordinate (dall’alto al basso) Questa proprietà deriva dal fatto che la relazione è un insieme matematico (di tuple) e gli insiemi matematici non sono ordinati. Pertanto si ha sempre la stessa relazione qualunque sia l’ordine delle sue tuple. Quindi non ha senso parlare di “quarta tupla”, “prima tupla” o “tupla successiva” di una relazione, perché non esiste il concetto di posizione della tupla. Anche questa proprietà ci permette di osservare che una relazione ed una tabella non sono esattamente la stessa cosa: le righe di una tabella hanno un ordinamento dall’alto al basso, mentre le tuple di una relazione non lo hanno. Pagina 6 di 7 DATABASE: Il modello relazionale …Gli attributi NON sono ordinati (da sinistra a destra) Anche questa proprietà deriva dal fatto che l’insieme degli attributi di una relazione è un insieme matematico e che gli insiemi matematici non sono ordinati. Quindi non ha senso parlare di “quinto attributo”, “primo attributo” o “attributo successivo” di una Relazione. Gli attributi sono sempre referenziati per nome e mai per posizione. Anche questa proprietà permette di osservare un’ulteriore differenza tra relazione e tabella: le colonne di una tabella hanno un ordinamento da sinistra a destra, mentre gli attributi di una relazione non lo hanno. …I valori degli attributi sono atomici Dire che i valori di tutti gli attributi sono “atomici” significa che non sono ulteriormente decomponibili. È una conseguenza diretta del fatto che i domini contengono valori atomici. I valori atomici sono anche detti “scalari”. Questa proprietà delle Relazioni si può anche enunciare nel seguente modo: “All’incrocio fra una qualunque riga e una qualunque colonna della Tabella si trova esattamente uno ed un solo valore e mai una collezione di valori”. Una Relazione che soddisfa questa condizione si dice “NORMALIZZATA” o “IN PRIMA FORMA NORMALE”. Definizione di Database Relazionale Un Database Relazionale è un database percepito dall’utente come un insieme di Relazioni Normalizzate di vario grado. Da quanto detto si deduce che tutte le relazioni sono sempre normalizzate almeno in Prima Forma Normale. Nel contesto del Modello Relazionale, il termine “Relazione” deve sempre essere inteso come “Relazione Normalizzata”. Pagina 7 di 7