Modello Relazionale dei DBMS - Vincoli Tradizionalmente, esistono quattro modelli logici: Gerarchico Reticolare Relazionale A oggetti XML I modelli gerarchico e reticolare sono più vicini alle strutture fisiche di memorizzazione, il modello relazionale è più astratto, mentre il modello XML e' il più generalizzabile. Il modello Relazionale si basa sul concetto matematico di relazione. Le relazioni hanno una rappresentazione naturale per mezzo di tabelle. Nella rappresentazione tabellare, a ciascuna colonna associamo un nome (detto attributo), unico in quella tabella. Tali attributi possono essere pensati come le intestazioni delle colonne, ovvero come i nomi dei diversi campi delle singole righe della tabella. Nel modello relazionale si rappresentano solo valori. Anche i riferimenti fra dati in relazioni (tabelle) diverse sono rappresentati per mezzo dei valori stessi; i riferimenti fra dati in relazioni/tabelle diverse sono rappresentati per mezzo di valori che compaiono nelle righe. ad es. i campi codice nelle tabelle esami e sostenuti del nostro esempio servono a mantenere le informazioni sul legame che vincola i dati nelle due diverse tabelle; Diversamente, nei modelli gerarchico e reticolare si utilizzano riferimenti espliciti 1 (puntatori) fra record.
Modello Relazionale I riferimenti fra dati in relazioni (tabelle) diverse sono rappresentati per mezzo dei valori stessi sostenuti codice matricola anno voto 1 11 2006 30 4 13 2007 28 2 13 2006 30 3 11 2007 18 1 13 2007 30 studenti matricola nome cognome citta anno 11 marco bini bologna 1985 13 laura sicuro rimini 1984 esami codice nome 1 Reti di Calcolatori 2 Sistemi Operativi 3 Programmazione 4 Analisi Matematica 2
Gestione dell Informazione Incompleta ll modello relazionale impone ai dati una struttura rigida: le informazioni sono rappresentate per mezzo di ennuple solo alcuni formati di ennuple sono ammessi: quelli che corrispondono agli schemi di relazione I dati disponibili possono non corrispondere esattamente al formato previsto, per varie ragioni: valore sconosciuto: esiste un valore del dominio, ma non è noto (non so il nome del prefetto di Torino) valore inesistente: non esiste un valore del dominio (nel paese di Gattolino (FC) non esiste il prefetto) valore senza informazione: non è noto se esista o meno un valore del dominio (non so se esiste il prefetto di Atripalda (AV) ) Quindi, può non essere possibile riempire le tabelle di valori. Soluzione: Si usa una tecnica brutale ma efficace, definire e usare un valore nullo: valore nullo: denota l assenza di un valore del dominio (e non è un valore del dominio) Formalmente, è sufficiente estendere il concetto di valore con il valore nullo NULL Si possono (e debbono) però imporre delle restrizioni sulla presenza di valori nulli paese abitanti provincia Prefetto Firenze 500003 FI Dandini Torino 800090 TO NULL Gattolino 17 FC NULL Atripalda 10000 AV NULL Cesena 92000 FC Casadei 3
Vincolo di Integrità Definizione proprietà che deve essere soddisfatta dai valori dei dati affinchè questi rappresentino informazioni corrette per l applicazione. Se la proprieta non è soddisfatta il DB si trova in uno stato inconsistente. Tipi di vincoli: vincoli intra-tabellari; casi particolari: vincoli su valori (o di dominio) Un campo di una tabella può assumere valori solo in un certo dominio, dipendente solo dal campo stesso. Es: campo VotoEsame deve essere compreso tra 18 e 30. vincoli di riga Un vincolo che coinvolge i valori di un insieme di campi di una stessa riga. Tali campi possono assumere valori solo in un certo dominio, dipendente dai valori dei campi di quell insieme. Es: in tabella Bilancio un vincolo sui campi Ricavo, Spese, Guadagno può essere: Guadagno = Ricavo - Spese. Caso particolare - Vincoli di Chiave Deve esistere un modo di identificare univocamente ciascuna riga in ciascuna tabella (vedi dopo). vincoli inter-tabellari o di integrità referenziale Nascono dal fatto che i riferimenti fra dati in tabelle diverse sono rappresentati per mezzo dei valori stessi. Permettono di mettere in relazione righe di tabelle diverse sulla base dei valori comuni di alcuni campi. La loro definizione necessita di un meccanismo per identificare ciascuna riga di una tabella. (vedi dopo) 4
Identificazione delle Righe - Chiavi Chiave (Key) Definizione: insieme minimale di attributi che identificano univocamente le righe di una tabella Importanza delle chiavi - l esistenza delle chiavi garantisce l accessibilità a ciascun dato della base di dati ogni singolo valore è univocamente accessibile tramite: nome della relazione valore della chiave nome dell attributo le chiavi sono lo strumento principale attraverso il quale vengono correlati i dati in relazioni diverse ( il modello relazionale è basato su valori ) Chiavi e Valori Nulli - In presenza di valori nulli nella chiave, i valori degli attributi che formano la chiave non permettono di identificare le ennuple come desiderato né permettono di realizzare facilmente i riferimenti da altre relazioni Conseguenza: La presenza di valori nulli nelle chiavi deve essere limitata Soluzione pratica: Chiave Primaria per ogni relazione scegliamo una chiave (la chiave primaria) su cui non ammettiamo valori nulli. Notazione per la chiave primaria: gli attributi che la compongono sono sottolineati 5
Vincoli di integrità referenziale ( foreign key ) consentono di correlare informazioni presenti in tabelle diverse. informazioni in relazioni diverse sono correlate attraverso valori comuni in particolare, valori delle chiavi (primarie, di solito) Definizione - un vincolo di integrità referenziale fra un insieme di attributi X di una tabella T1 e un altra tabella T2 impone ai valori su X di ciascuna riga dell istanza di T1 di comparire come valori della chiave (primaria) dell istanza di T2 Nel nostro DB di esempio esistono vincoli di integrità referenziale tra: L attributo matricola (X) della tabella sostenuti (T1) e la tabella studenti (T2), in quanto l attributo matricola (X) della tabella sostenuti (T1) deve comparire come valore della chiave primaria matricola della tabella studenti (T2). L attributo codice (X) della tabella sostenuti (T1) e la tabella esami (T2), in quanto l attributo codice (X) della tabella sostenuti (T1) deve comparire come valore della chiave primaria codice della tabella esami (T2). sostenuti codice matricola anno voto 1 11 2006 30 4 13 2007 28 2 13 2006 30 3 11 2007 18 1 13 2007 30 studenti matricola nome cognome citta anno 11 marco bini bologna 1985 13 laura sicuro rimini 1984 esami codice nome 1 Reti di Calcolatori 2 Sistemi Operativi 3 Programmazione 4 Analisi Matematica 6