La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Join Se ciascuna tupla di ciascun operando contribuisce ad almeno una tupla del risultato il join si dice completo. Se per alcune tuple non è verificata.

Presentazioni simili


Presentazione sul tema: "Join Se ciascuna tupla di ciascun operando contribuisce ad almeno una tupla del risultato il join si dice completo. Se per alcune tuple non è verificata."— Transcript della presentazione:

1 Join Se ciascuna tupla di ciascun operando contribuisce ad almeno una tupla del risultato il join si dice completo. Se per alcune tuple non è verificata la corrispondenza e non contribuiscono al risultato, le tuple si dicono dangling.

2 Join Due casi limite: join vuoto, nessuna tupla degli operandi è combinabile ciascuna delle tuple di un operando è combinabile con tutte le tuple dell’altro. In questo caso il risultato è pari al prodotto cartesiano degli operandi. Richiede che esistano attributi comuni che assumono lo stesso valore per ogni tupla di entrambi gli operandi (che, quindi, non contengono informazione significativa) oppure che non vi siano attributi comuni.

3 AMori BBruni RepartoCapo RossiA NeriB BianchiB ImpiegatoReparto RossiAMori NeriBBruni ImpiegatoRepartoCapo BianchiBBruni RossiA NeriB BianchiB RossiA NeriB BianchiB AMori BBruni AMori BBruniB B ogni tupla contribuisce al risultato: il join è completo

4 NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni A C Un join non completo

5 ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo DMori CBruni ImpiegatoRepartoCapo Un join vuoto

6 Join Proprietà Il join di r 1 e r 2 contiene un numero di tuple compreso fra zero e il prodotto di |r 1 | e |r 2 | se il join di r 1 e r 2 è completo allora contiene un numero di tuple pari almeno al massimo fra |r 1 |e |r 2 | se X 1  X 2 contiene una chiave per r 2, allora il join di r 1 (X 1 ) e r 2 (X 2 ) contiene al più |r 1 | tuple.

7 Join Proprietà se il join coinvolge una chiave di r 2 e un vincolo di integrità referenziale, allora il numero di tuple è pari a |r 1 | r 1  r 2 = r 2  r 1 il join è commutativo (r 1  r 2 )  r 3 = r 1  (r 2  r 3 ) il join è associativo Quindi sequenze di join possono essere scritte senza parentesi

8 Join Se si devono correlare attributi con nome diverso (cioè X 1  X 2 è vuoto) è possibile fare il theta-join, definito come un prodotto cartesiano seguito da una selezione r 1  F r 2 =  F (r 1  r 2 ) dove F è la condizione di selezione. Se F è una condizione di uguaglianza fra un attributo della prima relazione e uno della seconda, allora siamo in presenza di un equi-join. Sono importanti formalmente: il join naturale è basato sui nomi degli attributi equi-join e theta-join sono basati sui valori

9 RossiA NeriB BianchiB ImpiegatoReparto Impiegati AMori BBruniB B CodiceCapo Reparti Impiegati JOIN Reparto=Codice Reparti ImpiegatoRepartoCapoCodice RossiAMoriAAA RossiABBruni NeriBMoriA NeriBBBruni BianchiBMoriA BianchiBBBruni RossiAMoriAAA NeriBBBruni BianchiBBBruni

10 SEL Reparto=Codice PROJ Impiegato,Reparto,Capo ( ) Join naturale ed equi-join ImpiegatoReparto Impiegati CodiceCapo Reparti Impiegati JOIN (REN Reparto  Codice (Reparti)) equivale a (Impiegati JOIN Reparti)

11 ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori A C Join incompleto alcune tuple non contribuiscono al risultato: vengono "tagliate fuori” (tuple dangling)

12 Join Join Esterni Il join naturale tralascia le tuple in cui non vi è corrispondenza fra gli attributi legati dal join. Si definiscono allora altri tipi di join, che fanno sì che anche quelle tuple vengano considerate, inserendo valori nulli dove non vi sia corrispondenza.

13 Join Join sinistro (left join) Contribuiscono tutte le tuple del primo operando, eventualmente estese con valori nulli Join destro (right join) Contribuiscono tutte le tuple del secondo operando, eventualmente estese con valori nulli Join completo (full join) Contribuiscono tutte le tuple del primo e del secondo operando, eventualmente estese con valori nulli

14 ImpiegatoReparto RossiA NeriB BianchiB Impiegati RepartoCapo BMori CBruni Reparti NeriBMori ImpiegatoRepartoCapo BianchiBMori Impiegati JOIN LEFT Reparti C RossiA NULL ARossi

15 ImpiegatoReparto RossiA NeriB BianchiB Impiegati RepartoCapo BMori CBruni Reparti NeriBMori ImpiegatoRepartoCapo BianchiBMori Impiegati JOIN RIGHT Reparti A NULL CBruni C

16 ImpiegatoReparto RossiA NeriB BianchiB Impiegati RepartoCapo BMori CBruni Reparti NeriBMori ImpiegatoRepartoCapo BianchiBMori Impiegati JOIN FULL Reparti NULL CBruni C ARossi A NULL

17 Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto NeriB BianchiB RepartoCapo BMori

18 Join e proiezioni: problemi NeriBMori ImpiegatoRepartoCapo BianchiBBruni VerdiABini NeriB ImpiegatoReparto BianchiB VerdiA BMori RepartoCapo BBruni ABini VerdiABini NeriBMori ImpiegatoRepartoCapo BianchiBBruni NeriBBruni BianchiBMori

19 Join e proiezioni R 1 (X 1 ), R 2 (X 2 )  X 1 (R 1  R 2 )  R 1  X 2 (R 1  R 2 )  R 2 R(X), X = X 1  X 2 (  X 1 (R))  (  X 2 (R))  R

20 Interrogazioni (Query) Un’interrogazione è una funzione E(r) che applicata ad istanze r di una base di dati produce una relazione su un dato insieme di attributi X. Le interrogazioni su uno schema di base di dati R in algebra relazionale sono espressioni i cui atomi (le variabili) sono relazioni in R.

21 Esempi Impiegati NomeEtàStipendioMatricola Bianchi37385998 Rossi34457309 Bruni43425698 Neri42359553 Mori45504076 Lupi46608123 Supervisione ImpiegatoCapo 5998 7309 5698 9553 4076 5698 4076 8123

22 Trovare matricola, nome, età e stipendio degli impiegati che guadagnano più di 40 milioni SEL Stipendio>40 (Impiegati) NomeEtàStipendioMatricola Bianchi37385998 Rossi34457309 Bruni43425698 Neri42359553 Mori45504076 Lupi46608123 Bianchi37385998 Neri42359553 Rossi34457309 Bruni43425698 Mori45504076 Lupi46608123 Rossi34457309 Bruni43425698 Mori45504076 Lupi46608123

23 Trovare matricola, nome ed età degli impiegati che guadagnano più di 40 milioni PROJ Matricola, Nome, Età ( SEL Stipendio>40 (Impiegati)) NomeEtàStipendioMatricola Bianchi37385998 Rossi34457309 Bruni43425698 Neri42359553 Mori45504076 Lupi46608123 Bianchi37385998 Neri42359553 Rossi34457309 Bruni43425698 Mori45504076 Lupi46608123 Rossi34457309 Bruni43425698 Mori45504076 Lupi46608123


Scaricare ppt "Join Se ciascuna tupla di ciascun operando contribuisce ad almeno una tupla del risultato il join si dice completo. Se per alcune tuple non è verificata."

Presentazioni simili


Annunci Google