La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Algebra relazionale (II). Join esterni Per combinare sempre le tuple di due relazioni, anche quando non ci sono corrispondenze tra i valori degli attributi.

Presentazioni simili


Presentazione sul tema: "Algebra relazionale (II). Join esterni Per combinare sempre le tuple di due relazioni, anche quando non ci sono corrispondenze tra i valori degli attributi."— Transcript della presentazione:

1 Algebra relazionale (II)

2 Join esterni Per combinare sempre le tuple di due relazioni, anche quando non ci sono corrispondenze tra i valori degli attributi comuni, inserendo valori NULL in assenza di controparti Non tralasciano tuple di operandi nel risultato

3 Join esterni Join esterno sinistro: estende solo le tuple del primo operando Aggiunge tuple di r1 senza corrispettivo in r2 Join esterno destro:estende solo le tuple del secondo operando Aggiunge tuple di r2 Join esterno completo: estende tuple di entrambi gli operandi Bilaterale

4 Join esterni ImpiegatoReparto RossiVendite NeriProduzione BianchiProduzione RepartoCapo ProduzioneMori AcquistiBruni Rel1Rel2 ImpiegatoRepartoCapo RossiVenditeNULL NeriProduzioneMori BianchiProduzioneMori Rel1  LEFT Rel2

5 Join esterni ImpiegatoReparto RossiVendite NeriProduzione BianchiProduzione RepartoCapo ProduzioneMori AcquistiBruni Rel1Rel2 ImpiegatoRepartoCapo NeriProduzioneMori BianchiProduzioneMori NULLAcquistiBruni Rel1  RIGHT Rel2

6 Join esterni ImpiegatoReparto RossiVendite NeriProduzione BianchiProduzione RepartoCapo ProduzioneMori AcquistiBruni Rel1Rel2 ImpiegatoRepartoCapo RossiVenditeNULL NeriProduzioneMori BianchiProduzioneMori NULLAcquistiBaldi Rel1  FULL Rel2

7 Theta-Join Serve per fare Join su relazioni senza attributi omonimi Operatore derivato: si ottiene come prodotto cartesiano seguito da selezione di tuple che verificano condizione di uguaglianza tra valori di attributi r1  F r2 =  F (r1  r2)

8 Theta-Join ImpiegatoReparto RossiVendite NeriProduzione BianchiProduzione DivisioneCapo VenditeBruni ProduzioneMori AcquistiBaldi Rel1Rel2 ImpiegatoRepartoDivisioneCapo RossiVendite Bruni NeriProduzione Mori BianchiProduzione Mori  Reparto=Divisione (Rel1  Rel2)

9 Theta-Join ed Equi-Join Theta-Join: r1  F r2 =  F (r1  r2) Condizione di selezione F è formula proposizionale come descritto per operatore di selezione Se F è congiunzione di uguaglianze tra attributi di r1 e attributi di r2: theta-join detto equi-join

10 Theta-Join ed Equi-Join Per esempio: Rel1(Impiegato,Reparto), Rel2(Divisione,Capo)  Reparto=Divisione (Rel1  Rel2) Infrazioni(Codice,Data,Ag,Art,Prov,Num), Auto(Provincia,Targa,Prop,Indirizzo)  Prov=Provincia  Num=Targa (Infrazioni  Auto)

11 Theta-Join ed Equi-Join Theta-join e equi-join più utili di join naturale Permettono di operare su relazioni senza attributi in comune Join naturale simulabile mediante ridenominazione, equi-join e proiezione

12 Theta-Join ed Equi-Join Per esempio: R1(A,B,C), R2(B,C,D) R1  R2 =  A,B,C,D (R1  B=B’  C=C’ (  B’,C’  B,C (R2)))

13 Theta-Join ed Equi-Join Per esempio: R1(A,B,C), R2(B,C,D) R1  R2 =  A,B,C,D (R1  B=B’  C=C’ (  B’,C’  B,C (R2))) Join naturale Equi-join

14 Theta-Join ed Equi-Join Per esempio: R1(A,B,C), R2(B,C,D) R1  R2 =  A,B,C,D (R1  B=B’  C=C’ (  B’,C’  B,C (R2))) Si ridenomina R2 affinchè abbia attributi diversi da quelli di R1 Equi-join tra R1 e R2 per selezionare tuple in corrispondenza Proiezione del risultato per eliminare attributi ridondanti

