710 likes | 887 Views
IL MODELLO RELAZIONALE. Cronologia dei modelli per la rappresentazione dei dati. Modello gerarchico (anni 60) Modello reticolare (anni 70) Modello relazionale (anni 80-90) Modello a oggetti (2000). Il modello relazionale. Proposto da E. F. Codd nel 1970 per favorire l’indipendenza dei dati
E N D
Cronologia dei modelli per la rappresentazione dei dati • Modello gerarchico (anni 60) • Modello reticolare (anni 70) • Modello relazionale (anni 80-90) • Modello a oggetti (2000) Modello Relazionale
Il modello relazionale • Proposto da E. F. Codd nel 1970 per favorire l’indipendenza dei dati • Disponibile in DBMS reali nel 1981 (non è facile implementare l’indipendenza con efficienza e affidabilità!) • Si basa sul concetto matematico di relazione Modello Relazionale
Relazione: tre accezioni • relazione matematica: come nella teoria degli insiemi • relazione secondo il modello relazionale dei dati • relazione nel modello Entity-Relationship (chiamata anche associazione) Modello Relazionale
Relazione matematica • D1, …,Dn (n insiemi anche non distinti) • prodotto cartesianoD1×…×Dn: • l’insieme di tutte le n-uple (d1, …, dn) tali che d1D1, …, dn Dn • relazione matematica su D1, …, Dn: • un sottoinsieme di D1×…×Dn. • D1, …, Dn sono i domini della relazione • n è il grado della relazione Modello Relazionale
a x a y a z b x b y b z a x a z b y Relazione matematica, esempio • una relazione r D1 × D2 • D1={a,b} • D2={x,y,z} • prodotto cartesianoD1 × D2 Modello Relazionale
Relazione matematica, proprietà • Una relazione è un insieme; quindi: • non c'è ordinamento fra le n-uple; due tabelle con le stesse righe rappresentano la stessa tabella • le n-uple sono distinte • ciascuna n-upla è ordinata: l’ i-esimo valore proviene dall’ i-esimo dominio Modello Relazionale
Juve Lazio 3 1 Lazio Milan 2 0 Juve Roma 0 2 Roma Milan 0 1 Relazione matematica, esempio • Partitestring × string × int × int • Ciascuno dei domini ha due ruoli diversi, distinguibili attraverso la posizione: • La struttura è posizionale Modello Relazionale
Casa Fuori RetiCasa RetiFuori Juve Lazio 3 1 Lazio Milan 2 0 Juve Roma 0 2 Roma Milan 0 1 Struttura non posizionale • A ciascun dominio si associa un nome (attributo), che ne descrive il "ruolo" Modello Relazionale
Tabelle e relazioni • Una tabella rappresenta una relazione se • i valori di ogni colonna sono fra loro omogenei • le righe sono diverse fra loro • le intestazioni delle colonne sono diverse tra loro • In una tabella che rappresenta una relazione • l’ordinamento tra le righe è irrilevante • l’ordinamento tra le colonne è irrilevante Modello Relazionale
Confronto della terminologia • unica differenza significativa: • definizione formale: assenza di duplicati • definizione informale: possibili duplicati Modello Relazionale
Relazioni e basi dati • Una relazione può essere usata per rappresentare dati di interesse, ma in genere non è sufficiente • Una base di dati è costituita da più relazioni, le cui n-uple contengono valori comuni; • Il modello relazionale è basato sui valori • i riferimenti fra dati in relazioni diverse sono rappresentati per mezzo di valori dei domini che compaiono nelle ennuple Modello Relazionale
studenti Matricola Cognome Nome Data di nascita 9283 8765 3456 6554 Rossi Verdi Rossi Neri Luisa Mario Paolo Maria 01/02/1978 05/12/1978 03/11/1976 12/11/1979 corsi Codice Titolo Docente 01 Analisi Mario 02 Chimica Bruni 04 Chimica Verdi esami Studente Voto Corso 3456 30 04 3456 24 02 9283 28 01 6554 26 01
studenti Matricola Cognome Nome Data di nascita 8765 3456 6554 9283 Neri Rossi Rossi Verdi Luisa Paolo Mario Maria 05/12/1978 03/11/1976 01/02/1978 12/11/1979 corsi Codice Titolo Docente 01 Analisi Mario 02 Chimica Bruni 04 Chimica Verdi esami Studente Voto Corso 30 24 28 26
Vantaggi della struttura basata su valori • la rappresentazione logica dei dati non fa riferimento a quella fisica: si ha indipendenza dalle strutture fisiche che possono cambiare dinamicamente • si rappresenta solo ciò che è rilevante dal punto di vista dell’utente; i puntatori sono qualcosa di aggiuntivo legato ad aspetti realizzativi • l’utente finale vede gli stessi dati dei programmatori • i dati sono portabili piu' facilmente da un sistema ad un altro perchè l'informazione è tutta contenuta nei dati Modello Relazionale
Definizioni • Schema di relazione: un nomeR con un insieme di attributiA1, ..., An: R(A1,..., An) A ogni attributo Ai èassociato un dominio DOM(Ai) Es. STUDENTI(Matricola, Cognome, Nome, Data_Nascita) Matricola, Cognome, Nome, Data_Nascita: Attributi DOM(Matricola)= Numeri Naturali DOM(Cognome)= String Modello Relazionale
Definizioni (2) • Schema di base di dati: insieme di schemi di relazione: R = {R1(X1), ..., Rk(Xk)} Es. UNIVERSITA (STUDENTI, ESAMI, CORSI) Modello Relazionale
Definizioni, (3) • Una ennuplatsu un insieme di attributi X è una funzione che associa a ciascun attributo A in X un valore di DOM (A) • t[A] denota il valore della ennupla tsull'attributoA • t[A] DOM (A) Modello Relazionale
studenti Matricola Cognome Nome Data di nascita 6554 8765 9283 3456 Rossi Neri Verdi Rossi Luisa Paolo Mario Maria 01/02/1978 03/11/1976 05/12/1978 12/11/1979 t: (6554, Rossi, Mario, 05/12/1978) : n-upla t[Matricola ]= 6554, t[Cognome, Data di nascita ]= (Rossi, 05/12/1978)
Definizioni, (4) • (Istanza di) relazione su uno schema R(X):insieme r di ennuple su X • (Istanza di) basedi dati su uno schema R= {R1(X1), ..., Rn(Xn) insieme di relazioni r = {r1,..., rn} (con ri relazione su Ri) Modello Relazionale
studenti Matricola Cognome Nome Data di nascita 8765 6554 9283 3456 Rossi Verdi Neri Rossi Mario Paolo Maria Luisa 05/12/1978 01/02/1978 12/11/1979 03/11/1976 studenti lavoratori Matricola 6554 3456 Relazioni su singoli attributi Modello Relazionale
Strutture nidificate Da Filippo Via Roma 2, Roma Da Filippo Via Roma 2, Roma Ricevuta Fiscale 1235del 12/10/2000 Ricevuta Fiscale 1240del 13/10/2000 3 Coperti 2,00 2 Coperti 2,00 2 Antipasti 3,00 6,20 2 Antipasti 7,00 3 Primi 12,00 2 Primi 8,00 2 Bistecche 18,00 2 Orate 20,00 2 Caffè 2,00 Totale 39,20 Totale 39,00
Relazioni che rappresentano strutture nidificate Ricevute Numero Data Totale 1235 12/10/2000 39,20 1240 13/10/2000 39,00 Numero Qtà Descr. Importo Dettaglio 1235 3 Coperti 3,00 1235 2 Antipasti 6,20 1235 3 Primi 12,00 1235 2 Bistecche 18,00 1240 2 Coperti 2,00 … … … … Modello Relazionale
Strutture nidifcate, riflessione • Le tabelle rappresentano correttamente le ricevute solo se: • Non ci interessa mantenere l'ordine delle righe in ciascuna ricevuta • Non possono esistere linee ripetute in una ricevuta (potrebbe accadere in presenza di ordinazioni diverse relative alle stesse pietanze) • Sono possibili rappresentazioni diverse Modello Relazionale
Rappresentazione alternativa per strutture nidificate Ricevute Numero Data Totale 1235 12/10/2000 39,20 1240 13/10/2000 39,00 Numero Riga Qtà Descrizione Importo Dettaglio 1235 1 3 Coperti 3,00 1235 2 2 Antipasti 6,20 1235 3 3 Primi 12,00 1235 4 2 Bistecche 18,00 1240 1 2 Coperti 2,00 … … … … … Modello Relazionale
Informazione incompleta • ll modello relazionale impone ai dati una struttura rigida: • le informazioni sono rappresentate per mezzo di ennuple omogenee • solo alcuni formati di ennuple sono ammessi: quelli che corrispondono agli schemi di relazione • I dati disponibili possono non corrispondere al formato previsto Modello Relazionale
Informazione incompleta: motivazioni Città Prefettura Roma Via IV novembre Firenze Tivoli Prato • Firenze è provincia ma non conosciamo la sede della prefettura • Tivoli non è una provincia: non ha prefettura • Prato è nuova provincia: avrà la prefettura? Modello Relazionale
Valori nulli • In alcuni casi può essere necessario rappresentare in modo semplice la non disponibilità di valori: • valore sconosciuto; • valore inesistente; • valore senza informazione; Modello Relazionale
Informazione incompleta: soluzioni? • non conviene (anche se spesso si fa) usare valori del dominio (0, stringa nulla, “99”, ...): • potrebbero non esistere valori “non utilizzati” • valori “non utilizzati” potrebbero diventare significativi in un momento successivo • potrebbe creare confusione: i programmi che accedono alla base di dati devono distinguere tra valori ''veri'' e fittizi, e dunque sarebbe necessario ogni volta tener conto del “significato” di questi valori Modello Relazionale
Informazione incompleta nel modello relazionale • Si adotta una tecnica rudimentale ma efficace per esprimere la non disponibilità di valori: • valore nullo: denota l’assenza di un valore del dominio (e non è un valore del dominio) • I DBMS non distinguono i tipi di valore nullo • Definizione estesa:per ogni t-upla t , e per ogni attributo A, t[A], è un valore del dominio dom(A) oppure il valore nullo NULL • Si possono (e debbono) imporre restrizioni sulla presenza di valori nulli: solo alcune configurazioni debbono essere ammesse Modello Relazionale
9283 6554 NULL Verdi Rossi Rossi Maria Mario Luisa 12/11/1979 NULL 01/02/1978 corsi Codice Titolo Docente 01 Analisi Mario 02 Chimica NULL NULL Chimica Verdi Troppi valori nulli ! studenti Matricola Cognome Nome Data di nascita esami Studente Voto Corso NULL 30 NULL NULL 24 02 9283 28 01 Modello Relazionale
Vincoli di integrità • Non è vero che ogni insieme di ennuple sullo schema rappresenta informazioni corrette per l'applicazione • Esistono istanze di basi di dati che, pur sintatticamente corrette, non rappresentano informazioni possibili per l’applicazione di interesse Modello Relazionale
Esami Studente Voto Lode Corso 32 01 30 e lode 02 276545 787643 03 276545 739430 24 04 27 27 e lode e lode Studenti Matricola Cognome Nome 276545 Rossi Mario Neri Piero 787643 787643 787643 Bianchi Luca 787643 Una base di dati "scorretta" 32 739430 Modello Relazionale
Vincolo di integrità • Proprietà che deve essere soddisfatta dalle istanze che rappresentano informazioni corrette per l’applicazione • Un vincolo è una funzione booleana che associa ad ogni istanza il valore vero (in tal caso l'istanza soddisfa il vincolo) o falso • Ogni schema di base dati ha associato un insieme di vincoli • Una istanza della base di dati è corretta se soddisfa tutti i vincoli Modello Relazionale
Vincoli di integrità, perché? • descrizione più accurata della realtà • contributo alla “qualità dei dati” • utili nella progettazione della base di dati • usati dai DBMS nell‘esecuzione delle interrogazioni Osservazione: non tutte le proprietà di interesse sono rappresentabili per mezzo di vincoli formulabili in modo esplicito Modello Relazionale
Tipi di vincoli • vincoli intrarelazionali • vincoli su valori (o di dominio) • vincoli di ennupla • vincoli interrelazionali (vincoli di integrità referenziale) Modello Relazionale
Esami Studente Voto Lode Corso 32 01 30 e lode 02 276545 787643 03 276545 739430 24 04 27 27 e lode e lode Studenti Matricola Cognome Nome 276545 Rossi Mario Neri Piero 787643 Bianchi Luca 787643 Vincolo di colonna 32 Vincolo di n-upla Modello Relazionale
Vincoli di ennupla • Esprimono condizioni sui valori di ciascuna ennupla, indipendentemente dalle altre ennuple • Caso particolare: • Vincoli di colonna (o dominio): coinvolgono un solo attributo Modello Relazionale
Sintassi ed esempi • Una possibile sintassi: • espressione booleana di atomi che confrontano valori di attributo o espressioni aritmetiche su di essi (Voto 18) AND (Voto 30) (Voto = 30) OR NOT (Lode = "e lode") Modello Relazionale
Stipendi Impiegato Lordo Ritenute Netto Rossi 55.000 12.500 42.500 Neri 45.000 10.000 35.000 Bruni 47.000 11.000 36.000 Vincoli di ennupla, esempio Lordo = (Ritenute + Netto) Modello Relazionale
Corso Nascita Matricola Cognome Nome Ing Inf 27655 Rossi Mario 5/12/78 78763 Rossi Mario Ing Inf 3/11/76 Neri Piero Ing Mecc 10/7/79 65432 3/11/76 87654 Neri Mario Ing Inf 5/12/78 Ing Mecc 67653 Rossi Piero Identificazione delle ennuple • non ci sono due ennuple con lo stesso valore sull’attributo Matricola • non ci sono due ennuple uguali su tutti e tre gli attributi Cognome, Nome e Nascita Modello Relazionale
Chiave • Una chiave è un insieme di attributi che identificano univocamente le ennuple di una relazione Formalmente: • un insieme K di attributi è superchiave per r se r non contiene due ennuple distinte t1 e t2 con t1[K] = t2[K] • K è chiave per r se è una superchiave minimale per r(cioè non contiene propriamente un’altra superchiave) Modello Relazionale
Corso Nascita Matricola Cognome Nome Ing Inf 27655 Rossi Mario 5/12/78 78763 Rossi Mario Ing Inf 3/11/76 Neri Piero Ing Mecc 10/7/79 65432 3/11/76 87654 Neri Mario Ing Inf 5/12/78 Ing Mecc 67653 Rossi Piero Una chiave • Matricola è una chiave: • è superchiave • contiene un solo attributo e quindi è minimale Modello Relazionale
Corso Nascita Matricola Cognome Nome Ing Inf 5/12/78 27655 Rossi Rossi Mario Mario Rossi 5/12/78 78763 Rossi Rossi Mario Mario Ing Inf 3/11/76 Mario 3/11/76 Neri Piero Ing Mecc 10/7/79 65432 3/11/76 87654 Neri Mario Ing Inf 3/11/76 Mario 5/12/78 Ing Mecc 5/12/78 67653 Rossi Piero Rossi Un'altra chiave • Cognome, Nome, Nascita è un’altra chiave: • è superchiave • minimale Modello Relazionale
Corso Nascita Matricola Cognome Nome Ing Inf 27655 Rossi Mario 5/12/78 78763 Rossi Mario Ing Civile 3/11/76 Neri Piero Ing Mecc 10/7/79 65432 3/11/76 87654 Neri Mario Ing Inf 5/12/78 Ing Mecc 67653 Rossi Piero Un'altra chiave?? • Non ci sono ennuple uguali su Cognome e Corso: • Cognome e Corso formano una chiave? • Ma è sempre vero? Modello Relazionale
Vincoli, schemi e istanze • i vincoli corrispondono a proprietà del mondo reale modellato dalla base di dati • interessano a livello di schema (con riferimento cioè a tutte le istanze lecite) • ad uno schema associamo un insieme di vincoli e consideriamocorrettele istanze che soddisfano tutti i vincoli • un'istanza può soddisfare altri vincoli (“per caso”) Modello Relazionale
Studenti Matricola Cognome Nome Corso Nascita • chiavi: Matricola Cognome, Nome, Nascita Modello Relazionale
Corso Nascita Matricola Cognome Nome Ing Inf 27655 Rossi Mario 5/12/78 78763 Rossi Mario Ing Civile 3/11/76 Neri Piero Ing Mecc 10/7/79 65432 3/11/76 87654 Neri Mario Ing Inf 5/12/78 Ing Mecc 67653 Rossi Piero • È corretta: soddisfa i vincoli • Ne soddisfa anche altri ("per caso"): • Cognome, Corso è chiave Modello Relazionale
Esistenza delle chiavi • Una relazione non può contenere ennuple distinte ma uguali • Ogni relazione R(X) ha come superchiave l’insieme degli attributi X su cui è definita • e quindi ha (almeno) una chiave Modello Relazionale
Importanza delle chiavi • l’esistenza delle chiavi garantisce l’accessibilità a ciascun dato della base di dati e la loro univoca identificabilità • le chiavi permettono di correlare i dati in relazioni diverse: • il modello relazionale è basato su valori Modello Relazionale