Il Modello Relazionale Il modello relazionale dei dati, proposto nel 1970 ed adottato nei sistemi commerciali a partire dal 1978, si è diffuso rapidamente tanto sui sistemi grandi quanto sugli elaboratori personali. Definizione: I meccanismi per definire database con il modello relazionale sono l’ennupla (o record) e la relazione (o tabella): una relazione R è definita da un insieme finito di coppie (campi) della forma T = (A1: T1, A2:T2,…, Ak:Tk) dove gli Ai sono detti attributi e i Ti sono tipi elementari lo schema di una base di dati è un insieme di relazione Ri(Ti); un’istanza di una relazione R(T) è un insieme finito di ennuple di tipo T, cioe di oggetti della forma (A1:v1, A:v2, …, Ak:vk) dove i vi sono di tipo Ti
Esempio: relazione Studenti Modello relazionale Esempio: relazione Studenti Schema Relazione Studenti(Nome: string, Matricola: string, Provincia: string, AnnoNascita:int) attributo Istanza di Studenti ennupla 1980 PI 175649 Bonini 1078 LI 179856 Bianchi 1975 LU 167459 Rossi 171523 Isaia AnnoNascita Provincia Matricola Nome Valore di attributo Per semplicità una relazione si rappresenta come una tabella le cui colonne rappresentano gli attributi della relazione e le righe le ennuple della relazione.
Modello relazionale Chiavi Chiave Un insieme di campi di una tabella è una chiave se per ogni istanza di tale tabella non esistono due record che coincidano su tutti i valori di tali campi. Chiave primaria: una delle chiavi, in genere la più corta Esempio: (Matricola) e (Nome,Indirizzo) sono chiavi in Studenti(Matricola: Int, Nome: String, Indirizzo: String)
Associazioni Associazione tra ennuple Es. Modello relazionale Associazioni Associazione tra ennuple rappresentata attraverso i valori di un insieme di attributi (chiave esterna), che assume come valori quelli della chiave primaria di un’altra relazione. Es. Studenti Nome Matricola Provincia AnnoNascita Isaia 171523 PI 1980 Esami Materia Candidato Data Voto BD 171523 12/01/01 29
Associazione: esempio Modello relazionale Associazione: esempio Studenti(Nome: string, Matricola: string, Provincia: string, AnnoNascita:int) Esami(Materia: string, Candidato*: string, Data: string, Voto: int) Studenti Nome Matricola Provincia AnnoNascita 1980 PI 175649 Bonini 1078 LI 179856 Bianchi 1975 LU 167459 Rossi 171523 Isaia AnnoNascita Provincia Matricola Nome Studenti Esami Esami 30 13/02/01 179856 FP 18 11/02/01 171523 LMM 25 15/01/01 175649 BD 167459 28 12/01/01 Voto Data Candidato* Materia Materia Data Voto
Schema grafico relazionale Modello relazionale Schema grafico relazionale Studenti(Nome: string, Matricola: string, Provincia: string, AnnoNascita:int) Esami(Materia: string, Candidato*: string, Data: string, Voto: int) Nome Materia Candidato* Data Voto Matricola Studenti Esami Provincia AnnoNascita In B c’è una chiave esterna per A Legenda: A B
Esempio: altre soluzioni 1/2 Modello relazionale Esempio: altre soluzioni 1/2 Studenti(Nome: string, Matricola: string, Provincia: string, AnnoNascita:int, Esame*:int) Esami(Codice :int, Materia: string, Data: string, Voto: int) Nome Materia Codice Data Voto Matricola Esame* Studenti Esami Provincia AnnoNascita
Esempio: altre soluzioni 2/2 Modello relazionale Esempio: altre soluzioni 2/2 Studenti(Nome: string, Matricola: string, Provincia: string, AnnoNascita:int) Esami(Codice :int, Materia: string, Data: string, Voto: int) StudentiEsami(Esame*: int, Candidato*: string) Nome Materia Codice Data Voto Matricola Studenti Esami Provincia AnnoNascita StudentiEsami Candidato* Esame*
Trasf. di schemi ER in relazionali Conversione ER-relazionale Trasf. di schemi ER in relazionali Il modello relazionale non si presta alla modellazione concettuale per la sua povertà espressiva Attributi con tipi elementari Associazioni con chiavi esterne, (1:1) o (0:n)? Quindi: Si modella con diagrammi ER Regole di trasformazione da ER a formalismo grafico relazionale
Passi di trasformazione Conversione ER-relazionale Passi di trasformazione Passi di trasformazione: Trasf. associazioni 1:1 e 0:n Trasf. associazioni n:n Trasf. Gerarchie di inclusione Identificazione chiavi primarie Trasf. attributi multivalore Appiattimento attributi composti Scopo: Rappresentare le stesse informazioni Minimizzare la ridondanza Schema comprensibile Evitare sprechi di memoria
Conversione ER-relazionale Associazioni 0:n Nome Materia Data Voto Matricola Esami Studenti Provincia AnnoNascita Materia Candidato* Data Voto Nome Matricola Esami Studenti Provincia AnnoNascita Regola Chiave esterna aggiunta alla tabella con associazione univoca
Conversione ER-relazionale Associazioni 1:1 DirettaDa DirettoreDi Nome idFacolta Indirizzo Facolta Professori Nome Nome idFacolta Direttore* Indirizzo idProfessore Professori Facolta Provincia AnnoNascita Regola Chiave esterna aggiunta a una qualsiasi delle due tabelle coinvolte (precedenza al vincolo di totalità)
Conversione ER-relazionale Associazioni unarie Nome idPersona compagnoDi Persone Provincia AnnoNascita Nome idPersona Compagno* Persone Provincia AnnoNascita Regola Si aggiunge una chiave esterna alla tabella stessa
Conversione ER-relazionale Associazioni n:n Nome idPersona idConto Persone CCorrenti Saldo idPersona* idConto* Nome idPersona idConto Persone Persone-CC CCorrenti Saldo Regola Si aggiunge una terza tabella che contiene le chiavi esterne relative alle due tabelle coinvolte.
Associazione con proprietà Conversione ER-relazionale Associazione con proprietà Data Titolo idLibro Nome Libri Utenti idUtente Autore prestatoA libriInPrestito Titolo Utente* Nome Autore Libri Utenti idUtente Data idLibro Libro* Data Utente* Titolo Nome Autore Libri Prestiti Utenti idUtente idLibro Regola Attributi aggiunti alla tabella con chiave esterna, oppure ad una terza tabella con due chiavi esterne
Esempio di conversione Conversione ER-relazionale Esempio di conversione Editori Autori Utenti Libri Prestiti Editori Libri Prestiti Autori-Libri Autori Utenti
Attributi multivalore Conversione ER-relazionale Attributi multivalore Persone LingueParlate Lingua Persone LingueParlate Lingua Persone LingueParlate Persone LingueParlate Lingue
Conversione ER-relazionale Le sottoclassi Persone [ nome: string età: int codice: int ] Diventa: Persone ( Nome: string età: int codice: int ) Studenti [ corsoDiLaurea: string matricola: int ] Studenti ( codice*: int corsoDiLaurea: string matricola: int ) Oppure: Oppure: ( Nome: string età: int codice: int ) ( nome: string età: int codice: int corsoDiLaurea: optional string matricola: optional int ) Persone Persone ( codice: int Nome: string età: int corsoDiLaurea: string matricola: int ) Studenti
Conversione ER-relazionale Le sottoclassi (cont.) Persone AttrP con chiave ChP AttrM Maschi Femmine AttrF AttrM optional Persone AttrP con chiave ChP AttrF optional AttrM con chiave esterna ChP AttrP con chiave ChP e AttrM Maschi Maschi AttrP con chiave ChP Persone AttrP con chiave ChP e AttrF Femmine AttrF con chiave esterna ChP Femmine
Conversione ER-relazionale Criteri di scelta Numero di attributi delle sottoclassi Tipo di operazioni Riguardano tutte le informazioni di elementi di una sottoclasse? Riguardano la visita di tutti gli elementi della superclasse?
Linguaggi relazionali Per il modello relazionale sono stati definiti due principali linguaggi che sono stati poi usati per definire e implementare il linguaggio SQL dei DBMS. Algebra relazionale insieme di operatori su relazioni che danno come risultato relazioni. Non si usa come linguaggio di interrogazione dei DBMS ma come rappresentazione interna delle interrogazioni. Calcolo relazionale linguaggio dichiarativo di tipo logico dal quale è stato derivato l'SQL.
Linguaggi relazionali Algebra relazionale Notazione R e S relazioni t, s ennuple A,B,C attributi X,Y,Z insiemi di attributi Operatori di base Proiezione Restrizione Ridenominazione Prodotto Giunzione
Linguaggi relazionali Proiezione Proiezione (): elimina gli attributi che non sono nella lista di proiezione A1...An (R) Qual è il tipo del risultato? Se R ha n elementi quanti ne ha il risultato?
Linguaggi relazionali Esempi di proiezione Studenti 1980 PI 175649 Bonini 1078 LI 179856 Bianchi 1975 LU 167459 Rossi 171523 Isaia AnnoNascita Provincia Matricola Nome Nome, Matricola (Studenti) Nome (Studenti) Nome Matricola Isaia 171523 Rossi 167459 Bianchi 179856 Bonini 175649 Nome Isaia Rossi Bianchi Bonini
Linguaggi relazionali Restrizione Restrizione (selezione) (): seleziona le ennuple della relazione che soddisfano la condizione. Condizione (R) Qual è il tipo del risultato? Se R ha n elementi quanti ne ha il risultato?
Esempio di restrizione Linguaggi relazionali Esempio di restrizione Studenti 1980 PI 175649 Bonini 1078 LI 179856 Bianchi 1975 LU 167459 Rossi 171523 Isaia AnnoNascita Provincia Matricola Nome s AnnoNascita<1979 (Studenti) 1078 LI 179856 Bianchi 1975 LU 167459 Rossi AnnoNascita Provincia Matricola Nome
Es. di composizione di operatori Linguaggi relazionali Es. di composizione di operatori Studenti 1980 PI 175649 Bonini 1078 LI 179856 Bianchi 1975 LU 167459 Rossi 171523 Isaia AnnoNascita Provincia Matricola Nome Il numero di matricola degli studenti nati prima del 1979 Matricola(s AnnoNascita<1979 (Studenti) ) 179856 167459 Matricola
Prodotto e ridenominazione Linguaggi relazionali Prodotto e ridenominazione Prodotto (´): l'operatore ha due argomenti R e S con attributi distinti e il risultato è una relazione con elementi ottenuti concatenando ogni ennupla di R con tutte quelle di S. a A b B a1 A1 b1 B1 a1 A1 b2 B2 a1 A1 b3 B3 a2 A2 b1 B1 a2 A2 b2 B2 a2 A2 b3 B3 b B b1 B1 b2 B2 b3 B3 a A a1 A1 a2 A2 Ridenominazione (): cambia il nome di un attributo di una relazione A B (R)
Linguaggi relazionali Giunzione Giunzione naturale ( ) R(ZX) e S(YX) R S = { t | t[XY]R e t[ZX]S } A B a A B a A a1 A1 a2 A2 A1 B1 a1 A1 B1 a1 A1 B3 a2 A2 B3 A3 B2 A1 B3 A2 B3 Giunzione esplicita R S R.A = S.B
Linguaggi relazionali Esempi di giunzione 1/4 Trovare i nomi degli studenti che hanno passato un esame con voto inferiore a 28 Studenti 1980 PI 175649 Bonini 1978 LI 179856 Bianchi 1975 LU 167459 Rossi 171523 Isaia AnnoNascita Provincia Matricola Nome Esami 30 13/02/01 179856 FP 18 11/02/01 171523 LMM 25 15/01/01 175649 BD 167459 28 12/01/01 Voto Data Candidato* Materia
Linguaggi relazionali Esempi di giunzione 2/4 25 15/01/01 175649 BD 1980 PI Bonini 30 13/02/01 179856 FP 1978 LI Bianchi 167459 1975 LU Rossi 18 11/02/01 171523 LMM Isaia 28 12/01/01 Voto Data Candidato Materia AnnoNascita Provincia Matricola Nome Nome(s Voto<28 (Studenti Esami)) Matricola = Candidato
Linguaggi relazionali Esempi di giunzione 3/4 Nome(s Voto<28 (Studenti Esami)) Matricola = Candidato Nome Matricola Provincia AnnoNascita Materia Candidato Data Voto Isaia 171523 PI 1980 LMM 171523 11/02/01 18 Bonini 175649 PI 1980 BD 175649 15/01/01 25
Linguaggi relazionali Esempi di giunzione 4/4 Nome(s Voto<28 (Studenti Esami)) Matricola = Candidato Bonini Isaia Nome
Trasformazioni algebriche Linguaggi relazionali Trasformazioni algebriche Basate su regole di equivalenza fra espressione algebriche Consentono di scegliere diversi ordini di join e di anticipare proiezioni e restrizioni. Consideriamo la relazione R(A, B, C, D): A ( A B ( ( R ) ) ) A ( R ) A B C C 1 ( C 2 ( C 3 ( R ) C 1 2 3 ( R ) C 1 2 ( E 1 E 2 ) C 1 ( E 1 ) C 2 ( E 2 ) R (S T) (R S) T (R S) (S R) Ottimizzazione algebrica: anticipazione delle proiezioni e delle restrizioni rispetto al prodotto per ridurre la dimensione dei risultati intermedi
Alberi logici e trasformazioni algebriche Linguaggi relazionali Alberi logici e trasformazioni algebriche Consideriamo le relazioni R(A, B, C, D) e S(E, F, G) e l'espressione: A,F(A=100 and F > 5 and A = E (R x S)) A,F A,F A = E A=100 F > 5 A = E A E, F R S A=100 F > 5 R S
Extra su Algebra Relazionale
Algebra relazionale: (cont.) Linguaggi relazionali Algebra relazionale: (cont.) Unione (): l'operatore ha due argomenti R e S dello stesso tipo e il risultato è una relazione ottenuta facendo l'unione delle ennuple di R con quelle di S. R S Differenza (-): l'operatore ha due argomenti R e S dello stesso tipo e il risultato è una relazione contenente le ennuple di R non presenti in S. R - S = { t | tR e tS } Qual è il tipo del risultato? Se R e S hanno n elementi quanti ne ha il risultato? Se t1 è un'ennupla non in R , allora R = (R {t1}) - {t1})
Algebra relazionale: (cont.) Linguaggi relazionali Algebra relazionale: (cont.) Semi-giunzione ( ) R(ZX) e S(YX) R S = { t R | t[X] X(S) } A B a A A B A1 B1 a1 A1 A1 B1 A3 B2 a2 A2 A1 B3 A1 B3 A2 B3 a2 A4 A2 B3
Algebra relazionale: (cont.) Linguaggi relazionali Algebra relazionale: (cont.) Operatori derivati Intersezione () R S = { t | t R e t S } Divisione ( \ ) R \ S = { t | {t} S R} vale che (R S)\S = R a A b B a1 A1 b1 B1 a1 A1 b2 B2 a1 A1 b3 B3 a2 A2 b1 B1 a2 A2 b2 B2 a2 A2 b3 B3 b B b1 B1 b2 B2 b3 B3 a A a1 A1 a2 A2