15 Esercitazione Che cos’è Studenti  Lavoratori? MatricolaCognomeNome 123456BruniAndrea 654321NeriDario 456123RealeCarla MatricolaCognomeNome 321654BiancoGiovanni 654321NeriDario 456123RealeCarla Studenti Lavoratori

16 Esercitazione Che cos’è Studenti  Lavoratori? MatricolaCognomeNome 123456BruniAndrea 654321NeriDario 456123RealeCarla MatricolaCognomeNome 321654BiancoGiovanni 654321NeriDario 456123RealeCarla Studenti Lavoratori

17 Esercitazione Che cos’è Studenti - Lavoratori? MatricolaCognomeNome 123456BruniAndrea 654321NeriDario 456123RealeCarla MatricolaCognomeNome 321654BiancoGiovanni 654321NeriDario 456123RealeCarla Studenti Lavoratori

18 Esercitazione Che cos’è  Numero  Matricola (Studenti)? MatricolaCognomeNome 123456BruniAndrea 654321NeriDario 456123RealeCarla Studenti

19 Esercitazione Che cos’è  Voto>25 (Studenti)? CognomeNomeEtàVoto BruniDario2129 NeriDario2329 RealeCarla2022 Studenti

20 Esercitazione Che cos’è  Voto>25  Eta<23 (Studenti)? CognomeNomeEtàVoto BruniDario2129 NeriDario2329 RealeCarla2022 Studenti

21 Esercitazione Che cos’è  Voto>25  Eta<23 (Studenti)? CognomeNomeEtàVoto BruniDario2129 NeriDario2329 RealeCarla2022 Studenti

22 Esercitazione Che cos’è  Cognome,Nome (Studenti)? CognomeNomeEtàVoto BruniDario2129 NeriDario2329 RealeCarla2022 Studenti

23 Esercitazione Che cos’è  Nome,Voto (Studenti)? CognomeNomeEtàVoto BruniDario2129 NeriDario2329 RealeCarla2022 Studenti

24 Esercitazione Che cos’è  Cognome,Nome,Età,Voto (Studenti)? CognomeNomeEtàVoto BruniDario2129 NeriDario2329 RealeCarla2022 Studenti

25 Esercitazione Che cos’è Studenti  Esami (join naturale)? MatricolaCognomeNome 123456BruniDario 654321NeriDario 456123RealeCarla Studenti MatricolaCorsoVoto 123456Psicologia23 123456Informatica29 654321Psicologia29 456123Psicologia22 Esami

26 Esercitazione Che cos’è Studenti  Esami (join naturale)? MatricolaCognomeNome 123456BruniDario 654321NeriDario 456123RealeCarla Studenti NumeroCorsoVoto 123456Psicologia23 123456Informatica29 654321Psicologia29 456123Psicologia22 Esami

27 Esercitazione Che cos’è Studenti  Esami (join naturale)? MatricolaCognomeNome 123456BruniDario 654321NeriDario 456123RealeCarla Studenti MatricolaCorsoVoto 654123Psicologia23 789456Informatica29 901234Psicologia29 876987Psicologia22 Esami

28 Esercitazione Che cos’è Studenti  Lavoratori (join naturale)? MatricolaCognomeNome 123456BruniAndrea 654321NeriDario 456123RealeCarla MatricolaCognomeNome 321654BiancoGiovanni 654321NeriDario 456123RealeCarla Studenti Lavoratori

29 Esercitazione Studenti  Esami è un join completo? MatricolaCognomeNome 123456BruniDario 654321NeriDario 456123RealeCarla Studenti MatricolaCorsoVoto 123456Psicologia23 123456Informatica29 654321Psicologia29 456123Psicologia22 Esami

30 Esercitazione Che cos’è Studenti  LEFT Esami? MatricolaCognomeNome 123456BruniDario 654321NeriDario 456123RealeCarla Studenti MatricolaCorsoVoto 987654Psicologia23 987654Informatica29 654321Psicologia29 456123Psicologia22 Esami

31 Esercitazione Che cos’è Studenti  FULL Esami? MatricolaCognomeNome 123456BruniDario 654321NeriDario 456123RealeCarla Studenti MatricolaCorsoVoto 987654Psicologia23 987654Informatica29 654321Psicologia29 456123Psicologia22 Esami

