ALGEBRA RELAZIONALE Basi di dati |Algebra relazionale 3{0 Linguaggi di interrogazione (query language) per basi di dati relazionali algebra relazionale calcolo relazionale SQL QBE Basi di dati |Algebra relazionale procedurale dichiarativo teorico parzialmente dichiarativo reale dichiarativo reale 3{1 Algebra relazionale Insieme di operatori su relazioni che producono relazioni e quindi possono essere la base per espressioni complesse Operatori dell'algebra relazionale: unione, intersezione, dierenza ridenominazione selezione proiezione join (join naturale, prodotto cartesiano, theta-join) Basi di dati |Algebra relazionale 3{2 Operatori insiemistici le relazioni sono insiemi i risultati debbono essere relazioni (insiemi di ennuple omogenee) Quindi e possibile applicare gli operatori insiemistici (unione, intersezione, dierenza) solo a coppie di relazioni denite sugli stessi attributi. Basi di dati |Algebra relazionale 3{3 laureati Matricola Cognome Eta 7274 Rossi 37 7432 Neri 39 9824 Verdi 38 quadri Matricola Cognome Eta 9297 Neri 56 7432 Neri 39 9824 Verdi 38 laureati [ quadri Matricola Cognome 7274 Rossi 7432 Neri 9824 Verdi 9297 Neri Eta 37 39 38 56 Basi di dati |Algebra relazionale laureati Matricola Cognome Eta 7274 Rossi 37 7432 Neri 39 9824 Verdi 38 quadri Matricola Cognome Eta 9297 Neri 56 7432 Neri 39 9824 Verdi 38 Basi di dati |Algebra relazionale 3{4 laureati \ quadri Matricola Cognome Eta 7432 Neri 39 9824 Verdi 38 3{5 laureati Matricola Cognome Eta 7274 Rossi 37 7432 Neri 39 9824 Verdi 38 quadri Matricola Cognome Eta 9297 Neri 56 7432 Neri 39 9824 Verdi 38 laureati , quadri Matricola Cognome Eta 7274 Rossi 37 Basi di dati |Algebra relazionale paternita Padre Adamo Adamo Abramo Abramo 3{6 Figlio Caino Abele Isacco Ismaele maternita Madre Eva Eva Sara Agar Figlio Caino Set Isacco Ismaele paternita [ maternita ?? Basi di dati |Algebra relazionale 3{7 Ridenominazione operatore monadico (\unario") intuitivamente, \modica lo schema" lasciando inalterata l'istanza dell'operando permette di superare le limitazioni imposte agli operatori insiemistici Basi di dati |Algebra relazionale paternita Padre Figlio Adamo Caino Adamo Abele Abramo Isacco Isacco Giacobbe Basi di dati |Algebra relazionale 3{8 Genitore Padre(paternita) Genitore Figlio Adamo Caino Adamo Abele Abramo Isacco Isacco Giacobbe 3{9 r(X ), relazione Y , insieme di attributi con jX j = jY j f : X ,! Y , iniettiva (e suriettiva) (funzione di ridenominazione) la ridenominazione f (r) di r rispetto a f contiene le ennuple t denite su Y tali che esista una ennupla t0 2 r con t0[A] = t[f (A)], per ogni A 2 X Basi di dati |Algebra relazionale 3{10 La funzione di ridenominazione viene scritta indicando solo gli attributi su cui e diversa dall'identita, con la notazione (in cui l'ordinamento e signicativo): f (A1); f (A2); : : : ; f (Ak ) A1; A2; : : : ; Ak Esempio: X = Padre,Figlio Y = Genitore,Figlio f (Padre) = Genitore f (Figlio) = Figlio f si indica con Genitore Basi di dati |Algebra relazionale Padre 3{11 paternita Padre Adamo Adamo Abramo Abramo Figlio Caino Abele Isacco Ismaele maternita Madre Eva Eva Sara Agar Figlio Caino Set Isacco Ismaele Genitore Padre(paternita) [ Genitore Madre(maternita) Genitore Figlio Adamo Caino Adamo Abele Abramo Isacco Abramo Ismaele Eva Caino Eva Set Sara Isacco Agar Ismaele Basi di dati |Algebra relazionale 3{12 impiegati Cognome Agenzia Stipendio Rossi Roma 45 Neri Milano 53 operai Cognome Fabbrica Salario Verdi Latina 33 Bruni Monza 32 Sede,Retribuzione Agenzia,Stipendio(impiegati)[ Sede,Retribuzione Fabbrica,Salario(operai) Cognome Sede Retribuzione Rossi Roma 45 Neri Milano 53 Verdi Latina 33 Bruni Monza 32 Basi di dati |Algebra relazionale 3{13 Selezione operatore monadico produce un risultato che { ha lo stesso schema dell'operando { contiene un sottoinsieme delle ennuple dell'operando produce decomposizioni \orizzontali" Basi di dati |Algebra relazionale impiegati Cognome Rossi Neri Verdi Rossi 3{14 Nome Mario Luca Nico Marco Eta 25 40 36 40 Stipendio 2.000.000 3.000.000 4.500.000 3.900.000 Eta < 30 _ Stipendio > 4.000.000(impiegati) Cognome Nome Eta Stipendio Rossi Mario 25 2.000.000 Verdi Nico 36 4.500.000 il risultato di una selezione contiene le ennuple dell'operando che soddisfano la condizione di selezione Basi di dati |Algebra relazionale 3{15 r(X ), relazione F formula proposizionale su X : { cioe formula ottenuta combinando con i connettivi logici _ (OR), ^ (AND), : (NOT), { atomi del tipo AB o Ac { con A e B attributi in X { c costante \compatibile" con dom(A) { e operatore di confronto (=, 6=, >, <, , ). E denito un valore di verita per F su ciascuna ennupla t: { AB e vera su t se t[A] e in relazione con t[B] { Ac e vera su t se t[A] e in relazione con c { F1 _ F2, F1 ^ F2 e :F1 hanno l'usuale signicato la selezione F (r) di r rispetto a F contiene le ennuple t di r su cui F e vera Basi di dati |Algebra relazionale 3{16 Proiezione operatore monadico produce un risultato { denito su un sottoschema dell'operando { a cui contribuiscono tutte le ennuple dell'operando produce decomposizioni \verticali" r(X ), relazione Y sottoinsieme di X la proiezione Y (r) di r su Y e un insieme di ennuple su Y : Basi di dati |Algebra relazionale f t[Y ] j t 2 r g 3{17 impiegati Cognome Rossi Neri Verdi Rossi Nome Mario Luca Nico Marco Reparto Capo Vendite De Rossi Vendite De Rossi Personale Lupi Personale Lupi Cognome Nome(impiegati) Cognome Nome Rossi Mario Neri Luca Verdi Nico Rossi Marco Reparto Capo(impiegati) Reparto Capo Vendite De Rossi Personale Lupi Basi di dati |Algebra relazionale 3{18 il risultato di una proiezione contiene al piu tante ennuple quante l'operando puo contenerne di meno Y (r) contiene lo stesso numero di ennuple di r se e solo se Y e superchiave per r (N.B.: questa proprieta e denita a livello di istanza, non a livello di schema) Basi di dati |Algebra relazionale 3{19 Join (naturale) operatore binario (generalizzabile) correla dati di relazioni diverse e l'operatore piu caratteristico dell'algebra relazionale Basi di dati |Algebra relazionale r1 Impiegato Reparto Rossi vendite Neri produzione Bianchi produzione 3{20 r2 Reparto Capo produzione Mori vendite Bruni r11r2 Impiegato Reparto Capo Rossi vendite Bruni Neri produzione Mori Bianchi produzione Mori Basi di dati |Algebra relazionale 3{21 il join naturale r11r2 di r1(X1) e r2(X2) e una relazione denita su X1X2: f t su X1X2 j esistono t1 2 r1 e t2 2 r2 con t[X1] = t1 e t[X2] = t2g Basi di dati |Algebra relazionale r1 Impiegato Reparto Rossi vendite Neri produzione Bianchi produzione 3{22 r2 Reparto Capo produzione Mori vendite Bruni r11r2 Impiegato Reparto Capo Rossi vendite Bruni Neri produzione Mori Bianchi produzione Mori un join completo (ogni ennupla contribuisce al risultato) Basi di dati |Algebra relazionale 3{23 r1 Impiegato Reparto Rossi vendite Neri produzione Bianchi produzione r2 Reparto Capo produzione Mori acquisti Bruni r11r2 Impiegato Reparto Capo Neri produzione Mori Bianchi produzione Mori un join con ennuple dangling (non combinabili con ennuple dell'altra relaione) Basi di dati |Algebra relazionale 3{24 r1 Impiegato Reparto Rossi vendite Neri produzione Bianchi produzione r2 Reparto Capo concorsi Mori acquisti Bruni r11r2 Impiegato Reparto Capo un join vuoto Basi di dati |Algebra relazionale 3{25 r1 Impiegato Progetto Rossi A Neri A Bianchi A r2 Progetto Capo A Mori A Bruni r11r2 Impiegato Reparto Capo Rossi A Mori Neri A Mori Bianchi A Mori Rossi A Bruni Neri A Bruni Bianchi A Bruni un altro join completo (con jr1j jr2j ennuple: ogni ennupla di r1 e combinabile con tutte le ennuple di r2 e viceversa) Basi di dati |Algebra relazionale 3{26 il join di r1 e r2 contiene un numero di ennuple compreso fra 0 e jr1j jr2j; se il join di r1 e r2 e completo, allora contiene almeno un numero di ennuple pari al massimo fra jr1j e jr2j; se X1 \ X2 contiene una chiave per r1 (per r2), allora il join di r1(X1) e r2(X2) contiene al piu jr2j (jr1j) ennuple; Basi di dati |Algebra relazionale 3{27 paternita Padre Adamo Adamo Abramo Abramo Figlio Caino Abele Isacco Ismaele maternita Madre Eva Eva Sara Agar Figlio Caino Set Isacco Ismaele paternita1maternita Padre Figlio Madre Adamo Caino Eva Abramo Isacco Sara Abramo Ismaele Agar Basi di dati |Algebra relazionale 3{28 il join di due relazioni sugli stessi attributi e pari all'intersezione delle due relazioni: r1(X )1r2(X ) = r1(X ) \ r2(X ) il join naturale e denito anche fra relazioni che non hanno attributi in comune. In tal caso viene chiamato prodotto cartesiano. Il prodotto cartesiano di r1 e r2 contiene sempre jr1j jr2j ennuple. Non si tratta del tradizionale prodotto cartesiano fra insiemi Basi di dati |Algebra relazionale 3{29 impiegati Impiegato Progetto Rossi A Neri A Neri B progetti Codice Nome A Venere B Marte impiegati1 progetti Impiegato Progetto Codice Nome Rossi A A Venere Neri A A Venere Neri B A Venere Rossi A B Marte Neri A B Marte Neri B B Marte Basi di dati |Algebra relazionale 3{30 il join naturale e commutativo: r11r2 = r21r1, per ogni r1 e r2 il join naturale e associativo: r11(r21r3) = (r11r2)1r3, per ogni r1, r2, r3 E quindi possibile denire un operatore di join n-ario (attraverso applicazioni ripetute dell'operatore binario). Una denizione equivalente: r1(X1)1r2(X2)1 : : : 1rn(Xn) (in breve 1ni=1ri): f t su X1 : : : Xn j esistono t1 2 r1; : : : ; tn 2 rn; con t[X1] = t1; : : : ; t[Xn] = tng Dimostrazione: per induzione. Basi di dati |Algebra relazionale 3{31 Join e proiezione: proprieta Join e proiezione sono (quasi) inversi. r1(X1) e r2(X2) { X1 (r11r2) r1 { X1 (r11r2) = r1 e X2(r11r2) = r2 se e solo se il join di r1 e r2 e completo { il join di X1 (r11r2) e X2(r11r2) e completo r(X ); X = X1X2 { X1 (r)1X2(r) r { se X1 (r)1X2(r) = r diciamo che r si decompone senza perdita su X1 e X2 { X1 (r)1X2(r) si decompone senza perdita su X1 e X2 Queste proprieta sono generalizzabili al join n-ario. Basi di dati |Algebra relazionale 3{32 Theta-join Un'operatore derivato. Siano r1 e r2 due relazioni senza attributi in comune. r11F r2 = F (r11r2) Il theta-join e un prodotto cartesiano seguito da una selezione. Se F e una congiunzione di atomi di uguaglianza, abbiamo un equi-join. Basi di dati |Algebra relazionale 3{33 impiegati Impiegato Progetto Rossi A Neri A Neri B progetti Codice Nome A Venere B Marte impiegati 1Progetto=Codice progetti Impiegato Progetto Codice Nome Rossi A A Venere Neri A A Venere Neri B B Marte Basi di dati |Algebra relazionale 3{34 Espressioni ed interrogazioni Un'interrogazione e una funzione che, applicata a istanze di base di dati, produce istanze di relazione. U1 insieme (innito) numerabile di attributi (per semplicita tutti sullo stesso dominio); U insieme di tutte le relazioni su attributi in U1 R schema di base di dati; I (R) insieme delle istanze di R Un'interrogazione Q e una funzione: Q : I (R) ! U Basi di dati |Algebra relazionale 3{35 Di solito gli attributi del risultato sono ssati. Esiste X U1 tale che Q : I (R) ! X dove X e l'insieme di tutte le relazioni su X Q(r) indica il risultato dell'applicazione di Q ad r (puo non essere denito | Q e in generale una funzione parziale). Basi di dati |Algebra relazionale 3{36 Le espressioni dei vari linguaggi di interrogazione (es. l'algebra relazionale) \rappresentano" o \realizzano" interrogazioni: ogni espressione denisce una funzione. E (r) e il il risultato dell'applicazione di E ad r Basi di dati |Algebra relazionale 3{37 Due espressioni (dello stesso linguaggio o di due linguaggi diversi) sono equivalenti se rappresentano la stessa interrogazione: E1 R E2 se E1(r) = E2(r) per ogni r 2 I (R). E1 E2 se E1 R E2 per ogni schema R denibile su U1. AB (A>0(R)) A>0(AB (R)) AB (R1) 1 AC (R2) R ABC (R1 1 R2) (se R contiene R1(X1) e R2(X2) e X1 \ X2 = A) Basi di dati |Algebra relazionale 3{38 Due linguaggi sono equivalenti se permettono di formulare le stesse interrogazioni. L1 e espressivo almeno quanto L2 se per ogni espressione E2 di L2 e per ogni schema di base di dati R esiste un'espressione E1 di L1 tale che E1 R E2. L1 e L2 sono equivalenti se ognuno e espressivo almeno quanto l'altro. Basi di dati |Algebra relazionale 3{39 In algebra relazionale, le interrogazioni su uno schema di base di dati R vengono formlate con espressioni i cui atomi sono: (nomi di) relazione in R (le \variabili"); relazioni costanti (che non fanno parte delle istanze di R). Abbiamo variabili e costanti come nelle espressioni di altre algebre note. Basi di dati |Algebra relazionale 3{40 Relazioni costanti: Per ogni relazione su PERSONE(Nome,Sesso,: : :) generare una relazione con associato agli uomini il titolo \Signor" e alle donne \Signora". I due valori non sono contenuti nella base di dati e gli operatori non possono \creare" valori. Il risultato desiderato si ottiene con: PERSONE 1 TITOLI dove TITOLI e una relazione costante: TITOLI Sesso Titolo M Signor F Signora Basi di dati |Algebra relazionale 3{41 p1 Nome Sesso : : : Neri F ::: Bianchi F : : : Verdi M ::: p2 Nome Sesso : : : Rossi M : : : Bini F ::: p1 1 TITOLI Nome Sesso Neri F Bianchi F Verdi M p2 1 TITOLI Titolo Nome Sesso : : : Signor Rossi M : : : Signora Bini F ::: Titolo Signora Signora Signor ::: ::: ::: ::: Basi di dati |Algebra relazionale 3{42 PERSONE(Nome,Eta,Reddito) PATERNITA(Padre,Figlio) MATERNITA(Madre,Figlio) persone Nome Eta Reddito Andrea 27 21 Aldo 25 15 Maria 55 42 Anna 50 35 Filippo 26 30 Luigi 50 40 Franco 60 20 Olga 30 41 Sergio 85 35 Luisa 75 87 maternita paternita Madre Figlio Padre Figlio Luisa Maria Sergio Franco Luisa Luigi Franco Andrea Anna Olga Franco Aldo Anna Filippo Luigi Olga Maria Andrea Luigi Filippo Maria Aldo Basi di dati |Algebra relazionale 3{43 \Trovare nome e reddito delle persone con meno di 30 anni" Nome ;Reddito (Eta <30(persone )) Nome Reddito Andrea 21 Aldo 15 Filippo 30 Basi di dati |Algebra relazionale 3{44 \Trovare i padri di persone che guadagnano piu di venti milioni" Padre (paternita 1Figlio=Nome (reddito >20(persone ))) Padre Franco Luigi Basi di dati |Algebra relazionale 3{45 \Trovare i padri i cui gli guadagnano tutti piu di venti milioni" Padre (paternita ) , ,Padre (paternita 1Figlio=Nome (reddito 20(persone ))) Padre Luigi Basi di dati |Algebra relazionale 3{46 \Trovare le persone che guadagnano piu dei rispettivi padri, mostrandone nomi, redditi e nomi dei rispettivi padri" N ;R;P (R>RP ((persone 1N =F paternita ) 1P =NP (NP ;EP ;RP N;E;R(persone )))) Nome Reddito Padre Andrea 21 Franco Olga 41 Luigi Basi di dati |Algebra relazionale 3{47 Schema della base di dati di una dinastia reale: REIGNS (Sovereign, From, To) PERSONS (Name, Sex, Birth, Death) FATHERHOOD (Father, Child) MOTHERHOOD (Mother, Child) Basi di dati |Algebra relazionale reigns Sovereign James I Charles I Charles II James II Mary II Anne From 1603 1625 1660 1685 1688 1702 To 1625 1648 1685 1688 1694 1714 fatherhood Father Child Lord Darnley James I James I Elizabeth James I Charles I Charles I Charles II Charles I Mary Charles I James II Charles I Henrietta A. James II Mary II James II Anne James II James F.E. Basi di dati |Algebra relazionale 3{48 persons Name Sex James I M Elizabeth F Charles I M Charles II M Mary F James II M Henrietta A. F Mary II F Anne F James F.E. M motherhood Mother Mary Stuart Anne of Denmark Anne of Denmark Henrietta Maria Henrietta Maria Henrietta Maria Henrietta Maria Anne Hyde Anne Hyde Mary of Modena Birth Death 1566 1625 1590 1662 1600 1649 1630 1685 1631 1659 1633 1701 1640 1670 1662 1694 1665 1714 1686 1766 Child James I Elizabeth Charles I Charles II Mary James II Henrietta A. Mary II Anne James F.E. 3{49 REIGNS (Sovereign, From, To) PERSONS (Name, Sex, Birth, Death) FATHERHOOD (Father, Child) MOTHERHOOD (Mother, Child) \i sovrani che hanno regnato no alla morte" (Name,Death Sovn,To(REIGNS )) 1 PERSONS Name James I Charles II Mary II Anne Sex M M F F Birth 1566 1633 1662 1665 From 1603 1660 1688 1702 Death 1625 1685 1694 1714 Basi di dati |Algebra relazionale 3{50 REIGNS (Sovereign, From, To) PERSONS (Name, Sex, Birth, Death) FATHERHOOD (Father, Child) MOTHERHOOD (Mother, Child) \i gli (noti alla base di dati) dei sovrani della famiglia" Sovn, Child(REIGNS 1 (Sovn Father(FATHERHOOD) [ Sovn Mother(MOTHERHOOD)) Sovereign Child James I Elizabeth James I Charles I Charles I Charles II Charles I Mary Charles I James II Charles I Henrietta A. James II Mary II James II Anne James II James F.E. Basi di dati |Algebra relazionale 3{51