Corso di Laurea in Ingegneria Informatica Algoritmi e basi di dati Modulo Basi di dati a.a. 2010-2011 2011 Docente: Gigliola Vaglini Docente laboratorio: Alessandro Lori 1 99999999 Lezione 9 I linguaggi di interrogazione dichiarativi: Calcolo Relazionale 2 1
Calcolo relazionale Una famiglia di linguaggi dichiarativi, basati sul calcolo dei predicati del primo ordine Diverse versioni: calcolo relazionale su domini calcolo su ennuple con dichiarazioni di range 3 Calcolo su domini { A1: x1,,, An: xn f } Ai sono nomi di attributi xi sono nomi di variabili La lista di coppie Ai : xi viene detta target list (descrive il risultato) f è una formula Formule atomiche sono R(A1: x1,,, An: xn), che è vera sui valori di x1 xn xn che formano una tpla di R, e xi xj,, che è vera sui valori di xi e xj che soddisfano 4 2
Calcolo su tple con dichiarazione di range { x1.z1,, xn.zn xi(r),, xj(r) f } x1.z1,, xn.zn è la target list xi(r),,, xj(r) è la range list (dice il campo di variabilità delle variabili) f è una formula, con formule atomiche del tipo xi.zi xj.zj,, ad esempio 5 Base di dati per gli esempi Impiegati(Matricola Matricola,Nome, Età, Stipendio) Supervisione(Capo, Impiegato) 6 3
Esempio 1a Trovare gli impiegati che guadagnano più di 40 milioni { Matricola: m, Nome: n, Età: : e, Stipendio: s Impiegati (Matricola: m, Nome: n, Età: : e, Stipendio: s) s > 40 } 7 Esempio 1b Trovare gli impiegati che guadagnano più di 40 milioni { i.* i(impiegati) i.stipendio > 40 } 8 4
Esempio 2a Trovare nome e matricola degli impiegati che guadagnano più di 40 milioni { Matricola: m, Nome: n Impiegati (Matricola: m, Nome: n, Età: : e, Stipendio: s) s > 40 } oppure { Matricola: m, Nome: n e,s(impiegati (Matricola: m, Nome: n, Età: : e, Stipendio: s) s > 40) } 9 Esempio 2b Trovare nome e matricola degli impiegati che guadagnano più di 40 milioni { i.(matricola, Nome) i(impiegati) i.stipendio > 40 } 10 5
Quantificatori esistenziali e universali Per interrogazioni più complesse, che in algebra ad esempio richiedevano una differenza, servono altri strumenti, Sono intercambiabili x(f)= x(f)= ( x( (f))) (f))) x(f)= x(f)= ( x( (f))) (f))) 11 Quantificatori esistenziali e universali Trovare matricola e nome dei capi i cui impiegati guadagnano tutti più di 40 milioni. {Matricola: c, Nome: n Impiegati(Matricola: c, Nome: n, Età: : e, Stipendio: s) Supervisione(Capo:c, Impiegato:m) m'( m'( n'( n'( e'( e'( s'( (Impiegati(Matricola:m', Nome:n', Età:e', Stipendio:s') Supervisione(Capo:c, Impiegato:m')) s' > 40))))} 12 6
Quantificatori esistenziali e universali Trovare matricola e nome dei capi i cui impiegati guadagnano tutti più di 40 milioni. {Matricola: c, Nome: n Impiegati(Matricola: c, Nome: n, Età: : e, Stipendio: s) Supervisione(Capo:c, Impiegato:m) m'( m'( n'( n'( e'( e'( s ( Impiegati(Matricola: m', Nome: n', Età: : e', Stipendio: s') Supervisione(Capo:c, Impiegato:m') s' 40))))} 13 Quantificatori esistenziali e universali {Matricola: c, Nome: n Impiegati(Matricola: c, Nome: n, Età: : e, Stipendio: s) Supervisione(Capo:c, Impiegato:m) m'( m'( n'( n'( e'( e'( s'( Impiegati(Matr Matr: : m', Nome: n', Età: : e', Stip: : s') Supervisione(Capo:c, Impiegato:m') s' 40))))} { i.(matricola, Nome) s(supervisione), i(impiegati) i.matricola=s.capo ( i'( i'(impiegati)( )( s' s'(supervisione) (s.capo=s'.capo s'.impiegato=i'.matricola i'.stipendio 40)))} 14 7
Calcolo su domini, discussione Pregi: dichiaratività Difetti: "verbosità": ": tante variabili! Le variabili del calcolo dei domini rappresentano singoli valori Nel calcolo su tple rappresentano tple possibilità di scrivere espressioni senza senso (dipendenti dal dominio) A:x, B:y R(A:x) y=y nell'algebra tutte le espressioni hanno un senso (indipendenti dal dominio) 15 Calcolo su tuple,, discussione Il calcolo su tuple con dichiarazioni di range non permette di esprimere alcune interrogazioni importanti, in particolare le unioni: R 1 (AB) R 2 (AB) Ogni variabile ha un solo range nel risultato, mentre vorremmo tple sia della prima relazione che della seconda Nota: intersezione e differenza sono esprimibili Per questa ragione SQL (che è basato su questo calcolo) prevede un operatore esplicito di unione, ma non tutte le versioni prevedono intersezione e differenza 16 8
Calcolo e algebra Calcolo e algebra sono "equivalenti" per ogni espressione del calcolo relazionale che sia indipendente dal dominio esiste un'espressione dell'algebra relazionale equivalente a essa per ogni espressione dell'algebra relazionale esiste un'espressione del calcolo relazionale equivalente a essa (e di conseguenza indipendente dal dominio) 17 Calcolo e algebra: limiti l'insieme di interrogazioni esprimibili è significativo Ci sono però interrogazioni interessanti non esprimibili,, ad es. interrogazioni inerentemente ricorsive, come la chiusura transitiva 18 9
Chiusura transitiva Supervisione(Impiegato, Capo) Per ogni impiegato, trovare tutti i superiori (cioè il capo, il capo del capo, e cosi' via) Impiegato Rossi Neri Lupi Capo Mori Lupi Bruni Falchi Impiegato Rossi Neri Lupi Rossi Superiore Mori Lupi Bruni Falchi Falchi 19 Chiusura transitiva Nell'esempio, basterebbe il join della relazione con se stessa, previa opportuna ridenominazione Ma aggiungiamo una nuova ennupla Impiegato Rossi Capo Mori Lupi Impiegato Rossi Neri Superiore Mori Lupi Bruni Neri Bruni Lupi Falchi Lupi Falchi Rossi Falchi Falchi Leoni Lupi Leoni Rossi Leoni 20 10
Chiusura transitiva Non esiste in algebra e calcolo relazionale la possibilità di esprimere l'interrogazione che calcoli la chiusura transitiva di una relazione qualunque L operazione si simula con un mumero di join illimitato 21 Esercitazione lezioni 5 e 6 22 11
1 Si consideri il seguente schema di base di dati Aeroporto (Città, Nazione) Volo (IdVolo, Giorno, OraArrivo, CittàArrivo, CittàPartenza, OraPartenza) Aereo (Tipo, NumPasseggeri, QuantMerci) Scrivere una espressione dell algebra relazionale che elenchi gli identificatori dei voli internazionali in partenza da Pisa con durata inferiore alle 2 ore. 23 Soluzione IdVolo ( Nazione Italia (Aeroporto) join CittàArrivo=Città CittàPartenza =Pisa OraArrivo OraPartenza ± DifferenzaMeridiano) < 2 (Volo)) Rappresentare lo stesso risultato nel calcolo dei domini. 24 12
{IdVolo:iv Volo (IdVolo: iv, Giorno: g, OraArrivo: oa, CittàArrivo: ca, CittàPartenza: cp, OraPartenza: op) Aeroporto (Città: c, Nazione:n) c=ca cp= "Pisa" n "Italia" (oa-op ± Differenzameridiano) <2} Rappresentare lo stesso risultato nel calcolo delle tuple. 25 Soluzione: { i.(idvolo) i(volo), a(aeroporto) i.cittàarrivo=a.città i.cittàpartenza = "Pisa a.nazione "Italia" i.oraarrivo-i.orapartenza + Differenzameridiano) <2 } 26 13
2 Si consideri l espressione algebrica dove R1, R2, R3 hanno gli schemi R1(AB), R2(CDE), R3(FGH). Trasformarla in modo da ridurre la dimensione dei risultati intermedi. 27 Soluzione 28 14
3 Si consideri uno schema relazionale contenente le relazioni R1(ABC), R2(DG), R3(EF) Formulare in calcolo relazionale su tuple e su domini l'interrogazione realizzata in algebra relazionale dalla seguente espressione: 29 Soluzione Questa espressione non è esprimibile in calcolo sulle tuple a causa dell'unione tra due diverse tabelle. In calcolo sui domini l'espressione diventa: 30 15
Si consideri uno schema relazionale contenente le relazioni R1(ABC), R2(DG), R3(EF). Formulare in calcolo relazionale su tuple l'interrogazione realizzata in algebra relazionale dalla seguente espressione: 4 31 Soluzione 32 16
5 Si consideri il seguente schema di base di dati Aeroporto (Città, Nazione) Volo (IdVolo, TipoAereo, GiornoSettimana, CittàPartenza, OraPartenza, CittàArrivo, OraArrivo) Aereo (TipoAereo, NumPasseggeri, QuantMerci) Lo studente scriva un espressione in algebra relazionale che elenchi per volo e giorno della settimana i collegamenti diretti tra Roma e Bucarest. 33 Soluzione 34 17
Soluzione Lo studente scriva un espressione in algebra relazionale che elenchi tutte le città con cui è collegata direttamente Pisa sia come città di arrivo che come città di partenza. 35 Soluzione Lo studente definisca la query precedente anche nel calcolo relazionale sulle tuple. 36 18
Soluzione Non si può fare 37 6 Dato il seguente schema: AEROPORTO(Città, Nazione,NumPiste) VOLO(IdVolo,GiornoSett,CittàPart,OraPart, CittàArr,OraArr,TipoAereo) AEREO(TipoAereo,NumPasseggeri,QtaMerci) scrivere in algebra relazionale la interrogazione che permette di determinare gli aeroporti italiani che hanno solo voli interni. 38 19
Soluzione 39 Si consideri il seguente insieme di relazioni: Film(CodFilm, Titolo, CodRegista, Anno) Produzione (CasaProduzione, Nazionalita, CodFilm, Costo) Attore (CodAttore, Cognome, Nome, Sesso, DataNascita, Nazionalita) Interpretazione (CodFilm, CodAttore, Personaggio) Regista (CodRegista, Cognome, Nome, Sesso, DataNascita, Nazionalita) 7 40 20
7.a Definire in algebra relazionale una query che produca la lista dei titoli dei film che Marcello Mastroianni ha interpretato. 41 Soluzione 42 21
Esprimere la stessa query nel calcolo relazionale dei domini e delle tuple. 43 7.b Definire in algebra relazionale una query che produca la lista dei titoli dei film che Marcello Mastroianni ha interpretato senza Sofia Loren. 44 22
Soluzione 45 Esprimere la stessa query nel calcolo dei domini 46 23