Basi di Dati e Sistemi Informativi L’Algebra Relazionale Home page del corso: http://www.cs.unibo.it/~difelice/dbsi/ Algebra Relazionale L’algebra relazionale e’ un linguaggio (procedurale) di interrogazione per basi di dati relazionali. Altri linguaggi DML di interrogazione: SQL2/SQL3 (standard de facto, gia’ visto ..) Calcolo relazionale (linguaggio dichiarativo) Datalog (basato su Prolog) Algebra Relazionale Schema di relazione: un nome R con un insieme di attributi A1, ..., An: R (A1,..., An) Una Tupla su un insieme di attributi X è una funzione che associa a ciascun attributo A in X un valore del dominio di A. t[A] denota il valore della ennupla t sull'attributo Istanza di relazione su uno schema R(X): insieme r di tuple su X. Algebra Relazionale CORSI Corso Codice Docente t1 Basi di dati 2121 M. Di Felice t2 Programmazione 1213 C. Laneve t3 Sistemi Operativi 1455 D. Sangiorgi t1[Corso] = “Basi di dati” t1[Codice]=“2121” t3[Docente]=“D. Sangiorgi” Schema della relazione: CORSI(Corso, Codice, Docente) Istanza della relazione= {t1,t2,t3} Algebra Relazionale Il linguaggio dell’algebra relazionale e’ costituito da una serie di operatori (algebrici) che: si applicano ad una relazione (definizione di relazione nel modello relazionale). producono in output una relazione. sono componibili, ossia e’ possibile utilizzarli in cascata per creare interrogazioni complesse. Operatori possono essere unari o binari … Algebra Relazionale Il linguaggio dell’algebra relazionale e’ costituito da una serie di operatori (algebrici): Operatori su insiemi: unione, intersezione, differenza. Operatori su attributi: ridenominazione, selezione, proiezioni. Operatori intra-relazionali: join naturale, thetajoin, equi-join, etc. Algebra Relazionale Le relazioni sono insiemi e’ possibile definire operatori insiemistici su di esse: Unione di r1(X) ed r2(X): r = r1 Èr2 = {t | t Î r1 OR t Î r2 } Intersezione di r1(X) ed r2(X): r = r1 Èr2 ={t |t Î r1 AND t Î r2 } Differenza di r1(X) ed r2(X): r = r1 -r2 ={t |t Î r1 AND t Ï r2 } Le relazioni r1 ed r2 devono avere lo stesso schema! Algebra Relazionale CALCIATORI ALLENATORI Nome Cognome Nascita Nome Cognome Nascita Giuseppe Rossi 10/03/19769 Giovanni Bianchi 10/06/1980 Roberto Bianchi 14/06/1982 Roberto Bianchi 14/06/1982 Michele Verdi 17/08/1983 Michele Verdi 17/08/1983 CALCIATORI ÈALLENATORI CALCIATORI ÇALLENATORI Nome Cognome Nascita Giuseppe Rossi 10/03/19769 Roberto Bianchi 14/06/1982 Michele Verdi 17/08/1983 Giovanni Bianchi 10/06/1980 Nome Cognome Nascita Roberto Bianchi 14/06/1982 Michele Verdi 17/08/1983 Algebra Relazionale CALCIATORI ALLENATORI Nome Cognome Nascita Nome Cognome Data Giuseppe Rossi 10/03/19769 Giovanni Bianchi 10/06/1980 Roberto Bianchi 14/06/1982 Roberto Bianchi 14/06/1982 Michele Verdi 17/08/1983 Michele Verdi 17/08/1983 CALCIATORI ÈALLENATORI Nome Cognome CALCIATORI ÇALLENATORI ??? Nome Cognome ??? Cosa accade se le relazioni non hanno esattamente lo stesso schema, ma dispongono di attributi con nomi diversi? Algebra Relazionale L’operatore di ridenominazione r consente di modificare i nomi degli attributi di una relazione. rB1,B2, … BM A1, A2, .. AM (r) Modifica lo schema della relazione, ridenominando gli attributi A1, A2, …AM in B1, B2, BM senza alterare i dati della relazione. B1 B2 … BM A1 A2 … AM Algebra Relazionale CALCIATORI ALLENATORI Nome Cognome Nascita Nome Cognome Data Giuseppe Rossi 10/03/19769 Giovanni Bianchi 10/06/1980 Roberto Bianchi 14/06/1982 Roberto Bianchi 14/06/1982 Michele Verdi 17/08/1983 Michele Verdi 17/08/1983 CALCIATORI È rNASCITA<-DATA (ALLENATORI) Nome Cognome Nascita Giuseppe Rossi 10/03/19769 Roberto Bianchi 14/06/1982 Michele Verdi 17/08/1983 Giovanni Bianchi 10/06/1980 CALCIATORI Ç rNASCITA<-DATA (ALLENATORI) Nome Cognome Nascita Roberto Bianchi 14/06/1982 Michele Verdi 17/08/1983 Algebra Relazionale L’operatore di selezione sF consente di selezionare un sottoinsieme delle tuple della relazione, in base alla condizione specificata (F). s F (r) = {t | t Î r AND F(t) = TRUE} La condizione F e’ definita come insieme di predicati connessi da operatori logici. F= P1 Op P2 Op … PN Op e’ un operatore booleano (AND, OR, NOT) Algebra Relazionale La condizione F e’ definita come insieme di predicati connessi da operatori logici. F= P1 Op P2 Op … PN Ogni predicato e’ del tipo AqB oppure Aqc, dove: q e’ un operatore di confronto (<,>,=,<>,<=,>=). A e B sono attributi di r, su cui ha senso l’operatore di confronto. c e’ una valore compatibile con il dominio di A. Algebra Relazionale CALCIATORI Nome Cognome Nascita Anni Societa’ Giuseppe Rossi 10/03/19769 32 Dinamo Roberto Bianchini 14/06/1982 33 Polisportiva Michele Verdi 17/08/1983 27 Polisportiva Giovanni Bianchi 10/06/1980 29 Dinamo s (ANNI>30)Ù(SOCIETA=DINAMO) (CALCIATORI) Nome Cognome Nascita Anni Societa’ Giuseppe Rossi 10/03/19769 32 Dinamo Algebra Relazionale CALCIATORI Nome Cognome Nascita Anni Societa’ Giuseppe Rossi 10/03/19769 32 Dinamo Roberto Bianchini 14/06/1982 33 Polisportiva Michele Verdi 17/08/1983 27 Polisportiva Giovanni Bianchi 10/06/1980 29 Dinamo s (NOME="GIUSEPPE")Ú(COGNOME="BIANCHI") (CALCIATORI) Nome Cognome Nascita Anni Societa’ Giuseppe Rossi 10/03/19769 32 Dinamo Giovanni Bianchi 10/06/1980 29 Dinamo Algebra Relazionale CALCIATORI Nome Cognome Nascita Anni Societa’ Giuseppe Rossi 10/03/19769 32 Dinamo Roberto Bianchini 14/06/1982 NULL Polisportiva Michele Verdi 17/08/1983 27 NULL Giovanni Bianchi 10/06/1980 29 Dinamo s (ANNI>30)Ù(SOCIETA=DINAMO) (CALCIATORI) Q. Cosa accade in presenza di valori nulli? Algebra Relazionale R. Come in SQL, si utilizza una logica a 3 valori: True (T), False (F), Unknown (U). NOT AND T F U OR T F U T F T T F U T T T T F T F F F F F T F U U U U U F U U T U U Si utilizzano gli operatori IS NULL e IS NOT NULL per verificare se un certo attributo ha valore uguale a NULL o meno. Algebra Relazionale CALCIATORI Nome Cognome Nascita Anni Societa’ Giuseppe Rossi 10/03/19769 NULL Dinamo Roberto Bianchi 14/06/1982 33 Polisportiva Michele Verdi 17/08/1983 27 Polisportiva Giovanni Bianchi 10/06/1980 35 NULL s (ANNI>30)Ù(SOCIETA=DINAMO) (CALCIATORI) Nome Cognome Nascita Anni Societa’ Algebra Relazionale CALCIATORI Nome Cognome Nascita Anni Societa’ Giuseppe Rossi 10/03/19769 NULL Dinamo Roberto Bianchi 14/06/1982 33 Polisportiva Michele Verdi 17/08/1983 27 Polisportiva Giovanni Bianchi 10/06/1980 35 NULL s (ANNI>30)Ù((SOCIETA=DINAMO)Ú(SOCIETA IS (CALCIATORI) NULL )) Nome Cognome Nascita Anni Societa’ Giovanni Bianchi 10/06/1980 35 NULL Algebra Relazionale L’operatore di proiezione pY(r) consente di selezionare un sottoinsieme degli attributi. p Y (r) = {t[Y]| t Î r} Y=(A1,A5) A1 … … … A2 A3 … p Y (r) A5 A1 … … A5 Algebra Relazionale L’operatore di proiezione pY(r) consente di selezionare un sottoinsieme degli attributi di r. Qual e’ la cardinalita’ di pY(r)? Nel caso generale, |pY(r)| <= |r| Se Y e’ superchiave di R, allora |pY(r)|= |r| Q. Vale anche il viceversa? (Se |pY(r)|= |r| allora Y e’ una superchiave di R?) Algebra Relazionale CALCIATORI Nome Cognome Nascita Anni Societa’ Giuseppe Rossi 10/03/19769 32 Dinamo Roberto Bianchi 14/06/1982 33 Polisportiva Michele Verdi 17/08/1983 27 Polisportiva Giovanni Bianchi 10/06/1980 27 Dinamo p (NOME,COGOME) (CALCIATORI) Nome Cognome Giuseppe Rossi Roberto Bianchi Michele Verdi Giovanni Bianchi p (ANNO) (CALCIATORI) Anni 32 33 27 Algebra Relazionale E’ possibile scrivere espressioni componendo gli operatori algebrici … complesse PRESIDENTI CALCIATORI Nome Cognome Squadra Nome Cognome Squadra Giuseppe Rossi Dinamo Luciano Rossi Dinamo Roberto Bianchi Dinamo Michele Rosati Polisportiva Michele Verdi Polisportiva s SQUADRA=DINAMO (CALCIATORI ÈPRESIDENTI) Nome Cognome Squadra Luciano Rossi Dinamo Giuseppe Rossi Dinamo Roberto Bianchi Dinamo Algebra Relazionale E’ possibile scrivere espressioni componendo gli operatori algebrici … complesse PRESIDENTI CALCIATORI Nome Cognome Squadra Nome Cognome Squadra Giuseppe Rossi Dinamo Luciano Rossi Dinamo Roberto Bianchi Dinamo Michele Rosati Polisportiva Michele Verdi Polisportiva Cognome PCOGNOME (s SQUADRA=DINAMO (CALCIATORI ÈPRESIDENTI)) Rossi Bianchi Algebra Relazionale L’operatore di join naturale consente di correlare dati tra relazioni diverse, sulla base di valori comuni in attributi comuni. CALCIATORI Nome Cognome Squadra SQUADRE Giuseppe Rossi Dinamo Squadra Punti Roberto Bianchi Dinamo Dinamo 12 Michele Verdi Polisportiva Polisportiva 14 CALCIATORI SQUADRE Nome Cognome Squadra Punti Giuseppe Rossi Dinamo 12 Roberto Bianchi Dinamo 12 Michele Verdi Polisportiva 14 Algebra Relazionale L’operatore di join naturale consente di correlare dati tra relazioni diverse, sulla base di valori comuni in attributi comuni. Data una relazione r1 su attributi X1, ed una relazione r2 su attributi X2: r1 r2 = {t su X1X2 | t[X1 ] Î r1 Ùt[X2 ] Î r2 } La cardinalita’ del join e’ compresa tra 0 e |r1|*|r2|. Algebra Relazionale Se le due relazioni r1 ed r2 hanno lo stesso schema la cardinalita’ del join e’ pari a quella dell’interserzione tra r1 ed r2 . IMPIEGATI Codice Nome Ufficio 123 Rossi A 345 Bianchi A 167 Verdi B RESPONSABILI_UFFICIO Codice Nome Ufficio 123 Rossi A 345 Michele C IMPIEGATI RESPONABILI _UFFICIO Codice Nome Ufficio 123 Rossi A Algebra Relazionale Sia X l’attributo in comune tra X1 ed X2. Se X contiene una chiave di r2 il join ha cardinalita’ massima pari alla cardinalita’ di r1 (|r1|). SEDI IMPIEGATI Codice Nome Sede 123 Rossi Bologna 345 Bianchi Milano 167 Verdi Milano IMPIEGATI REPARTI Sede Mansione Bologna Sviluppo Milano Testing Id Nome Sede Mansione 123 Rossi Bologna Sviluppo 345 Bianchi Milano Testing 167 Verdi Milano Testing Algebra Relazionale Sia X l’attributo in comune tra X1 ed X2. Se esiste un vincolo di integrita’ referenziale tra l’attributo X in r1 e la relazione r2 il join ha cardinalita’ pari alla cardinalita’ di r1 (|r1|). REPARTI PAZIENTI CodiceRep NrLetti Primario Id Nome CodiceRep A3 20 Alberti 123 Rossi A3 B1 10 Gigli 345 Bianchi A3 167 Verdi B1 Id Nome Codice Rep NrLetti Primario 123 Rossi A3 20 Alberti 345 Bianchi A3 20 Alberti 167 Verdi B1 10 Gigli PAZIENTI REPARTI Algebra Relazionale Se le due relazioni r1 ed r2 non hanno attributi in comune la cardinalita’ del join e’ pari a quella del prodotto cartesiano tra r1 ed r2 (|r1| *|r2|). IMPIEGATI Id Nome Ufficio 123 Rossi A 345 Bianchi A 167 Verdi B UFFICI Codice Telefono A 20-21-216 C 20-21-218 IMPIEGATI UFFICI Id Nome Ufficio Codice Telefono 123 Rossi A A 20-21216 123 Rossi A C 20-21218 345 Bianchi A A 20-21216 345 Bianchi A C 20-21218 167 Verdi B A 20-21216 Algebra Relazionale Il join naturale dispone di alcune proprieta’ algebriche interessanti: Il join e’ commutativo: r1 Il join e’ associativo: Nel caso di join n-ari: Dimostrazione? (r1 r1 r2 = r2 r1 r2 ) r3 = r1 .. rn = (r2 n 1 i r r3 ) Algebra Relazionale E’ possibile stabilire una corrispondenza tra query SQL ed espressioni in algebra relazionale… Schema generale (tralasciando le ridenominazioni) SELECT A1, A2, … An FROM T1, T2, … Tm WHERE Condizione PA1A2 ..An (s Condizione (T1 T2 ... Tm )) Algebra Relazionale Dato il seguente schema: IMPIEGATI(Codice, Nome, Cognome, Livello) STIPENDI (LivelloQualifica, Retribuzione) determinare la retribuzione degli impiegati che si chiamano “Mario”. SELECT RETRIBUZIONE FROM IMPIEGATI, STIPENDI WHERE ((NOME=“MARIO”) AND (LIVELLO=LIVELLOQUALIFICA)) PRETRIBUZIONE (s NOME="MARIO"ÙLIVELLO=LIVELLOQUALIFICA (IMPIEGATI STIPENDI)) Algebra Relazionale Dato il seguente schema: IMPIEGATI(Codice, Nome, Cognome, Livello) STIPENDI (LivelloQualifica, Retribuzione) determinare la retribuzione MEDIA degli impiegati che si chiamano “Mario”. SELECT AVG(RETRIBUZIONE) FROM IMPIEGATI, STIPENDI WHERE ((NOME=“MARIO”) AND (LIVELLO=LIVELLOQUALIFICA)) In algebra relazionale? Non si puo’ esprimere … Algebra Relazionale Il theta-join e’ un operatore derivato, espresso come un join naturale seguito da un operatore di selezione. Theta-join: r1 r = s F (r1 F 2 r2 ) F e’ una condizione utilizzabile in una selezione. r1 ed r2 devono avere schemi diversi, ossia non devono avere attributi in comune. Algebra Relazionale Un esempio di theta-join con condizione di selezione (NrPosti>150). VOLI AEREI Codice Partenza Arrivo AZ123 Roma Parigi AF345 Milano Boston AF167 Parigi Londra VOLI NRPOSTI>150 AEREI Modello NrPosti Smoking B747 250 NO MD80 120 NO Codice Partenza Arrivo Modello NrPosti Smoking AZ123 Roma Parigi B747 250 NO AF345 Milano Boston B747 250 NO AF167 Parigi Londra B747 250 NO Algebra Relazionale Un esempio di theta-join con condizione di selezione (NrPosti>150). VOLI AEREI Codice Partenza Arrivo Modello AZ123 Roma Parigi B747 AF345 Milano Boston MD80 AF167 Parigi Londra B737 VOLI NRPOSTI>150 AEREI Modello NrPosti Smoking B747 250 NO MD80 120 NO ???, Errore, il theta-join assume che le tue relazioni coinvolte abbiano schemi distinti (no attributi in comune) .. Algebra Relazionale L’ equi-join e’ un theta-join, in cui la condizione di selezione e’ una congiunzione di atomi di uguaglianza. Equi-join: r1 r = s F (r1 F 2 F e’ una congiunzione di atomi. r2 ) F = C1 ÙC2 Ù...Cn Ogni atomo e’ un’uguaglianza, tra due attributi (A,B) oppure tra un attributo ed una costante (d) nel suo dominio. C = (A = d)Ú(A = B) Algebra Relazionale Esempio di equi-join … VOLI AEREI Codice Partenza Arrivo Modello AZ123 Roma Parigi B747 AF345 Milano Boston MD80 AF167 Parigi Londra B737 VOLI MODELLO=CODICE Codice NrPosti Smoking B747 250 NO MD80 120 NO AEREI Codice Partenza Arrivo Modello NrPosti Smoking AZ123 Roma Parigi B747 250 NO AF345 Milano Boston MD80 120 NO Algebra Relazionale Il join naturale di tue relazioni r1 ed r2 puo’ essere espresso mediante gli operatori di selezione, equijoin e ridenominazione. Es. date 2 relazioni: r1(ABC), r2(BCD) Step1: Ridenominazione Step2: Equi-join Step3: Proiezione r1 PABCD (r1 rB'C'<-B,C (r2 ) B=B'ÙC=C' rB'C'<-B,C (r2 ) B=B'ÙC=C' rB'C'<-B,C (r2 )) Algebra Relazionale Nel join naturale, non tutte le tuple di una relazione contribuiscono al risultato finale … IMPIEGATI SEDI Codice Nome Sede Sede Mansione 123 Rossi Bologna Bologna Sviluppo 345 Bianchi Milano Milano Testing 167 Verdi Parma 189 Rosati Palermo IMPIEGATI SEDI } Queste tuple non appaiono nel risultato finale (dangling values)!! Id Nome Sede Mansione 123 Rossi Bologna Sviluppo 345 Bianchi Milano Testing Algebra Relazionale Possono esistere casi in cui si vorrebbero includere anche le dangling tuple nel risultato finale… PAZIENTI MEDICI_BOLOGNA Codice Nome Cognome Codice Medico Codice Medico Nome Medico Cognome Medico 123 Rossi Bologna MB124 MB124 Marco Bianchi 345 Bianchi Milano VB34 VB34 Valerio Bianchi 167 Verdi Parma VB34 189 Rosati Palermo MR56 Vorrei includere nel risultato finale tutte le informazioni sui pazienti (e relativi medici) … Algebra Relazionale PAZIENTI MEDICI_BOLOGNA Codice Nome Cognome Codice Medico Codice Medico Nome Medico Cognome Medico 123 Rossi Bologna MB124 MB124 Marco Bianchi 345 Bianchi Milano VB34 VB34 Valerio Bianchi 167 Verdi Parma VB34 189 Rosati Palermo MR56 PAZIENTI MEDICI _ BOLOGNA Questo valore non compare in MEDICI_BOLOGNA Codice Nome Cognome Codice Medico Nome Medico Cognome Medico 123 Rossi Bologna MB124 Marco Bianchi 345 Bianchi Milano VB34 Valerio Bianchi 167 Verdi Parma VB34 Valerio Bianchi Algebra Relazionale L’outer-join consente di far apparire le tuple dangling nel risultato finale, completando le informazioni mancanti con valori NULL. Tre varianti dell’outer-join: Left join completamento dell’operando sx. Right join completamento dell’operando dx. Full Join completamento di entrambi gli operandi. Algebra Relazionale Esempio1: Left outer-join … IMPIEGATI SEDI Codice Nome Sede Sede Mansione 123 Rossi Bologna Bologna Sviluppo 345 Bianchi Milano Milano Testing 167 Verdi Parma Venezia Direzione 189 Rosati Palermo IMPIEGATI LEFT SEDI Codice Nome Sede Mansione 123 Rossi Bologna Sviluppo 345 Bianchi Milano Testing 167 Verdi Parma NULL 189 Rosati Palermo NULL Algebra Relazionale Esempio2: Right outer-join … IMPIEGATI SEDI Codice Nome Sede Sede Mansione 123 Rossi Bologna Bologna Sviluppo 345 Bianchi Milano Milano Testing 167 Verdi Parma Venezia Direzione 189 Rosati Palermo IMPIEGATI RIGHT SEDI Codice Nome Sede Mansione 123 Rossi Bologna Sviluppo 345 Bianchi Milano Testing NULL NULL Venezia Direzione Algebra Relazionale Esempio3: Full outer-join … SEDI IMPIEGATI Codice Nome Sede 123 Rossi Bologna 345 Bianchi Milano 167 Verdi Parma 189 Rosati Palermo IMPIEGATI FULL SEDI Sede Mansione Bologna Sviluppo Milano Testing Venezia Direzione Codice Nome Sede Mansione 123 Rossi Bologna Sviluppo 345 Bianchi Milano Testing 167 Verdi Parma NULL 189 Rosati Palermo NULL NULL NULL Venezia Direzione Algebra Relazionale Come in SQL, e’ possibile definire delle viste, sotto forma di interrogazioni dell’algebra relazionale cui si assegna un nome. Le viste possono essere usate in interrogazioni, per semplificarne la scrittura. altre Esempio di vista con nome IMPIEGATIBOLOGNA … IMPIEGATI BOLOGNA = s SEDE=BOLOGNA (IMPIEGATI SEDI) Algebra Relazionale L’algebra relazionale consente interrogazioni equivalenti tra loro. di creare L’equivalenza puo’ essere: Dipendente dallo schema E1 ºR E2 Se E1=E2 per ogni istanza r dello schema R Assoluta (per ogni schema) E1 º E2 se E1 ºR E2 per ogni schema R Algebra Relazionale Esempio di uguaglianza dipendente dallo schema! PAB (R1 ) PAC (R2 ) ºR PABC (R1 R2 ) Es. L’uguaglianza funziona sullo schema seguente: R1=VOLI(Codice, AeroportoArrivo, OraArrivo, OraPartenza, Vettore) R2=AEREI(Vettore, NumPasseggeri) … Ma che accade se le due relazioni coinvolte hanno altri attributi in comune oltre a quelli che compaiono in A? Algebra Relazionale STUDENTI ANAGRAFICA Matricola Nome Cognome CdL Nome Cognome CF Data 01212 Marco Rossi Fisica Michele Rossi MR233G 03/01/1990 02121 Michele Bianchi Informatica Michele Marchi MM768H 06/11/1992 43242 Giovanna Verdi Chimica Giovanna Verdi GV1111J 05/11/1993 56776 Daniele Rosati Fisica Giovanna Bianchini GB3133J 23/06/1988 PNOME,CdL (STUDENTI) ¹ PNOME,DATA (ANAGRAFICA) Nome CdL Data Michele Informatica 03/01/1990 Michele Informatica 06/11/1992 Giovanna Chimica 05/11/1993 Giovanna Fisica 23/06/1988 PNOME,CdL,DATA (STUDENTI ANAGRAFICA) Nome CdL Data Giovanna Chimica 05/11/1993 Algebra Relazionale Uguaglianze a livello di schema … Atomizzazione delle selezioni: s F1ÙF2 (E) = s F1 (s F2 (E)) Idempotenza delle proiezioni: PX (E) = PX (PXY (E)) Selezione anticipata: s F (E1 E2 ) = E1 (F fa riferimento solo ad attributi di E2) Inglobamento di una selezione: s F (E1 s F (E2 ) E2 ) = E1 F E2 Algebra Relazionale Uguaglianze a livello di schema (continua)… Commutativita della selezione: s F (PY (E)) = PY (s F (E)) (F deve riferirsi solo ad attributi in Y) Commutatitvita del join: E1 E2 = E2 E1 Associtativita’ del join: (E1 E2 ) E3 = E1 (E2 E3 ) Algebra Relazionale Uguaglianze a livello di schema (continua) … Proiezione anticipata: PX1Y 2 (E1 E2 ) = E1 (E1 ed E2 definite su X1 ed X2. Y2 deve l’interesezione di X1 ed X2.) PY 2 (E2 ) contenere Proprieta’ distributive della selezione e proiezione: s F (AÈB) = s F (A)Ès F (B) s F (A- B) = s F (A)- s F (B) PF (AÈB) = PF AÈPF (B) Algebra Relazionale Q. Come si dimostra se un’uguaglianza a livello di schema e’ valida? Verificare l’opposto e’ facile Basta trovare un esempio (schema/istanza) su cui l’uguaglianza non vale! PA (E1 F E2 ) = PA (E1 ) F PA (E2 ) Se non ci sono assunzioni sulla struttura di E1, E2, ed A, l’uguaglianza sopra e’ FALSA CONTROESEMPIO: E1=IMPIEGATI(Codice, Stipendio, Sede) E2=SEDI(Citta, Mansione) A=Stipendio F: (Sede=Citta) Algebra Relazionale Q. Come si dimostra se un’uguaglianza a livello di schema e’ valida? Es. Dimostrare che: s F1ÙF2 (E) = s F1 (s F2 (E)) SCHEMA DI DIMOSTRAZIONE 1) Occorre dimostrare che: se t Î s F1 (s F2 (E)) Þ 2) Occorre dimostrare che: t Î s F1ÙF 2 (E) se t Î s F1ÙF2 (E) Þ t Î s F1 (s F 2 (E)) Algebra Relazionale Esempio di ottimizzazione di query Dato il seguenti schema: VOLI(Codice, CittaPartenza, CittaArrivo, Vettore) AEREI(Modello, NrPosti, Smoking) Q. Determinare i modelli degli aerei in partenza da Milano con meno di 100 passeggeri. PMODELLO (s MODELLO=VETTOREÙCITTAPART=MILANOÙNRPOSTI<100 (VOLI AEREI)) Algebra Relazionale Esempio di ottimizzazione di query 1. Atomizzazione delle selezioni. PMODELLO (s MODELLO=VETTORE (s CITTAPART=MILANO (s NRPOSTI<100 (VOLI AEREI)))) 2. Anticipazione della selezione rispetto al join PMODELLO (s MODELLO=VETTORE ((s CITTAPART=MILANO (VOLI) (s NRPOSTI<150 AEREI)))) 3. Inglobamento della selezione nel join PMODELLO ((s CITTAPART=MILANO (VOLI) MODELLO=VETTORE (s NRPOSTI<150 AEREI))) Algebra Relazionale Esempio di ottimizzazione di query 4. Anticipazione della proiezione. PMODELLO (((PMODELLO (s CITTAPART=MILANO (VOLI))) º MODELLO=VETTORE (PVETTORE (s NRPOSTI<150 AEREI))))) PMODELLO (s MODELLO=VETTOREÙCITTAPART=MILANOÙNRPOSTI<100 (VOLI AEREI)) Q. E’ possibile ottimizzare ulteriormente l’interrogazione?