32 Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di R(Y), produce una relazione su un dato insieme di attributi X Le espressioni di un linguaggio di interrogazione (per esempio, algebra relazionale), permettono di realizzare interrogazioni a un DB E(r): risultato dell’applicazione dell’espressione E al DB r E(r) è una relazione

33 Esempi di Interrogazioni: 1 MatrNomeEtàStip 101Mario Rossi342.000 103Mario Bianchi 231.750 104Luigi Neri383.050 105Nico Bini441.700 210Marco Celli493.000 231Siro Bisi503.000 252Nico Bini443.500 301Sergio Rossi343.500 375Mario Rossi503.250 CapoImpiegato 210101 210103 210104 231105 301210 301231 375252 ImpiegatiSupervisione

34 Esempi di Interrogazioni: 1 Trovare matricola, nome ed età degli impiegati che guadagnano più di 2.000  Matr,Nome,Età (  Stip>2.000 (Impiegati))

35 Esempi di Interrogazioni: 2 Trovare gli impiegati che guadagnano più del loro capo, mostrando matricola, nome e stipendio di ciascuno di essi e del capo 1. Definire relazione R che lega (join) descrizione di impiegati a descrizione di capo Per non confondere gli attributi dell’impiegato e del capo bisogna ridenominare una delle due relazioni

36 Esempi di Interrogazioni: 2 Trovare gli impiegati che guadagnano più del loro capo, mostrando matricola, nome e stipendio di ciascuno di essi e del capo 2. Selezionare le tuple di R tali nelle quali lo stipendio dell’impiegato è superiore a quello del capo

37 Esempi di Interrogazioni: 2 Trovare gli impiegati che guadagnano più del loro capo, mostrando matricola, nome e stipendio di ciascuno di essi e del capo 3. Proiettare risultato su attributo Matr, Nome e Stip di impiegato e sui corrispettivi (ridenominati) di capo

38 Esempi di Interrogazioni: 2 1. Definire relazione R che lega descrizione di impiegati a descrizione di capo a) Definire relazione R1 che descrive gli impiegati di ciascun capo Schema: R1(Matr,Nome,Età,Stip,Capo,Impiegato) R1 = Impiegati  Matr=Impiegato Supervisione

39 Esempi di Interrogazioni: 2 1. b) Definire relazione R che descrive impiegati e capo: per non confondere gli attributi dell’impiegato e del capo ridenominare impiegati R2=  MatrC,NomeC,EtàC,StipC  Matr,Nome,Età,Stip (Impiegati) R = R1  Capo=MatrC R2

40 Esempi di Interrogazioni: 2 1. b) Definire relazione R che descrive impiegati e capo: per non confondere gli attributi dell’impiegato e del capo ridenominare impiegati R2=  MatrC,NomeC,EtàC,StipC  Matr,Nome,Età,Stip (Impiegati) R = R1  Capo=MatrC R2 (Impiegati  Matr=Impiegato Supervisione)  Capo=MatrC  MatrC,NomeC,EtàC,StipC  Matr,Nome,Età,Stip (Impiegati)

41 Esempi di Interrogazioni: 2 2. Selezionare tuple in R in cui lo stipendio dell’impiegato è superiore a quello del capo:  Stip>StipC (R)

42 Esempi di Interrogazioni: 2 2. Selezionare tuple in R in cui lo stipendio dell’impiegato è superiore a quello del capo:  Stip>StipC (R)  Stip>StipC ((Impiegati  Matr=Impiegato Supervisione)  Capo=MatrC  MatrC,NomeC,EtàC,StipC  Matr,Nome,Età,Stip (Impiegati))

43 Esempi di Interrogazioni: 2 3. Proiettare R su attributi richiesti:  Matr,Nome,Stip,MatrC,NomeC,StipC (  Stip>StipC (R))

44 Esempi di Interrogazioni: 2 3. Proiettare R su attributi richiesti:  Matr,Nome,Stip,MatrC,NomeC,StipC (  Stip>StipC (R))  Matr,Nome,Stip,MatrC,NomeC,StipC (  Stip>StipC ((Impiegati  Matr=Impiegato Supervisione)  Capo=MatrC  MatrC,NomeC,EtàC,StipC  Matr,Nome,Età,Stip (Impiegati)))

