Algebra Relazionale 1 Algebra Relazionale Operazioni nel Modello Relazionale Le operazioni sulle relazioni possono essere espresse in due formalismi di base: Algebra relazionale: le interrogazioni (query) sono espresse applicando operatori specializzati alle relazioni Calcolo relazionale: le interrogazioni (query) sono espresse per mezzo di formule logiche che devono essere verificate dalle tuple ottenute come risposta all'interrogazione I due formalismi (sotto opportune ipotesi) sono equivalenti 2 Algebra Relazionale 1 Algebra Relazionale Esistono cinque operazioni di base: Unione Differenza Prodotto cartesiano Proiezione Selezione Queste operazioni definiscono completamente l’algebra relazionale 3 Algebra Relazionale Algebra Relazionale Ogni operazione restituisce come risultato una relazione: è pertanto possibile applicare una operazione al risultato di un'altra operazione (proprietà di chiusura) Esistono operazioni addizionali, che possono essere espresse in termini delle cinque operazioni di base 4 Algebra Relazionale 2 Algebra Relazionale Tali operazioni non aggiungono potere espressivo all'insieme delle operazioni di base, ma sono utili come abbreviazioni; di queste la più importante è l'operazione di join Rispetto alla notazione per nome del modello relazionale, può essere utile introdurre una ulteriore operazione di ridenominazione (renaming) che permette di modificare i nomi degli attributi 5 Algebra Relazionale Algebra Relazionale - Unione L’unione di due relazioni R ed S, indicata con R∪S è l’insieme delle tuple in R, in S o in entrambe L’unione di due relazione può essere fatta solo se hanno lo stesso grado; inoltre il primo attributo di R deve essere compatibile con il primo attributo di S, il secondo attributo di R deve essere compatibile con il secondo attributo di S, e così via 6 Algebra Relazionale 3 Algebra Relazionale – Unione Se le relazioni hanno nomi di attributo diversi, nella relazione risultato per convenzione si usano i nomi della prima relazione (in questo caso R), a meno di opportune ridenominazioni Le tuple duplicate vengono eliminate Il grado della relazione risultato è uguale al grado delle relazioni operandi 7 Algebra Relazionale Algebra Relazionale – Esempio Unione A a B b C c D b E g F a A B C a b c d c a b f d d a f d a f c b d b g a S R R∪S 8 Algebra Relazionale 4 Algebra Relazionale - Differenza La differenza di due relazioni R ed S, indicata con R-S è l’insieme delle tuple che sono in R ma non in S La differenza (come l’unione) può essere eseguita solo se le relazioni hanno lo stesso grado e gli attributi sono compatibili 9 Algebra Relazionale Algebra Relazionale - Differenza In caso di attributi con nomi diversi, nella relazione risultato, per convenzione, si usano i nomi della prima relazione, a meno di opportune ridenominazioni Il grado della relazione risultato è uguale al grado delle relazioni operandi 10 Algebra Relazionale 5 Algebra Relazionale – Esempio Differenza A a d c B b a b C c f d D b d E g a F a f S A B C a b c b R-S c d R 11 Algebra Relazionale Algebra Relazionale – Prodotto Cartesiano Il prodotto cartesiano di due relazioni R ed S, di grado k1 e k2 rispettivamente, indicato con RxS è una relazione di grado k1+k2 le cui tuple sono tutte le tuple che hanno: come prime k1 componenti le tuple di R come seconde k2 componenti le tuple di S 12 Algebra Relazionale 6 Algebra Relazionale – Prodotto Cartesiano Nella relazione risultato i nomi dei primi k1 attributi sono i nomi degli attributi della relazione R e i nomi degli ultimi k2 attributi sono i nomi degli attributi della relazione S Se le due relazioni hanno attributi con lo stesso nome, è necessario ridenominare gli attributi in una delle due relazioni 13 Algebra Relazionale Algebra Relazionale – Esempio Prodotto Cartesiano A a B b C c D b E g F a A B C D E F a b c b g a d c a b f d d a f a d d c c S R b a a b b c f f d d d b d b d a g a g a f a f a f RxS 14 Algebra Relazionale 7 Algebra Relazionale - Proiezione La proiezione di una relazione R su un insieme di attributi A={A1,…,Am}, indicata con ΠA1,…,Am(R) è una relazione di grado m le cui tuple hanno come attributi solo quelli specificati in A Pertanto la proiezione genera un insieme T di mtuple tali che se t=[A1:v1,...,Am:vm] è in T allora esiste una tupla t’ in R tale che per ogni Ai in A, 1 i m, t[Ai]=t’[Ai] 15 Algebra Relazionale Algebra Relazionale – Esempio Proiezione A a d c R 16 B b a b C c f d A C B A a c b a d f a d c d b c ΠA,C(R) ΠB,A(R) Algebra Relazionale 8 Algebra Relazionale - Predicati Un predicato F su una relazione R ha una delle seguenti forme: 1) 2) predicato semplice combinazione booleana di predicati semplici; tali combinazioni sono ottenute con i connettivi AND (∧), OR (∨) e NOT (¬) 17 Algebra Relazionale Algebra Relazionale – Tavole di verità dei connettivi logici 18 A B A∧ ∧B A∨ ∨B ¬A A B (¬ ¬ A ∨ B) F F F F V V F V F V V V V F F V F F V V V V F V Algebra Relazionale 9 Algebra Relazionale – Tavole di verità dei connettivi logici ¬A∨B ¬B∨A A B (¬ ¬ A ∨ B) ∧ (¬ ¬ B ∨ A) A B F F V V V F V V F F V F F V F V V V V V 19 Algebra Relazionale Algebra Relazionale - Predicati Un predicato semplice ha una delle seguenti forme: A op costante A op A’ A e A’ sono attributi di R, op è un operatore relazionale di confronto (>,<,>=,<=,=, ecc.), costante è una costante compatibile con il dominio di A 20 Algebra Relazionale 10 Algebra Relazionale – Esempi di Predicati B=b A=C B=b OR A=C B=b AND A=C NOT B=b 21 predicato semplice forma 1) predicato semplice forma 2) combinazione booleana combinazione booleana combinazione booleana Algebra Relazionale Algebra Relazionale - Selezione La selezione su una relazione R, dato un predicato F, indicata con σF(R) è una relazione che contiene tutte e sole le tuple che verificano il predicato F, tale che: il grado della relazione risultato è uguale al grado della relazione operando i nomi degli attributi della relazione risultato sono gli stessi della relazione operando 22 Algebra Relazionale 11 Algebra Relazionale - Selezione Se nessuna tupla di R verifica il predicato F, allora il risultato è una relazione vuota 23 Algebra Relazionale Algebra Relazionale - Selezione 24 Se k è il grado di R, la selezione genera un insieme T di k-tuple Sia t=[A1:v1,…Ak:vk] una k-tupla in T. t è tale che: F(A1/t[A1],…,Ak/t[Ak]) è vera, dove la notazione Ai/t[Ai] indica la sostituzione in F del nome di attributo Ai (se tale nome compare in F) con il valore t[Ai] dell’attributo di nome Ai in t Algebra Relazionale 12 Algebra Relazionale – Esempio Selezione A a d c R B b a b C c f d A a c B b b C c d A B C d a f C c d A σB=b(R) A a c B b b σ(B=b)∨(A=a)(R) 25 σ¬B=b(R) B C σ(B=b)∧(A=C)(R) Algebra Relazionale Algebra Relazionale Ridenominazione La ridenominazione di una relazione R rispetto ad una lista di coppie di nomi di attributi (A1,B1),…, (Am,Bm) tale che Ai e’ un nome di attributo di R, denotata con ρA1,...,Am B1,...,Bm(R) ridenomina l’attributo di nome Ai con il nome Bi La ridenominazione è corretta se il nuovo schema della relazione R ha attributi con nomi tutti distinti 26 Algebra Relazionale 13 Algebra Relazionale – Esempio Ridenominazione La ridenominazione: ρA,B,C AA,BB,CC(R) cambia lo schema R(A,B,C) in R(AA,BB,CC) 27 Algebra Relazionale Algebra Relazionale - Join Il join di due relazioni R ed S sugli attributi A di R ed A’ di S, indicato con R IXIA A’ S è definito come σA A’(RxS) Il join è quindi un prodotto cartesiano seguito da una selezione. Il predicato AθA’ è detto predicato di join 28 Algebra Relazionale 14 Algebra Relazionale - Join Il grado della relazione risultato è uguale alla somma dei gradi delle relazioni operandi Spesso il join è indicato con le seguenti notazioni: R.AθS.A’ oppure R[AθA’]S Il join prende il nome di equijoin quando l’operatore θ nel predicato di join è l’operatore di uguaglianza 29 Algebra Relazionale Algebra Relazionale – Esempio Join A B C 1 2 3 4 5 6 7 8 9 R D E 3 1 A B C D E 1 2 3 3 1 A B C D E 1 2 3 3 1 6 1 4 4 7 7 R IXIA=E S S 2 2 5 5 8 8 3 6 6 9 9 RxS 30 6 3 6 3 6 2 1 2 1 2 A 1 1 4 B 2 2 5 C 3 3 6 D 3 6 6 E 1 2 2 R IXIB<D S Algebra Relazionale 15 Algebra Relazionale – Join Naturale L’operazione di join naturale è una “semplificazione” del join Si consideri l’interrogazione: “ritrovare tutti gli impiegati e gli uffici dove lavorano”; usando il join tale interrogazione è espressa come segue: ΠNome,Ufficio(ImpiegatoIXIImpiegato.Dip#=Dipartimento.Dip#Dipartimento) Questo join impone l’uguaglianza degli attributi che appaiono in entrambe le relazioni 31 Algebra Relazionale Algebra Relazionale – Join Naturale E’ un tipo di join molto frequente L’operazione di join naturale indica un tipo di join basato sull’eguaglianza degli attributi comuni a due relazioni Ha senso solo nella notazione con nome, a differenza delle altre operazioni 32 Algebra Relazionale 16 Algebra Relazionale – Join Naturale Siano: R ed S due relazioni {A1,…,Ak}=UR∩US l’insieme degli attributi presenti sia nello schema di R che in quello di S {B1,…,Bm}= UR∪US l’insieme degli attributi presenti nello schema di R o nello schema di S L’espressione che definisce il join naturale è ΠB1,...,Bm(σc(Rx(ρA1,...,Ak S.A1,...,S.Ak(S)))) dove C è un predicato della forma: A1=S.A1∧...∧Ak=S.Ak 33 Algebra Relazionale Algebra Relazionale – join naturale Il join naturale esegue pertanto un join uguagliando gli attributi con lo stesso nome delle due relazioni e poi elimina gli attributi duplicati Il join naturale si indica con R IXI S 34 Algebra Relazionale 17 Algebra Relazionale – Esempio Join Naturale A B C B C D A B C D a d b c b b b a c c f d b b a c c d d e b a b c d a b c e d b c d d b c e c a d b S R R IXI S 35 Algebra Relazionale Impiegati 36 Imp# Nome Mansione DataA Stipendio PremioP 7369 Rossi Ingegnere 17/12/80 1600.00 500.00 Dip# 20 7499 Andrei Tecnico 20/02/81 800.00 ? 30 7521 Bianchi Tecnico 20/02/81 800.00 100.00 30 7566 Rosi Dirigente 02/04/81 2975.00 ? 20 7654 Martini Segretaria 28/09/81 800.00 ? 30 7698 Blacchi Dirigente 01/05/81 2850.00 ? 30 7782 Neri Ingegnere 01/06/81 2450.00 200.00 10 7788 Scotti Segretaria 09/11/81 800.00 ? 20 7839 Dare Ingegnere 17/11/81 2600.00 300.00 10 7844 Turni Tecnico 08/09/81 1500.00 ? 30 7876 Adami Ingegnere 23/09/81 1100.00 500.00 20 7900 Gianni Ingegnere 03/12/81 1950.00 ? 30 7902 Fordi Segretaria 03/12/81 1000.00 ? 20 7934 Milli Ingegnere 23/01/82 1300.00 150.00 10 7977 Verdi Dirigente 10/12/80 3000.00 ? 10 Algebra Relazionale 18 Algebra Relazionale – Esempi Q1: selezionare i nomi degli impiegati che hanno uno stipendio maggiore di 2000 ΠNome(σStipendio>2000(Impiegati)) Nome Rosi Blacchi Neri Dare Verdi 37 Algebra Relazionale Impiegati 38 Imp# Nome Mansione DataA Stipendio PremioP 7369 Rossi Ingegnere 17/12/80 1600.00 500.00 Dip# 20 7499 Andrei Tecnico 20/02/81 800.00 ? 30 7521 Bianchi Tecnico 20/02/81 800.00 100.00 30 7566 Rosi Dirigente 02/04/81 2975.00 ? 20 7654 Martini Segretaria 28/09/81 800.00 ? 30 7698 Blacchi Dirigente 01/05/81 2850.00 ? 30 7782 Neri Ingegnere 01/06/81 2450.00 200.00 10 7788 Scotti Segretaria 09/11/81 800.00 ? 20 7839 Dare Ingegnere 17/11/81 2600.00 300.00 10 7844 Turni Tecnico 08/09/81 1500.00 ? 30 7876 Adami Ingegnere 23/09/81 1100.00 500.00 20 7900 Gianni Ingegnere 03/12/81 1950.00 ? 30 7902 Fordi Segretaria 03/12/81 1000.00 ? 20 7934 Milli Ingegnere 23/01/82 1300.00 150.00 10 7977 Verdi Dirigente 10/12/80 3000.00 ? 10 Algebra Relazionale 19 Algebra Relazionale - Esempi Q2: selezionare i nomi ed i numeri di dipartimento degli impiegati che hanno uno stipendio maggiore di 2000 e hanno mansione di ingegnere ΠNome,Dip#(σ(Stipendio>2000)∧(Mansione=“Ingegnere”)(Impiegati)) 39 Nome Dip# Neri 10 Dare 10 Algebra Relazionale 20