Modello Relazionale
Transcript
Modello Relazionale
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 = fv1; v2; : : : ; vkg Tupla : Dati n domini D1; D2; : : : ; Dn, non necessariamente distinti una ennupla (tupla) ordinata e denita come t = (v1; v2; : : : ; vn); vi 2 Di; 81 i n Prodotto Cartesiano : Il prodotto cartesiano di n domini D1; D2; : : : ; Dn, non necessariamente distinti, indicato con D1 D2 : : : Dn, e l'insieme di tutte le tuple t su D1; D2; : : : ; Dn. Relazione : Una relazione R su n domini D1; D2; : : : ; Dn, non necessariamente distinti, e un sottoinsieme del prodotto cartesiano D1 D2 : : : Dn: R D1 D2 : : : Dn Il valore di n viene chiamato Grado della relazione 1 Il numero di tuple viene chiamata Cardinalita della relazione Esempi : D1 = fv11; v12g D1 D2 D2 = fv21; v22; v23g = f(v11; v21); (v11; v22); (v11; v23); v12; v21); (v12; v22); (v12; v23)g R1 = f(v11; v21); (v11; v22)g R2 = fg R3 = f(v11; v21); (v11; v22); (v12; v21); (v12; v22)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 R3 v11 v11 v12 v12 v21 v22 v21 v22 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 = (A1; A2; : : : ; An), indicato con R(X ). Dato uno schema R(X ) si dice anche che lo schema della relazione R e X . } I nomi degli attributi Ai devono essere tutti diversi. Istanza di relazione : Una istanza di relazione o relazione su uno schema R(A1; A2; : : : ; An) e un insieme r di tuple su A ; A2; : : : ; An) ( 1 3 Schema di base di dati : E un insieme di schemi di relazioni R fR1(X1); R2(X2); : : : ; Rn(Xn)g = Tutti i nomi di relazione Ri devono essere dierenti. Istanza di base di dati : Dato uno schema di base di dati R = fR1(X1); R2(X2); : : : ; Rn(Xn)g, una istanza su R e un insieme di relazioni r = fr1; r2; : : : ; rng; dove ri e una relazione su Ri; 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 fX g [ 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, CITT A, ACORSO) CORSO(CODICE, NOME, CODDOC) DOCENTE(CODICE, CF, CITT A) FREQUENZA(MATR, CODCOR) g Istanza di base di dati : STUDENTE CORSO MATR NOME CITT A ACORSO M1 M2 Marco Quaranta Giacomo Tedesco SA PA 1 2 M3 M4 Maria Mei Ugo Rossi BO MO 1 2 M5 M6 Sara Neri Agata Verdi MO MI 2 1 CODICE NOME CODDOC C1 C2 Fisica 1 Analisi Matematica 1 D1 D2 C3 C4 Fisica 2 Analisi Matematica 2 D1 D2 C5 Meccanica Razionale D4 5 DOCENTE FREQUENZA CODICE CF CITT A D1 D2 CF1 CF2 MO BO D3 CF3 MO D4 CF4 FI MATR CODCOR M1 M1 C1 C3 M2 M2 C1 C2 M3 M3 C1 C2 M3 M3 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 : 8t1; t2 2 r; K [t1] = K [t2] =) t1 t2 cioe, non esistono due tuple distinte di r con lo stesso valore della chiave 2. Minimalita : 8Ai 2 K; K , Ai 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(K1; K2; : : : ; Km; A2; : : : ; An) } Una chiave alternativa di uno schema R(X ) e riportata di seguito allo schema, contraddistinta dalla parola chiave AK: R (X ) AK: K1; : : : Km Esempio : DOCENTE (CODICE, CF, CITT A) 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 K1; K2; : : : ; Km, R(K1; K2; : : : ; Km; A2; : : : ; An), soddisfa il vincolo di Entity integrity se e solo se 8t 2 r; t[Ki] 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 = fFK1; FK2; : : : ; FKng di uno schema di relazione R1 2 R Chiave della Relazione riferita : schema di relazione R2 2 R, non necessariamente distinto da R1, con una chiave K = fK1; K2; : : : ; Kmg, con m = n. 11 } Informalmente, un'istanza r = fr1; r2; : : :g su R soddisfa il vincolo di integrita referenziale se i valori sulla foreign key FK di ciascuna tupla di r1 sono valori della chiave K di r2, o sono valori nulli. } Formalmente, un'istanza r = fr1; r2; : : :g su R, soddisfa il vincolo di integrita referenziale se e solo se 8t1 2 r1 t1[FKi] = null_9t2 2 r2 : t1[FKi] = t2[Ki]; 81 i n Notazione : R1(X ) FK: FK1; : : : FKn REFERENCES R2(K1; : : : Kn) Se K1; : : : Kn e la chiave primaria di R2 puo essere omessa: FK: FK1; : : : FKn REFERENCES R2 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 8t1; t2 2 r; t1[Y ] = t2[Y ] =) t1[Z ] = t2[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 fR1(X1); R2(X2); : : : Rn(Xn)g, un'istanza r fr1; r2; : : : rng su R tale che = = ciascuna relazione ri soddisfa il vincolo di entity integrity r soddisfa tutti i vincoli di integrita referenziale imposti su R ciascuna relazione ri soddisfa tutte le dipendenze funzionali su Ri verra detta istanza legale della base di dati R. 14