Modello Relazionale Il modello relazionale dei dati e stato introdotto da Codd nel 1970 (E.F. Codd, \A relational model of data for large shared data banks", Comm. of the ACM, 1970) ed e basato sul concetto matematico di relazione. Dominio : insieme di valori D = fv 1 ;v 2 ;:::;v k g Tupla : Dati n domini D 1 ;D 2 ;:::;D n, non necessariamente distinti una ennupla (tupla) ordinata e denita come t =(v 1 ;v 2 ;:::;v n );v i 2 D i ; 81 i n Prodotto Cartesiano : Il prodotto cartesiano di n domini D 1 ;D 2 ;:::;D n, non necessariamente distinti, indicato con D 1 D 2 :::D n, e l'insieme di tutte le tuple t su D 1 ;D 2 ;:::;D n. Relazione : Una relazione R su n domini D 1 ;D 2 ;:::;D n, non necessariamente distinti, e un sottoinsieme del prodotto cartesiano D 1 D 2 ::: D n : R D 1 D 2 ::: D n Il valore di n viene chiamato Grado della relazione 1
Il numero di tuple viene chiamata Cardinalita della relazione Esempi : D 1 = fv 11 ;v 12 g D 2 = fv 21 ;v 22 ;v 23 g D 1 D 2 = f(v 11 ;v 21 ); (v 11 ;v 22 ); (v 11 ;v 23 ); v 12 ;v 21 ); (v 12 ;v 22 ); (v 12 ;v 23 )g R 1 = f(v 11 ;v 21 ); (v 11 ;v 22 )g R 2 = fg R 3 = f(v 11 ;v 21 ); (v 11 ;v 22 ); (v 12 ;v 21 ); (v 12 ;v 22 )g Rappresentazione di relazioni : Una relazione viene rappresentata generalmente tramite una tabella con un numero di righe pari alla cardinalita e un numero di colonne pari al grado R 3 v 11 v 21 v 11 v 22 v 12 v 21 v 12 v 22 2
Schema ed Istanza Attributo : Nome dato ad un dominio in una relazione si ottiene l'indipendenza dall'ordinamento dei domini si attribuisce signicato ai valori del dominio Schema di relazione : Uno schema di relazione e una coppia costituita dal nome della relazione R e da un insieme di nomi degli attributi X =(A 1 ;A 2 ;:::;A n ), indicato con R(X). Dato uno schema R(X) si dice anche che lo schema della relazione R e X. } I nomi degli attributi A i devono essere tutti diversi. Istanza di relazione : Una istanza di relazione o relazione su uno schema R(A 1 ;A 2 ;:::;A n ) e un insieme r di tuple su (A 1 ;A 2 ;:::;A n ) 3
Schema di base di dati : E un insieme di schemi di relazioni R = fr 1 (X 1 );R 2 (X 2 );:::;R n (X n )g Tutti i nomi di relazione R i devono essere dierenti. Istanza di base di dati : Dato uno schema di base di dati R = fr 1 (X 1 );R 2 (X 2 );:::;R n (X n )g, una istanza su R e un insieme di relazioni r = fr 1 ;r 2 ;:::;r n g; dove r i e una relazione su R i ; 81 i n } Dierenza tra tabella (usata nei DMBS) e relazione Righe duplicate vs tuple distinte Notazione : } Insieme di attributi : Un insieme di attributi Y dello schema R(X), cioe Y X, puo essere denotato anche con R:Y A denota fag, XY denota fxg[fy g, } Tuple : Data una tupla t su R(X), un attributo A 2 X e un sottoinsieme Y X t[a], oppure t:a, denota il valore di t su A t[y ], denota la sottotupla di t ottenuta considerando i valori degli attributi in Y 4
Esempio Schema di base di dati : DB UNIVERSITA = f STUDENTE(MATR, NOME, CITTA, ACORSO) CORSO(CODICE, NOME, CODDOC) DOCENTE(CODICE, CF, CITTA) FREQUENZA(MATR, CODCOR) g Istanza di base di dati : STUDENTE MATR NOME CITTA ACORSO M1 Marco Quaranta SA 1 M2 Giacomo Tedesco PA 2 M3 Maria Mei BO 1 M4 Ugo Rossi MO 2 M5 Sara Neri MO 2 M6 Agata Verdi MI 1 CORSO CODICE NOME CODDOC C1 Fisica 1 D1 C2 Analisi Matematica 1 D2 C3 Fisica 2 D1 C4 Analisi Matematica 2 D2 C5 Meccanica Razionale D4 5
DOCENTE CODICE CF CITTA D1 CF1 MO D2 CF2 BO D3 CF3 MO D4 CF4 FI FREQUENZA MATR M1 M1 M2 M2 M3 M3 M3 M3 CODCOR C1 C3 C1 C2 C1 C2 C3 C4 6
Chiavi } Informalmente, per chiave di una relazione si intende un sottoinsieme dei suoi attributi che identica unicamente ogni tupla della relazione stessa. } Dato uno schema di relazione R(X), un sottoinsieme di attributi K X e detto chiave dello schema di relazione R(X) se e solo se per ogni relazione r su R(X) valgono le seguenti proprieta: 1. Univocita : 8t 1 ;t 2 2 r;k[t 1 ]=K[t 2 ]=) t 1 t 2 cioe, non esistono due tuple distinte di r con lo stesso valore della chiave 2. Minimalita : 8A i 2 K; K, A i non verica la proprieta 1. cioe, non esiste un sottoinsieme proprio di K con la proprieta di univocita. } Un insieme di attributi Y X che contiene in modo stretto una chiave K, Y K, e detto superchiave dello schema di relazione R(X). In altri termini, una superchiave soddisfa solo la proprieta 1. di Univocita. 7
} Per ogni schema di relazione R(X), l'insieme X e una superchiave in quanto una relazione, essendo un insieme, contiene tuple distinte. Quindi, ogni schema di relazione R(X) ha almeno una chiave. } Uno schema R(X) puo avere piu chiavi dette chiavi candidate Tra le chiavi candidate ne viene scelta una detta chiave primaria Le rimanenti chiavi vengono dette chiavi alternative Notazione : } La chiave primaria di uno schema R(X) si indica sottolineando gli attributi che la compongono: R(K 1 ;K 2 ;:::;K m ;A 2 ;:::;A n ) } Una chiave alternativa di uno schema R(X) e riportata di seguito allo schema, contraddistinta dalla parola chiave AK: R(X) AK: K 1 ;:::K m Esempio : DOCENTE (CODICE, CF, CITTA) AK: CF 8
Valori nulli e Vincolo di Entity Integrity Valori nulli : Ogni dominio di relazione viene esteso con un particolare valore, detto valore nullo e denotato con null, che rappresenta assenza di informazione. In questo modo e possibile introdurre nelle relazioni anche tuple in cui il valore di uno o piu attributi non e disponibile. } Ad esempio, con riferimento allo schema di relazione DOCENTE (CODICE, CF, NOME, CITTA DI NASCITA) si possono elencare vari casi in cui si deve inserire nella relazione DOCENTE una tupla il cui valore di un attributo non e disponibile: CITTA DI NASCITA del docente e sconosciuto il CF non e previsto per docenti di determinati paesi... } Il gruppo di standardizzazione ANSI (American National Standard Institute) ha specicato 14 diverse interpretazione per il valore null. } Nei sistemi relazionali e possibile specicare se un attributo puo o meno assumere il valore null. Vincoli di Integrita : I vincoli (o regole) di integrita stabiliscono condizioni di correttezza delle informazioni nella base di dati. } La stessa dichiarazione di chiave K di uno schema di relazione R e una dichiarazione di vincolo di integrita in quanto stabilisce l'univocita dei valori assunti dagli attributi di K. 9
} In presenza di valori nulli, non sarebbe quindi possibile controllare l'univocita dei valori assunti dagli attributi di una chiave. Per questo motivo viene imposto il seguente vincolo. Vincolo di Entity Integrity : Tale vincolo stabilisce che gli attributi che costituiscono la chiave primaria di una relazione non possono assumere valore nullo. } Formalmente, un'istanza r di uno schema di relazione R con chiave primaria K 1 ;K 2 ;:::;K m, R(K 1 ;K 2 ;:::;K m ;A 2 ;:::;A n ), soddisfa il vincolo di Entity integrity se e solo se 8t 2 r;t[k i ] 6= null; 81 i m 10
Vincolo di Integrita Referenziale } Nel Modello Relazionale, i riferimenti tra le tuple delle relazioni vengono stabiliti tramite i valori assunti dagli attributi nelle tuple. Il vincolo di integrita referenziale assicura che quando in una tupla si utilizza il valore di un attributo per riferirsi ad un'altra tupla, quest'ultima sia una tupla esistente. } Dato uno schema di base di dati R un vingolo di integrita referenziale viene dichiarato specicando: Foreign Key o Chiave Esterna : insieme di attributi FK = ffk 1 ;FK 2 ;:::;FK n g di uno schema di relazione R 1 2 R Chiave della Relazione riferita : schema di relazione R 2 2 R, non necessariamente distinto da R 1, con una chiave K = fk 1 ;K 2 ;:::;K m g, con m = n. 11
} Informalmente, un'istanza r=fr 1 ;r 2 ;:::g su R soddisfa il vincolo di integrita referenziale se i valori sulla foreign key FK di ciascuna tupla di r 1 sono valori della chiave K di r 2, o sono valori nulli. } Formalmente, un'istanza r=fr 1 ;r 2 ;:::g su R, soddisfa il vincolo di integrita referenziale se e solo se 8t 1 2 r 1 t 1 [FK i ]=null_9t 2 2 r 2 : t 1 [FK i ]=t 2 [K i ]; 81 i n Notazione : R 1 (X) FK: FK 1 ;:::FK n REFERENCES R 2 (K 1 ;:::K n ) Se K 1 ;:::K n e la chiave primaria di R 2 puo essere omessa: FK: FK 1 ;:::FK n REFERENCES R 2 Esempio : CORSO (CODICE, NOME, CODDOC) FK: CODDOC REFERENCES DOCENTE 12
Dipendenze Funzionali } Dato uno schema di relazione R(X), una dipendenza funzionale su R e un vincolo di integrita espresso nella forma Y,! Z, dove Y e Z sono sottoinsiemi di X; in tal caso si dice che Y determina funzionalmente Z } Un'istanza r di R soddisfa la dipendenza funzionale Y,! Z se in ogni tupla di r il valore di Y determina univocamente il valore di Z. } Formalmente, dato uno schema di relazione R(X), un'istanza r di R soddisfa il vincolo di dipendenza funzionale Y,! Z su R se e solo se 8t 1 ;t 2 2 r;t 1 [Y ]=t 2 [Y ]=) t 1 [Z] =t 2 [Z] } E facile vericare che se Y Z allora Y,! Z. Queste dipendenze funzionali vengono dette banali. } E facile vericare che una superchiave K di uno schema R(X) determina funzionalmente tutti gli attributi di X: K X e superchiave di R(X) sse K,! X 13
Istanza Legale di Base di Dati : } Dato uno schema di basi di dati R = fr 1 (X 1 );R 2 (X 2 );:::R n (X n )g, un'istanza r = fr 1 ;r 2 ;:::r n g su R tale che ciascuna relazione r i soddisfa il vincolo di entity integrity r soddisfa tutti i vincoli di integrita referenziale imposti su R ciascuna relazione r i funzionali su R i soddisfa tutte le dipendenze verra detta istanza legale della base di dati R. 14