45 Esempi di Interrogazioni: 2  Matr,Nome,Stip,MatrC,NomeC,StipC (  Stip>StipC ((Impiegati  Matr=Impiegato Supervisione)  Capo=MatrC  MatrC,NomeC,EtàC,StipC  Matr,Nome,Età,Stip (Impiegati))) Trovare gli impiegati che guadagnano più del loro capo, mostrando matricola, nome e stipendio di ciascuno di essi e del capo

46 Esempi di Interrogazioni: 3 Trovare matricola e nome dei capi i cui impiegati guadagnano tutti più di 2.000 1. Tutti gli impiegati? Selezionare capi che hanno impiegati con stipendio < 2.000  Capo (Supervisione  Matr=Impiegato (  Stip<2.000 (Impiegati)))

47 Esempi di Interrogazioni: 3 2. Sottrarre tali capi all’insieme di tutti i capi  Capo (Supervisione) –  Capo (Supervisione  Matr=Impiegato (  Stip<2.000 (Impiegati)))

48 Esempi di Interrogazioni: 3 Trovare matricola e nome dei capi i cui impiegati guadagnano tutti più di 2.000  Matr,Nome (Impiegati  Matr=Impiegato (  Capo (Supervisione) –  Capo (Supervisione  Matr=Impiegato (  Stip<2.000 (Impiegati)))))

49 Algebra con valori nulli Come applicare espressioni di algebra relazionale in presenza di tuple con valori nulli? Per esempio:  Età>30 (Impiegati) Se in relazione Impiegati non si conosce età di alcune persone: tuple 104 e 219 devono essere selezionate? MatrNomeEtàStip 101Mario Rossi342.000 103Mario Bianchi 231.750 104Luigi NeriNULL3.050 105Nico Bini441.700 210Marco CelliNULL3.000

50 Algebra con valori nulli Logica a 3 valori per il trattamento di valori veri, falsi, sconosciuti: T, F, U (unknown) Un predicato assume volore U quando uno dei termini del confronto ha valore nullo Tabelle di verità dei connettivi: AND, OR, NOT ANDTUF TTUF UUUF FFFF ORTUF TTTT UTUU FTUF NOT TF UU FT

51 Algebra con valori nulli Poiché ragionare su valori nulli è complesso, adottiamo approccio semplificato al trattamento del valore nullo nelle espressioni dell’algebra relazionale Definiamo due nuove condizioni atomiche di selezione: dato attributo A A IS NULL: vera su tupla t se il valore di t su A è nullo; falsa se valore specificato A IS NOT NULL: vera su t se valore di t su A specificato, falsa altrimenti

52 Algebra con valori nulli Interpretiamo le condizioni di selezione in modo restrittivo, escludendo da selezione le tuple con valore U, a meno che non sia espicitamente incluso nella selezione

53 Algebra con valori nulli Per esempio:  Età>30 (Impiegati) – le tuple con Età null non vengono selezionate (su di esse la condizione Età>30 assume valore U)  Età>30  Età IS NULL (Impiegati) – si includono anche le tuple con Età sconosciuta (104, 210 in relazione Impiegati)

54 Viste Relazioni derivate definite su relazioni di schema logico Viste materializzate (con tuple memorizzate in DB) Relazioni virtuali, o viste (memorizzate in DB mediante espressioni del linguaggio di interrogazione, senza memorizzazione di tuple)

55 Viste DBMS offrono solo relazioni virtuali (no ridondanza dati) Interrogazioni che utilizzano viste sono risolte sostituendo la definizione delle viste alle loro occorrenze

56 Viste Per esempio: R1(A,B,C), R2(C,D,E), R3(E,G) Vista: R =  A>D (R1  R2) Interrogazione:  B=G (R  R3) risolta così:  B=G (  A>D (R1  R2)  R3)

57 Viste Viste utile per: Permettere ad applicazioni di utilizzare relazioni che contengono solo le informazioni di interesse Se schema di DB viene ristrutturato, ricreare relazioni eliminate per evitare di modificare le applicazioni che le usavano  Per esempio: R(A,B,C) sostituita in DB da R1(A,B), R2(B,C), e definiamo vista R= R1  R2


Scaricare ppt "Algebra relazionale (II). Join esterni Per combinare sempre le tuple di due relazioni, anche quando non ci sono corrispondenze tra i valori degli attributi."

Presentazioni simili


Annunci Google