a linguaggi formali Classificazione Basi di dati Linguaggi di interrogazione Docente: tefano Paraboschi parabosc@elet.polimi.it Algebra relazionale Calcolo relazionale Programmazione logica b linguaggi programmativi QL: tructured Query Language QBE: Query By Example Algebra relazionale Una visione d insieme definita da Codd (70) molto utile per imparare a formulare query insieme minimo di 5 operazioni che danno l'intero potere espressivo del linguaggio OPEAZIONI FONDAMENTALI UNAIE BINAIE selezione σ proiezione unione differenza prodotto X cartesiano intersezione DEIVATE BINAIE join semi-join 4 Esempio : gestione degli esami universitari studente MAT 45 70 NOME CITTA oma C-DIP esame corso MAT COD- DATA VOTO COD- TITOLO DOCENTE COO COO 0 matematica Barozzi 70 8--98 8 0 informatica Meo 5 elezione σ ='' TUDENTE e' una tabella (priva di nome) con schema : lo stesso schema di TUDENTE istanza : le tuple di TUDENTE che soddisfano il predicato di selezione 45 6
intassi del predicato di selezione Esempio di selezione espressione booleana di predicati semplici operazioni booleane : AND (P AND P) ( ) O (P O P) ( ) comparatore : =,!=, <, <=, >, >= σ (='') O ((='oma') AND NOT (= ')) TUDENTE NOT (P) ( ) predicati semplici : TUE, FALE termine comparatore termine termine : costante, attributo espressione aritmetica di costanti e attributi 7 MAT 45 70 NOME CITTA oma C-DIP 8 Proiezione Proiezione e duplicati Π, TUDENTE è una tabella (priva di nome) con schema : gli attributi e istanza : la restrizione delle tuple sugli attributi e 9 nel modello formale la proiezione elimina i duplicati Π TUDENTE nel modello informale (e nei sistemi) la eliminazione dei duplicati va richiesta esplicitamente 0 Assegnamento serve per dare un nome al risultato di una espressione algebrica non fa parte delle operazioni algebriche INFOMATICI = σ CDIP='' TOINEI = σ ='' TUDENTI TUDENTI UNIONE E DIFFEENZA tabella tabella tabella tabella tabella E tabella DEVONO EEE COMPATIBILI TEO GADO DOMINI ODINATAMENTE DELLO TEO TIPO t t t t
Unione Differenza INFOMATICI TOINEI è una tabella (priva di nome) con schema : lo schema di INFOMATICI istanza : la unione delle tuple di INFOMATICI e TOINEI 45 Per quanto riguarda le istanze, è commutativa INFOMATICI - TOINEI è una tabella (priva di nome) con schema : lo schema di INFOMATICI istanza : la differenza delle tuple di INFOMATICI e TOINEI Attenzione: non è commutativa 4 Prodotto cartesiano è una tabella (priva di nome) con schema : gli attributi di e (grado(x)= grado()+grado()) istanza : tutte le possibili coppie di tuple di e (card(x)=card()*card()) (A,B) A a b B (C,D) C c b a D Esempio x (A,B,C,D) A a a a b b b B C c b a c b a D 5 6 Intersezione TABELLA TABELLA Come gli altri operatori insiemistici, si può fare se TABELLA e TABELLA sono compatibili Derivabile tramite la seguente formula: Intersezione INFOMATICI TOINEI è una tabella (priva di nome) con schema : lo schema di INFOMATICI istanza : la intersezione delle tuple di INFOMATICI e TOINEI = - ( - ) 45 7 8
Join TUDENTE TUDENTE.=EAME. EAME è equivalente alla seguente espressione (operatore derivato): σ TUDENTE.=EAME. TUDENTE EAME Join TUDENTE TUDENTE.=EAME. EAME produce una tabella (priva di nome) con schema : la concatenazione degli schemi di TUDENTE e EAME istanza: le tuple ottenute concatenando quelle tuple di TUDENTE e di EAME che soddisfano il predicato attributi omonimi sono resi non ambigui usando la notazione puntata : EAME., TUDENTE. TUDENTE. EAME. Cod- Data 8--98 Voto 0 8 9 70 oma 70 0 0 intassi del predicato di join Join naturale espressione congiuntiva di predicati semplici: ATT comp ATT ove ATT appartiene a TAB ATT appartiene a TAB comp: =,!=, <, <=, >, >= EQUI-JOIN : soli confronti di uguaglianza equi-join di tutti gli attributi omonimi (si omette il predicato, si elimina la colonna ripetuta) TUDENTE EAME 70 oma Cod- Data Voto 0 8--98 8 0 Join naturale di tre tabelle emi-join TUDENTE `< TUDENTE.=EAME. EAME 70 TUDENTE EAME COO oma Cod- Data Voto 0 8--98 8 0 Titolo matem infor infor Docente barozzi meo meo è equivalente alla seguente espressione (operatore derivato): Π TUDENTE.* (TUDENTE ` TUDENTE.=EAME. EAME ) Produce come risultato un sottoinsieme di TUDENTE 70 oma 4
emi-join naturale TUDENTE `< EAME è equivalente alla seguente espressione: Π TUDENTE.* ( TUDENTE ` EAME ) E equivalente alla query precedente Espressioni algebriche Concatenazione di più operazioni algebriche Esprimono interrogazioni in modo formale Consentono di estrarre informazioni dai dati 70 oma 5 6 elezione e proiezione 45 70 oma quali studenti sono iscritti al diploma di informatica? Π σ ='' TUDENTE NOME elezione e proiezione 45 70 oma quali studenti di istica non sono di Milano? Π σ =''!= 'Milano TUDENTE NOME 7 8 Esempio : gestione degli esami universitari icordiamo anche che... TUDENTE TUDENTE a` EAME a` COO 45 70 oma EAME COO Cod- Data Voto Cod- 0 8--98 8 Titolo Docente matematica Barozzi informatica Meo 70 oma Cod- Data 8--98 Voto 0 8 0 Titolo matem infor infor Docente barozzi meo meo 70 0 9 0
elezione, proiezione e join quali studenti hanno preso 0 in matematica? elezione, proiezione e join quali studenti hanno preso 0 in matematica? Cod- Data Voto 0 Titolo matem Docente barozzi Π σ Voto=0 Titolo='matematica (TUDENTE EAME COO) 8--98 8 infor meo 70 oma 0 infor meo Equivalenza di espressioni quali studenti hanno preso 0 in matematica? TUDENTE 45 70 oma EAME COO Cod- Data Voto Cod- Titolo Docente 0 matematica Barozzi 70 8--98 8 0 informatica Meo Equivalenza di espressioni quali studenti hanno preso 0 in matematica? Π ( TUDENTE (σ Voto=0 EAME) (σ Titolo='matematica' COO)) equivalente a: Π σ Voto=0 Titolo='matematica (TUDENTE EAME COO) 4 elezione, proiezione e join quali professori hanno esaminato? elezione, proiezione e join quali professori hanno esaminato? Cod- Data Voto 0 Titolo matem Docente barozzi Π Docente σ = '' (TUDENTE EAME COO) 8--98 8 infor meo 70 oma 0 infor meo Docente Meo 5 6 4
Equivalenza di espressioni Equivalenza di espressioni TUDENTE 45 70 oma EAME COO Cod- Data Voto Cod- Titolo Docente 0 matematica Barozzi 70 8--98 8 0 informatica Meo 7 quali professori hanno esaminato? Π Docente (COO `U (EAME `U σ = '' TUDENTE)) equivalente a: Π Docente σ = '' (TUDENTE `U EAME `U COO) 8 Espressioni con unione e differenza estrarre la matricola degli studenti romani oppure degli studenti che hanno sostenuto un esame il giorno 8--0 (Π σ ='oma' TUDENTE) (Π σ Data=8--0 EAME) Espressioni con unione e differenza estrarre la matricola degli studenti che hanno preso almeno un voto superiore a 8 e non sono mai scesi sotto il 5 (Π σ Voto>=8 EAME) - (Π σ Voto<5 EAME) 70 70 9-70 40 Espressioni complesse estrarre il nome degli studenti che non hanno mai preso meno di 8 Π TUDENTE `U ( Π EAME - Π σ Voto<8 EAME) spiegazione: prima trovo le matricole di tutti gli studenti meno le matricole di coloro che hanno preso meno di 8, poi Espressioni complesse estrarre il nome degli studenti che hanno sostenuto informatica e matematica lo stesso giorno Π TUDENTE `U (( EAME `< σ Titolo= informatica COO ) `< = Data = Data (EAME `< σ Titolo= matematica COO )) spiegazione: prima trovo le matricole di coloro che hanno dato i due esami nello stesso giorno, poi trovo i loro nomi. trovo i loro nomi. 4 4
Espressioni complesse estrarre l ultimo esame di ciascuno studente EAME - (EAME `< = Data < Data EAME ) spiegazione: prima trovo gli esami che non sono ultimi, cioè che sono seguiti da qualche esame a pari studente in data superiore, poi sottraggo da tutti gli esami questi esami non ultimi e trovo gli appresentazione delle espressioni tramite alberi Ogni espressione dell algebra relazionale può essere rappresentata in modo grafico da un albero, che esplicita l ordine di valutazione degli operatori Ogni operatore corrisponde a un nodo operatori unari con un ramo in ingresso e uno in uscita operatori binari con due rami in ingresso e uno in uscita ultimi esami di ciascuno studente 4 44 Esempio di albero Π `U Trasformazioni di equivalenza per espressioni algebriche ) Eliminazione dei prodotti cartesiani TUDENTE σ Data=0/0/00 Voto=0 `U P EAME Corresponde a: Π TUDENTE `U Vale se p è una congiunzione di predicati del tipo ATT comp ATT `U σ Data=0/0/00 Voto=0 EAME 45 46 Trasformazioni di equivalenza per espressioni algebriche ) Push della selezione rispetto al join Trasformazioni di equivalenza per espressioni algebriche ) Push della proiezione rispetto al join `U Q `U Q Vale se p è un predicato che si applica ai soli Π L `U Q Π L `U Q Π L Π L J e J sono gli attributi DI e necessari a valutare Q L = L - schema() + J attributi di 47 L = L - schema() + J 48
Esempio ) Push della proiezione rispetto al join Trasformazioni di equivalenza per espressioni algebriche 4) Idempotenza della selezione Π ABD B=E Π ABD B=E (A,B,C) (D,E,F,G) Π AB Π DE L=ABD J=B J=E L=AB P = P P L=DE 49 50 Trasformazioni di equivalenza per espressioni algebriche 5) Idempotenza della proiezione Trasformazioni di equivalenza per espressioni algebriche 6) Push della selezione rispetto all unione Π L Π L Π L L = L L L 5 5 Trasformazioni di equivalenza per espressioni algebriche 7) Push della selezione rispetto alla differenza Trasformazioni di equivalenza per espressioni algebriche 8) Push della proiezione rispetto all unione 5 Π L Π L Π L Attenzione: non vale il push della proiezione rispetto alla differenza e all intersezione 54
Trasformazioni di equivalenza per espressioni algebriche 9) Commutazione di join e unione = = = Formule utili = Π L = = = = σ P = = = = 55 = P = P = σ P P = = 56 Ottimizzazione algebrica Tra tutte le rappresentazioni equivalenti, conviene scegliere quella meno costosa da eseguire Criterio informale: minimizzare la dimensione dei risultati intermedi Tecnica: utilizzare dove possibile le trasformazioni di push (,, 6, 7, 8); usare le trasformazioni di idempotenza (4, 5) per generare nuove selezioni e proiezioni 57 Esempio di ottimizzazione i ha lo schema: (A,B,C) (C,D,E) T(D,E,F,G) i deve ottimizzare l espressione algebrica: Π B σ (.C=.C) (.D=T.D) (.A=) (.B>T.F) T 58 Esempio di ottimizzazione Con la rappresentazione ad albero, si ottiene: Π B σ (.C=.C) (.D=T.D) (.A=) (.B>T.F) Esempio di ottimizzazione Applicando le trasformazioni, si ottiene: Π B (.C=.C) (.B>T.F) σ A= Omettiamo (.D=T.D) T T 59 60
Esempio di ottimizzazione Aggiungendo le proiezioni, si ottiene: Π.B ipetere con: Esercizio Π B (.C=.C) (.B>D.F) σ (.C=.C) (.D=T.D) (.A=) (.B>T.F) Π BC Π FC σ A= Π DC Π DF T T 6 6 Esercizi di ottimizzazione ) i ha lo schema: (A,B) (A,B) Ottimizzare l espressione algebrica: σ (.A=.A) (.A>) (.A=) Esercizi di ottimizzazione ) i ha lo schema: (A,B,C) (C,D,E) T(C,D,E) Ottimizzare l espressione algebrica: Π AD σ (.C=.C) (.E=) (.B=) (.B>.D) ( ( T)) Il risultato è una relazione vuota, perchè il predicato è una CONTADDIZIONE!!!! 6 64 Esempio di ottimizzazione Con la rappresentazione ad albero, si ottiene: Π B σ (.C=.C) (.B>.D) (.E=) (.B=) Esempio di ottimizzazione Applicando le trasformazioni, si ottiene: Π B (.C=.C) (.B>.D) - - σ (B=) T σ E= T 65 66
Esempio di ottimizzazione agionando sui predicati, si ottiene: Π B (.C=.C) Esempio di ottimizzazione Aggiungendo le proiezioni, si ottiene: Π B Π BC Π C σ (B=) - σ (B=) - σ (E=) (D<) T σ (E=) (D<) T 67 68 icerca della minima espressione contenitore (contain-view) Date n query, è un espressione che consente di estrarre i risultati delle n query tramite selezioni e proiezioni su di essa Esempio: (A,B,C) (B,C,D,E,F) T(D,G) )Π.C,G σ (A=) (.B=.B) (.D=T.D) (E=) (G>) T )Π.C,F σ (.C>G) (A=) (E=) (F>) (G>) (.D=T.D) (.B=.B) T 69 Estrazione della contain-view La massima sub espressione comune (ME): Π CGF Π BC σ A= Π BGF Π DF σ E= σ G> T 70 Calcolo delle query tramite la ME Calcolo relazionale : Π CG σ G> ME : Π CF σ C>G F> ME Una famiglia di linguaggi formali Due tipi principali Calcolo delle tuple (TC, Tuple elational Calculus) Calcolo dei domini (DC, Domain elational Calculus) TC in due versioni: Con tuple ristrette sul range Con tuple arbitrarie Guarderemo il TC con tuple arbitrarie (anche se non è descritto nel libro!) 7 7
TC è dichiarativo Esprime cosa si vuole nel risultato ma non come ottenerlo E diverso dall algebra, che è procedurale La dichiaratività è una caratteristica tipica dei linguaggi relazionali Definizione formale del TC Forma standard: { t p(t) } p(t) è una formula, costruita tramite atomi Atomi t t [A] comp t [A] t [A] comp k comp e un comparatore: =, <>, >, >=, <, <= k è una costante t[a] è una restrizione sull attributo A della tupla t 7 74 Definizione formale del TC Proprietà del TC egole di costruzione delle formule un atomo è una formula se p è una formula, lo sono anche p e (p) se p e p sono formule, lo sono anche p p, p p, p p se p è una formula in cui s è una variabile, lo sono anche s (p(s)), s (p(s)) Legge di De Morgan p p ( p p ) Corrispondenze tra quantificatori t (p(t)) t ( p(t)) Definizione di implicazione p p p p 75 76 Forme Normali Dalle tre leggi segue che è possibile scrivere tutte le possibili espressioni senza implicazione e con: Un solo quantificatore Un solo operatore binario La forma normale più usata (simile ad QL) usa quantificatore esistenziale e congiunzione 77 Esempi di TC degli studenti che hanno preso 0 in matematica { t t TUDENTE, t EAME, t COO ( t[]=t[] t[]=t[] t[cod]=t[cod] t[voto]=0 t[titolo]= matematica ) } 78
Esempi di TC icole degli studenti che hanno sostenuto matematica ma non basi di dati { t t EAME, t COO ( t[]=t[] t[cod]=t[cod] t[titolo]= matematica ) ( t EAME, t4 COO (t[]=t[] t[cod]=t4[cod] Correttezza i devono evitare formule unsafe: { t t } dà un risultato infinito i considerano corrette solo formule indipendenti dal dominio la soluzione non dipende dal dominio degli attributi, ma solo dall istanza del DB t4[titolo]= basi di dati ))) } 79 80 A è esprimibile tramite TC E sufficiente mostrare che si possono realizzare i cinque operatori fondamentali: elezione, σ A= : { t t (t[a]=) } Proiezione, Π AC : { t t (t[a,c]=t[a,c]) } A è esprimibile tramite TC Prodotto cartesiano, (A,B,C) (D,E,F): { t t, t (t[a,b,c]=t[a,b,c] t[d,e,f]=t[d,e,f] ) } Esempio di join, (A,C) A=B (B,D): { t t, t (t[a,c] = t[a,c] t[b,d] = t[b,d] t[a] = t[b] ) } 8 8 A è esprimibile tramite TC Anche TC è esprimibile tramite A Unione, : { t t, t ( t = t t = t ) } Differenza, : { t t ( t ) } La prova è più complicata i devono escludere espressioni unsafe e dipendenti dal dominio otto queste ipotesi TC e A hanno lo stesso potere espressivo 8 84
Linguaggi di query basati sulla programmazione logica Base di dati d esempio per Datalog La programmazione logica è un paradigma di programmazione basato su regole Linguaggio di riferimento: Prolog (970) Datalog: Prolog per basi di dati (984) Differenze principali rispetto a Prolog (per chi lo conosce): mancano i simboli di funzione modello di valutazione pienamente dichiarativo GENITOE Genitore Figlio Gianni Anna Anna Gianni Gianni Andrea PEONA Anna Gianni Andrea Età 65 40 60 4 0 esso M M F M M F 85 86 egole Datalog CALO ANNA Ogni regola è composta da una testa (head o LH) e da un corpo (body o H) E: P :- P, P, Pn ANTONIO PAOLA GIANNI ANDEA 87 Ogni P rappresenta un predicato (chiamato letterale), così composto: nome argomenti: costanti variabili simbolo don t care (non nella testa) E: persona(x,_, M ) 88 egole Datalog Fatti Datalog Hanno l interpretazione che la testa è vera se il corpo è vero Esempi di regole Padre(X,Y) :- Persona(X,_, M ), Genitore(X,Y) Madre(X,Y) :- Persona(X,_, F ), Genitore(X,Y) Ciascuna tupla corrisponde a un fatto (letterale ground) Ad esempio: Genitore(, ). Le variabili del LH devono apparire nel H 89 90
Query in Datalog Altre regole Esempio di query (detta goal)?- Padre(,X) Valutazione: si cerca una regola che abbia per testa il predicato Padre e si cercano valori per la variabile X (unificazione) i ottiene X = { Gianni } Un goal senza variabili restituisce True o False?- Padre(, ) True?- Padre(, Andrea ) False 9 Nonno(X,Z) :- Padre(X,Y), Genitore(Y,Z) Fratello(X,Y) :- Genitore(Z,X), Genitore(Z,Y), X Y Zio(X,Y) :- Persona(X,_, M ), Fratello(X,Z), Genitore(Z,Y) 9 Corrispondenza tra Datalog e l algebra relazionale Database estensionale e intensionale proiezioni selezione Padre(X,Y) :- Persona(X,_, M ), Genitori(X,Y) join Espressione corrispondente in algebra relazionale: PADE = Π,5 σ = M PEONA `U = GENITOI Database estensionale (EDB) insieme delle tabelle presenti nel DB Database intensionale (IDB) insieme dei predicati che sono a sinistra in una regola è la conoscenza dedotta a partire da EDB Normalmente si impone EDB IDB = 9 94 Negazione in Datalog Potere espressivo di Datalog Alcuni letterali del corpo possono essere negati es: Padre(X,Y) :- Genitore(X,Y), not Madre(X,Y) L uso della negazione in Datalog aumenta il potere espressivo del linguaggio Anche l uso della negazione richiede cautela: q(x) :- p(x) p(0).?- q(x) produce un risultato infinito! 95 Datalog senza negazione permette di rappresentare gli operatori {σ, Π,, } {σ, Π, } già visti Per l unione si usano più regole con la stessa testa; P = : P(X,Y) :- (X,Y) P(X,Y) :- (X,Y) Per la differenza serve il not; P = : P(X,Y) :- (X,Y), (X,Y) 96
Query ricorsive Meccanismo di valutazione Datalog con negazione ha quindi un potere espressivo almeno pari all algebra relazionale In effetti ha un potere superiore, perché permette l espressione di query ricorsive Una query ricorsiva presenta il letterale della testa all interno del corpo della regola: start Antenato(X,Y) :- Genitore(X,Y) Antenato(X,Y) :- Antenato(X,Z), Genitore(Z,Y) i può immaginare che venga seguito il seguente processo iterativo: ANTENATO 0 GENITOI ANTENATO ( Π,4 ANTENATO 0 a`= GENITOI ) ANTENATO 0 ANTENATO ( Π,4 ANTENATO a`= GENITOI ) ANTENATO fino a che ANTENATO n risulta pari a ANTENATO n- (punto fisso) ricorsione 97 98 Valutazione delle query ricorsive ANTENATO Nella base dati d esempio si ottiene il risultato illustrato a fianco Anna Anna Gianni Gianni Gianni Andrea Andrea CALO ANTONIO PAOLA ANNA GIANNI ANDEA Nuovi elementi rispetto a GENITOE Anna Andrea Anna 99 00 Predicati e funzioni egole corrette Nella definizione delle regole si possono usare predicati speciali operatori di confronto = (unificazione),, <,, >, funzioni aritmetiche +,,, Bisogna fare molta attenzione: n(x) :- n(x ) n(0).?- n(x) produce un risultato infinito! 0 La negazione deve essere safe tutte le variabili di un letterale negato devono comparire in un letterale positivo del corpo della regola (X) :- (X), Q(Y) non va bene La negazione deve essere stratificata sinteticamente, non ci devono essere cicli di dipendenza tra letterali negati P(X) :- (X) P(X) :- (X), P(X) non va bene P 0
iepilogo della terminologia Datalog Modello relazionale Datalog standard elazione Predicato Attributo Argomento Tupla Fatto Query egole Interrogazione Goal intesi sui poteri espressivi TC =A, con TC safe e non dipendente dal dominio Datalog più espressivo di TC e A (a causa della ricorsione), con espressioni Datalog safe, stratificate e che non producono infiniti simboli- 0 04 TC = A DATALOG In che modo si differenziano i linguaggi formali? L algebra è un linguaggio POCEDUALE: si dice esattamente in che modo valutare le interrogazioni (e si può ottimizzare) TC è un linguaggio DICHIAATIVO: si dice cosa si vuole ottenere ma non come ottenerlo. DATALOG è pure dichiarativo, ma la costruzione delle dipendenze tra le regole può essere fatta in modo procedurale. 05 06 Perchè vi abbiamo raccontato tutto ciò? QL assomiglia al calcolo relazionale L algebra assomiglia a quanto viene effettivamente valutato da un DBM Datalog avvicina le basi di dati al mondo della logica e della deduzioni 07