Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema.

Slides:



Advertisements
Presentazioni simili
DB -Algebra Relazionale
Advertisements

Il raffinamento dello schema e la normalizzazione nei database relazionali Eugenio Di Sciascio.
Calcolo Relazionale.
Algebra e calcolo relazionale (parte 2)
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
Algebra relazionale Presentazione 12.1
Interrogazione di una base di dati relazionale Algebra relazionale.
1 Algebra Relazionale Eugenio Di Sciascio. 2 Introduzione Lalgebra relazionale è un linguaggio procedurale: le operazioni vengono specificate descrivendo.
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill,
Laboratorio di Basi di Dati Introduzione ad Access 2ª Parte.
11/10/2001Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3 1 Viste (relazioni derivate) Rappresentazioni diverse per gli stessi dati (schema esterno)schema.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999
DB -Algebra Relazionale
Trovare le matricole dei capi degli impiegati che guadagnano più di 40 milioni PROJCapo (SELStipendio>40 (Supervisione JOIN Impiegato=Matricola Impiegati))
Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.
Duplicati Lalgebra relazionale non ammette duplicati, SQL li ammette. Quindi select Città from Persona where Cognome= Rossi estrae una lista di città in.
Proiezione Dati una relazione r(X) e un sottoinsieme Y di X, la proiezione di r su Y si indica con Y ( r ) o PROJ Y ( r ) ed è linsieme di tuple su Y ottenute.
Modello E-R Generalizzazioni
Relazioni Relazione : concetto mutuato dalla definizione di relazione matematica della teoria degli insiemi, come sottoinsieme del prodotto cartesiano.
Normalizzazione Le forme normali certificano che la base di dati soddisfa criteri di qualità che mirano ad evitare le ridondanze e i conseguenti effetti.
Partizionamento/accorpamento di concetti
Modello E-R Generalizzazioni
Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, Capitolo 3: ALGEBRA E CALCOLO RELAZIONALE 10/10/2002.
Basi di dati Claudia Raibulet
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
Il modello relazionale (II). Informazione incompleta e valori nulli In una tupla di una relazione un attributo può non avere valore Per esempio: Mario.
MODELLO LOGICO DEI DATI
Introduzione a Oracle 9i
Basi di dati - Modelli e linguaggi di interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo Torlone Copyright © The McGraw-Hill.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill,
Informatica Introduzione alle basi di dati Lezione 6 Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
Informatica II – Basi di Dati (07/08) – Parte 2 Gianluca Torta Dipartimento di Informatica dell’Università di Torino
DB- Sistemi Informativi
Il modello relazionale (II). Informazione incompleta e valori nulli In una tupla di una relazione un attributo può non avere valore Per esempio: Mario.
Microsoft Access (parte 5) Introduzione alle basi di dati Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
Informatica II – Basi di Dati (07/08) – Parte 2 Gianluca Torta Dipartimento di Informatica dell’Università di Torino
Microsoft Access Query (II), filtri.
Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema.
S. Costantini 06/05/2006 (parte del materiale è tratto da slide del 2001 di Ceri-Atzeni) Normalizzazione di Schemi.
Esercitazione 7.
Le query in SQL Unità didattica sviluppata per l’ITIS “A. Volta” – Classe 5 sez. I Ing Domenico Liguori - Università degli studi di Napoli “Federico.
Progettazione Logica Il prodotto della progettazione logica è uno schema logico che rappresenta le informazioni contenute nello schema E-R in modo corretto.
ALGEBRA RELAZIONALE. Algebra Relazionale2  Le basi di dati rappresentano le informazioni di interesse per applicazioni che gestiscono i dati  E’ importante.
ALGEBRA E CALCOLO RELAZIONALE
Il Linguaggio SQL. Le interrogazioni in SQL (continua…) La parte di SQL dedicata alla formulazione di interrogazioni fa parte del DML. SQL esprime le.
SQL, esempi 30/10/2014Basi di dati SQL1. 30/10/2014Basi di dati SQL2 CREATE TABLE, esempi CREATE TABLE corsi( codice numeric NOT NULL PRIMARY KEY, titolo.
Il modello relazionale. Modello logico dei dati basato su concetti relazione e tabella Relazione: da teoria degli insiemi Tabella: rappresentazione grafica.
Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema.
1 Il modello relazionale. 2 Introduzione Il modello relazionale, sebbene non sia stato il modello usato nei primi DBMS, e' divenuto lentamente il modello.
Basi di dati e Relazioni Uno schema di relazione R(X) è costituito da un simbolo (nome della relazione) R e da una serie di attributi X={A 1, A 2, …, A.
Query languages per Basi di Dati Relazionali  Algebra Relazionale:  basato sulla teoria degli insiemi  procedurale  usato per l’implementazione di.
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.
Vincoli Interrelazionali Per i vincoli visti l’inserimento di un valore che li viola viene semplicemente impedito. In caso di vincoli di integrità referenziale,
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.
Vincoli interrelazionali
Raggruppamenti e target list scorretta select padre, avg(f.reddito), p.reddito from persone f join paternita on figlio = nome join persone p on padre =
S. Costantini 06/05/2006 (parte del materiale è tratto da slide del 2001 di Ceri-Atzeni) Normalizzazione di Schemi.
Algebra relazionale (II). Join esterni Per combinare sempre le tuple di due relazioni, anche quando non ci sono corrispondenze tra i valori degli attributi.
1 Esami Esame scritto: Tra 21 e 25 domande: 20 domande chiuse (20 punti),  5 domande aperte (10 punti) 1½ ore Esame orale/applicativo: Esercizi usando.
Eprogram informatica V anno.
Funzionalità del DBMS relazionale l Funzioni per –definizione della base di dati –inserimento / rimozione /aggiornamento di informazioni deve soddisfare.
Informatica Introduzione alle basi di dati Lezione 7 Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
L’Algebra Relazionale
NORMALIZZAZIONE ESERCIZI. INTRODUZIONE La modellazione E-R ci ha consentito di descrivere schemi relazionali Lo strumento base per la modellizzazione.
Operazioni Relazionali
Microsoft Access Filtri, query. Filtri Un filtro è una funzione che provoca la visualizzazione dei soli record contenenti dati che rispondono a un certo.
Linguaggio SQL prima parte Linguaggio SQL prima parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright © Istituto Italiano.
Basi di dati - 09Marco Maggini1 Forme normali forme normali  Le forme normali verificano la qualità di uno schema di una base di dati relazionale  Presenza.
Transcript della presentazione:

Algebra relazionale

Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema Modifica, aggiunta, rimozione tuple Interrogazione a DB: funzione che, dato un DB, produce una relazione su un dato schema (non necessariamente uno degli schemi definiti nel DB)

Accesso ai dati di un DB Aggiornamento e interrogazione vengono effettuati usando specifici linguaggi Per esempio: algebra relazionale

Algebra relazionale Linguaggio procedurale di accesso a DB Si specificano operazioni complesse descrivendo procedimento da usare per ottenere soluzione Interrogazioni: espressioni complesse

Algebra relazionale Algebra relazionale: basata su insieme di operatori Definiti su relazioni Producono relazioni come risultati Operatori Insiemistici: unione, intersezione, differenza Specifici: ridenominazione, selezione, proiezione, join

Operatori insiemistici Relazioni: insiemi di tuple omogenee, cioè definite sigli stessi attributi Insiemi: ha senso usare operatori insiemistici Insiemi di tuple omogenee: usare operatori insiemistici solo su relazioni definite sugli stessi attributi Altrimenti, si ottengono insiemi di tuple disomogenee, che non rappresentano relazioni

Unione di relazioni Date due relazioni r1(X) e r2(X) definite sullo stesso insieme di attributi X r1  r2: relazione su X che contiene tuple appartenenti a r1 oppure a r2 oppure a entrambe

Unione di relazioni MatricolaCognomeEtà 9297Neri Neri Verdi38 MatricolaCognomeEtà 7274Rossi Neri Verdi38 MatricolaCognomeEtà 7274Rossi Neri Neri Verdi38 Laureati Dirigenti Laureati  Dirigenti

Differenza di relazioni Date due relazioni r1(X) e r2(X) definite sullo stesso insieme di attributi X r1-r2: relazione su X che contiene tuple appartenenti a r1 ma non a r2

Differenza di relazioni MatricolaCognomeEtà 9297Neri Neri Verdi38 MatricolaCognomeEtà 7274Rossi Neri Verdi38 MatricolaCognomeEtà 7274Rossi37 Laureati Dirigenti Laureati - Dirigenti

Intersezione di relazioni Date due relazioni r1(X) e r2(X) definite sullo stesso insieme di attributi X r1  r2: relazione su X che contiene tuple appartenenti sia a r1 che a r2

Intersezione di relazioni MatricolaCognomeEtà 9297Neri Neri Verdi38 MatricolaCognomeEtà 7274Rossi Neri Verdi38 MatricolaCognomeEtà 7432Neri Verdi38 Laureati Dirigenti Laureati  Dirigenti

Operatori di manipolazione di relazioni Specifici dell’algebra relazionale (non derivano dalle teoria degli insiemi) Permettono di manipolare relazioni per creare nuove relazione Ridenominazione Selezione Proiezione Join

Operatori di manipolazione di relazioni Specifici dell’algebra relazionale (non derivano dalle teoria degli insiemi) Permettono di manipolare relazioni per creare nuove relazione Ridenominazione Selezione Proiezione Join

Ridenominazione di relazioni Cambia il nome di un attributo di relazione lasciandone inalterata l’istanza (modifica solo intestazione di relazione) Utile per applicare operatori insiemistici a relazioni con attributi di nome diverso

Ridenominazione di relazioni Per esempio: PadreFiglio AdamoCaino AdamoAbele AbramoIsacco AbramoIsmaele MadreFiglio EvaCaino EvaSet SaraIsacco AgarIsmaele Paternità Maternità Paternità  Maternità ?

Ridenominazione di relazioni Una ridenominazione: PadreFiglio AdamoCaino AdamoAbele AbramoIsacco AbramoIsmaele GenitoreFiglio AdamoCaino AdamoAbele AbramoIsacco AbramoIsmaele Paternità  Genitore  Padre (Paternità)

Ridenominazione di relazioni Una ridenominazione: PadreFiglio AdamoCaino AdamoAbele AbramoIsacco AbramoIsmaele GenitoreFiglio AdamoCaino AdamoAbele AbramoIsacco AbramoIsmaele Paternità  Genitore  Padre (Paternità)

Ridenominazione di relazioni Una ridenominazione: PadreFiglio AdamoCaino AdamoAbele AbramoIsacco AbramoIsmaele GenitoreFiglio AdamoCaino AdamoAbele AbramoIsacco AbramoIsmaele Paternità  Genitore  Padre (Paternità)

Ridenominazione di relazioni Un’altra ridenominazione: MadreFiglio EvaCaino EvaSet SaraIsacco AgarIsmaele GenitoreFiglio EvaCaino EvaSet SaraIsacco AgarIsmaele Maternità  Genitore  Madre (Maternità)

Ridenominazione di relazioni GenitoreFiglio AdamoCaino AdamoAbele AbramoIsacco AbramoIsmaele EvaCaino EvaSet SaraIsacco AgarIsmaele  Genitore  Padre (Paternità)   Genitore  Madre (Maternità) Corretta applicazione di unione relazioni

Ridenominazione di relazioni CognomeAgenziaStipendio RossiRoma45 NeriMilano53 Imp

Ridenominazione di relazioni CognomeAgenziaStipendio RossiRoma45 NeriMilano53 CognomeFabbricaSalario VerdiLatina33 BruniMonza32 ImpOp

Ridenominazione di relazioni CognomeSedeRetribuzione RossiRoma45 NeriMilano53 VerdiLatina33 BruniMonza32 CognomeAgenziaStipendio RossiRoma45 NeriMilano53 CognomeFabbricaSalario VerdiLatina33 BruniMonza32 ImpOp  Sede,Retribuzione  Agenzia,Stipendio (Imp)   Sede,Retribuzione  Fabbrica,Salario (Op)

Ridenominazione di relazioni Sia r(X) è la schema di una relazione r definita su insieme X={A1,…,Ak} … e sia Y un insieme di attributi Y={B1,…,Bk} La ridenominazione  B1,..,Bk  A1,…,Ak (r) contiene una tupla t’ per ogni tupla t in r, così definita: t’ è una tupla su Y, e t’[Bi]=t[Ai] per 1  i  k

Ridenominazione di relazioni Di solito, si indicano nelle ridenominazione solo attributi ridenominati (quelli per cui Ai  Bi)  Genitore  Padre (Paternità): omesso Figlio

Operatori di manipolazione di relazioni Specifici dell’algebra relazionale (non derivano dalle teoria degli insiemi) Permettono di manipolare relazioni per creare nuove relazione Ridenominazione Selezione Proiezione Join

Selezione Data relazione r su insieme di attributi X, selezione  F (r) produce relazione su attributi X che contiene tuple di r che soddisfano la condizione di selezione F A B C Selezione secondo F  F (r) A B C

Selezione F formula proposizionale: condizione di selezione formata da Operatori booleani:   (AND),   (OR),   (NOT)

Selezione F formula proposizionale: condizione di selezione formata da Operatori booleani Condizione atomiche: termine che possono contenere  Confronti fra attributi (per esempio, Stipendio>Tasse, dove Stipendio e Tasse sono attributi)  Confronti fra attributi e constanti (per esempio, Età  60, dove Età è un attributo)

Selezione CognomeNomeEtàStipendio RossiMario ,00 NeriLuca ,00 VerdiNico ,00 RossiMarco ,00 Impiegati CognomeNomeEtàStipendio VerdiNico ,00  Età>30  Stipendio>2.000,00 (Impiegati)

Selezione CognomeNomeEtàStipendio RossiMario ,00 NeriLuca ,00 VerdiNico ,00 RossiMarco ,00 Impiegati CognomeNomeEtàStipendio VerdiNico ,00  Età>30  Stipendio>2.000,00 (Impiegati)

Operatori di manipolazione di relazioni Specifici dell’algebra relazionale (non derivano dalle teoria degli insiemi) Permettono di manipolare relazioni per creare nuove relazione Ridenominazione Selezione Proiezione Join

Proiezione Data relazione r su insieme di attributi X e un sottoinsieme Y di X, la proiezione  Y (r) è l’insieme di tuple su Y ottenute dalle tuple di r considerando solo i valori su Y  Y (r) = {t[Y] | t  r} A B C Proiezione su Y  Y (r) A B

Proiezione Per esempio: Impiegati(Cognome,Nome,Reparto,Capo)  Cognome,Nome (Impiegati) ha attributi Cognome, Nome Relazioni non devono contenere tuple ripetute Tuple uguali collassano in una sola

Proiezione CognomeNomeRepartoCapo RossiMarioVenditeDe Rossi NeriLucaVenditeDe Rossi VerdiNicoPersonaleBaldi RossiMarcoPersonaleBaldi RepartoCapo VenditeDe Rossi PersonaleBaldi Impiegati  Reparto,Capo (Impiegati)

Tuple di una proiezione Una proiezione  Y (r) contiene al più tante tuple quante r Se Y è una superchiave di r, allora  Y (r) contiene tante tuple quante r Questo può accadere comunque anche se Y non è superchiave (basta che le tuple su Y siano casualmente tutte diverse tra loro)

Operatori di manipolazione di relazioni Specifici dell’algebra relazionale (non derivano dalle teoria degli insiemi) Permettono di manipolare relazioni per creare nuove relazione Ridenominazione Selezione Proiezione Join

Operatore che permette di correlare dati contenuti in relazioni diverse confrontando i valori delle tuple (modello relazionale basato su valori) Join Naturale Theta-Join

Join Naturale Permette di correlare dati contenuti in relazioni diverse confrontando attributi con stesso nome Produce una relazione definita su unione di insiemi di attributi delle due relazioni su cui opera Tuple del risultato: ottenute combinando le tuple dei due operandi con valore uguale su attributi comuni

Join Naturale Date r1(X) e r2(Y), r1  r2 è relazione su X  Y: r1  r2={t su X  Y | t[X]  r1 e t[Y]  r2}

Join Naturale ImpiegatoReparto RossiVendite NeriProduzione BianchiProduzione RepartoCapo ProduzioneMori VenditeDe Rossi Rel1Rel2 Rel1(Impiegato,Reparto)Rel2(Reparto,Capo) X Y

Join Naturale ImpiegatoRepartoCapo RossiVenditeDe Rossi NeriProduzioneMori BianchiProduzioneMori ImpiegatoReparto RossiVendite NeriProduzione BianchiProduzione RepartoCapo ProduzioneMori VenditeDe Rossi Rel1Rel2 Rel1  Rel2

Join Naturale ImpiegatoRepartoCapo RossiVenditeDe Rossi NeriProduzioneMori BianchiProduzioneMori ImpiegatoReparto RossiVendite NeriProduzione BianchiProduzione RepartoCapo ProduzioneMori VenditeDe Rossi Rel1Rel2 Rel1  Rel2

Join Naturale Se relazioni da combinare definite su stesso insieme di attributi, r1(X), r2(X) … r1  r2 = r1  r2 Cioè il join coincide con intersezione: combina tuple con stessi valori di attributi su r1 e r2

Join Naturale RepartoCapo VenditeDe Rossi ProduzioneMori RepartoCapo AcquistiBaldi ProduzioneMori VenditeRossi RepartoCapo ContabilitàTilli ProduzioneMori VenditeDe Rossi Rel1Rel2 Rel1  Rel2

Join Naturale RepartoCapo VenditeDe Rossi ProduzioneMori RepartoCapo AcquistiBaldi ProduzioneMori VenditeRossi RepartoCapo ContabilitàTilli ProduzioneMori VenditeDe Rossi Rel1Rel2 Rel1  Rel2

Join Naturale Se relazioni da combinare definite su insiemi di attributi disgiunti, r1(X), r2(Y) con X  Y=  … condizione di corrispondenza tra tuple è sempre vera … r1  r2=r1xr2 (prodotto cartesiano) Combina tutte le tuple di r1 con tutte quelle di r2

Join Naturale RepartoCapoImpiegatoProgetto AcquistiBaldiMoriP123 AcquistiBaldi P124 ProduzioneMori P123 ProduzioneMoriBianchiP124 RepartoCapo AcquistiBaldi ProduzioneMori ImpiegatoProgetto MoriP123 BaldiR124 Rel1Rel2 Rel1  Rel2

Join Naturale Numero attributi di r1  r2  somma numeri attributi di r1 e r2 Spesso join fatto su chiave di relazione Per esempio: Infrazioni(Codice,Data,Agent,Art,Prov,Numero) Auto(Prov,Numero,Proprietario,Indirizzo) Spesso imposto vincolo di integrità referenziale tra attributi di join (per evitare che r1 faccia riferimento a valori inesistenti in r2)

Join Naturale ProvNumeroProprietarioIndirizzo RM2F7643Verdi Pierov. Tigli RM1A2396Verdi Pierov. Tigli RM4E5432Bini Lucav. Aceri MI2F7643Luci Ginov. Aceri Auto CodiceDataAgenteArtProvNumero /10/ RM4E /10/ RM4E /10/ RM2F /10/ MI2F /10/ MI2F7643 Infrazioni

Join Naturale ProvNumeroProprietarioIndirizzo RM2F7643Verdi Pierov. Tigli RM1A2396Verdi Pierov. Tigli RM4E5432Bini Lucav. Aceri MI2F7643Luci Ginov. Aceri Auto CodiceDataAgenteArtProvNumero /10/ RM4E /10/ RM4E /10/ RM2F /10/ MI2F /10/ MI2F7643 Infrazioni

Join Naturale CodiceDataAgenteArtProvNumeroProprietarioIndirizzo /10/ RM4E5432Bini Lucav. Aceri /10/ RM4E5432Bini Lucav. Aceri /10/ RM2F7643Verdi Pierov. Tigli /10/ MI2F7643Luci Ginov. Aceri /10/ MI2F7643Luci Ginov. Aceri Infrazioni  Auto Tra Infrazioni e Auto esiste vincolo integrità referenziale {Prov,Numero} è chiave di Auto Quindi, ogni tupla di Infrazioni è combinata esattamente con una tupla di Auto

Join completi Date r1(X) e r2(Y), r1  r2 è completo se e solo se, per ogni tupla t1 di r1 esiste tupla t in r1  r2 tale che t[X]=t1 e analogamente per r2

Join completi Cardinalità di un insieme: il numero di elementi che appartengono al insieme Cardinalità di A: scritto |A| Per esempio: |{a,b,d}|=3, |  |=0

Join completi Cardinalità di join: Se r1  r2 è completo: max(|r1|,|r2|)  |r1  r2|  |r1|x|r2|

Join completi ImpiegatoProgettoCapo RossiP124Mori NeriP124Mori BianchiP124Mori RossiP124Bruni NeriP124Bruni BianchiP124Bruni ImpiegatoProgetto RossiP124 NeriP124 BianchiP124 ProgettoCapo P124Mori P124Bruni Rel1Rel2 Rel1  Rel2 Un esempio di join con |r1|x|r2| tuple

Join incompleti Join incompleti hanno tuple senza corrispondenza, dette dangling tuples ImpiegatoReparto RossiVendite NeriProduzione BianchiProduzione RepartoCapo ProduzioneMori AcquistiBruni Rel1Rel2 ImpiegatoRepartoCapo RossiVenditeMori NeriProduzioneMori Rel1  Rel2

Join incompleti Caso limite: se non ci sono tuple combinabili, risultato del join è relazione vuota (senza tuple)

Cardinalità di join Date r1(X) e r2(Y): 0  |r1  r2|  |r1|x|r2| Se r1  r2 completo: |r1  r2|  max(|r1|,|r2|) Ogni tuple di r1 combinata con almeno 1 tupla di r2 e viceversa

Cardinalità di join Se X  Y contiene chiave per r2 |r1  r2|  |r1| Ogni tuple di r1 combinata con al più 1 tupla di r2

Cardinalità di join Se X  Y contiene chiave per r2 e c’è vincolo di integrità referenziale fra X  Y in r1 e la chiave di r2 |r1  r2| = |r1| Ogni tuple di r1 combinata esattamente con 1 tupla di r2

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

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 primo operando Aggiunge tuple di r2 Join esterno completo: estende tuple di entrambi gli operandi Bilaterale

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

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

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

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)

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

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

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)

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

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)))

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

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