Corso di Basi di Dati 4. Algebra relazionale - mat.uniroma1.it · L’algebra relazionale e un...

Post on 18-Feb-2019

216 views 0 download

Transcript of Corso di Basi di Dati 4. Algebra relazionale - mat.uniroma1.it · L’algebra relazionale e un...

Corso diBasi di Dati

4. Algebra relazionale

Guido Pezzini

A.A. 2016–2017

Guido Pezzini Basi di Dati I

Algebra relazionale

L’algebra relazionale e un insieme di operazioni che sieffettuano su una base di dati relazionale.

Lo scopo e quello di interrogare la base di dati, ottenendo unrisultato sotto forma di relazioni, di solito derivate da quelledella base di dati.

Si tratta di un linguaggio procedurale, in cui cioe si arriva alrisultato voluto descrivendo i vari passaggi necessari adottenerlo in termini di operazioni semplici.

Esistono anche altri metodi di interrogazione, ad es. il calcolorelazionale, che e un linguaggio dichiarativo, in cui cioe siarriva al risultato voluto descrivendo le sue proprieta,piuttosto che i passaggi necessari ad ottenerlo.

Guido Pezzini Basi di Dati I

Algebra relazionale

L’algebra relazionale e un insieme di operazioni che sieffettuano su una base di dati relazionale.

Lo scopo e quello di interrogare la base di dati,

ottenendo unrisultato sotto forma di relazioni, di solito derivate da quelledella base di dati.

Si tratta di un linguaggio procedurale, in cui cioe si arriva alrisultato voluto descrivendo i vari passaggi necessari adottenerlo in termini di operazioni semplici.

Esistono anche altri metodi di interrogazione, ad es. il calcolorelazionale, che e un linguaggio dichiarativo, in cui cioe siarriva al risultato voluto descrivendo le sue proprieta,piuttosto che i passaggi necessari ad ottenerlo.

Guido Pezzini Basi di Dati I

Algebra relazionale

L’algebra relazionale e un insieme di operazioni che sieffettuano su una base di dati relazionale.

Lo scopo e quello di interrogare la base di dati, ottenendo unrisultato sotto forma di relazioni, di solito derivate da quelledella base di dati.

Si tratta di un linguaggio procedurale, in cui cioe si arriva alrisultato voluto descrivendo i vari passaggi necessari adottenerlo in termini di operazioni semplici.

Esistono anche altri metodi di interrogazione, ad es. il calcolorelazionale, che e un linguaggio dichiarativo, in cui cioe siarriva al risultato voluto descrivendo le sue proprieta,piuttosto che i passaggi necessari ad ottenerlo.

Guido Pezzini Basi di Dati I

Algebra relazionale

L’algebra relazionale e un insieme di operazioni che sieffettuano su una base di dati relazionale.

Lo scopo e quello di interrogare la base di dati, ottenendo unrisultato sotto forma di relazioni, di solito derivate da quelledella base di dati.

Si tratta di un linguaggio procedurale,

in cui cioe si arriva alrisultato voluto descrivendo i vari passaggi necessari adottenerlo in termini di operazioni semplici.

Esistono anche altri metodi di interrogazione, ad es. il calcolorelazionale, che e un linguaggio dichiarativo, in cui cioe siarriva al risultato voluto descrivendo le sue proprieta,piuttosto che i passaggi necessari ad ottenerlo.

Guido Pezzini Basi di Dati I

Algebra relazionale

L’algebra relazionale e un insieme di operazioni che sieffettuano su una base di dati relazionale.

Lo scopo e quello di interrogare la base di dati, ottenendo unrisultato sotto forma di relazioni, di solito derivate da quelledella base di dati.

Si tratta di un linguaggio procedurale, in cui cioe si arriva alrisultato voluto descrivendo i vari passaggi necessari adottenerlo in termini di operazioni semplici.

Esistono anche altri metodi di interrogazione, ad es. il calcolorelazionale, che e un linguaggio dichiarativo, in cui cioe siarriva al risultato voluto descrivendo le sue proprieta,piuttosto che i passaggi necessari ad ottenerlo.

Guido Pezzini Basi di Dati I

Algebra relazionale

L’algebra relazionale e un insieme di operazioni che sieffettuano su una base di dati relazionale.

Lo scopo e quello di interrogare la base di dati, ottenendo unrisultato sotto forma di relazioni, di solito derivate da quelledella base di dati.

Si tratta di un linguaggio procedurale, in cui cioe si arriva alrisultato voluto descrivendo i vari passaggi necessari adottenerlo in termini di operazioni semplici.

Esistono anche altri metodi di interrogazione, ad es. il calcolorelazionale,

che e un linguaggio dichiarativo, in cui cioe siarriva al risultato voluto descrivendo le sue proprieta,piuttosto che i passaggi necessari ad ottenerlo.

Guido Pezzini Basi di Dati I

Algebra relazionale

L’algebra relazionale e un insieme di operazioni che sieffettuano su una base di dati relazionale.

Lo scopo e quello di interrogare la base di dati, ottenendo unrisultato sotto forma di relazioni, di solito derivate da quelledella base di dati.

Si tratta di un linguaggio procedurale, in cui cioe si arriva alrisultato voluto descrivendo i vari passaggi necessari adottenerlo in termini di operazioni semplici.

Esistono anche altri metodi di interrogazione, ad es. il calcolorelazionale, che e un linguaggio dichiarativo, in cui cioe siarriva al risultato voluto descrivendo le sue proprieta,piuttosto che i passaggi necessari ad ottenerlo.

Guido Pezzini Basi di Dati I

Algebra relazionale

Le operazioni che vedremo sono:

1 operazioni insiemistiche tradizionali: unione, intersezione,differenza (si possono applicare alle relazioni, con qualcherestrizione);

2 ridenominazione, proiezione, selezione;

3 join (in varie forme).

Guido Pezzini Basi di Dati I

Algebra relazionale

Le operazioni che vedremo sono:

1 operazioni insiemistiche tradizionali: unione, intersezione,differenza (si possono applicare alle relazioni, con qualcherestrizione);

2 ridenominazione, proiezione, selezione;

3 join (in varie forme).

Guido Pezzini Basi di Dati I

Algebra relazionale

Le operazioni che vedremo sono:

1 operazioni insiemistiche tradizionali: unione, intersezione,differenza (si possono applicare alle relazioni, con qualcherestrizione);

2 ridenominazione, proiezione, selezione;

3 join (in varie forme).

Guido Pezzini Basi di Dati I

Unione, intersezione, differenza

Considerando una relazione come un sottoinsieme

R ⊆ C1 × . . .× Cn

del prodotto cartesiano delle colonne C1, . . . ,Cn, l’unione di duerelazioni e definita naturalmente, cosı come l’intersezione e ladifferenza.

Guido Pezzini Basi di Dati I

Unione, intersezione, differenza

Piu concretamente, consideriamo due relazioni R1,R2.Supponiamo abbiano lo stesso schema.

Esempio:Laureati Dirigenti

Cognome Eta Residenza

Rossi 34 RomaBianchi 37 Roma

Cognome Eta Residenza

Verdi 35 MilanoBianchi 37 Roma

Possiamo definirne l’unione, mettendo insieme le righe di entrambe:Laureati ∪ Dirigenti

Cognome Eta Residenza

Rossi 34 RomaBianchi 37 RomaVerdi 35 Milano

(il DBMS provvede automaticamente adeliminare le eventuali ripetizioni!)

Guido Pezzini Basi di Dati I

Unione, intersezione, differenza

Piu concretamente, consideriamo due relazioni R1,R2.Supponiamo abbiano lo stesso schema.Esempio:Laureati Dirigenti

Cognome Eta Residenza

Rossi 34 RomaBianchi 37 Roma

Cognome Eta Residenza

Verdi 35 MilanoBianchi 37 Roma

Possiamo definirne l’unione, mettendo insieme le righe di entrambe:Laureati ∪ Dirigenti

Cognome Eta Residenza

Rossi 34 RomaBianchi 37 RomaVerdi 35 Milano

(il DBMS provvede automaticamente adeliminare le eventuali ripetizioni!)

Guido Pezzini Basi di Dati I

Unione, intersezione, differenza

Piu concretamente, consideriamo due relazioni R1,R2.Supponiamo abbiano lo stesso schema.Esempio:Laureati Dirigenti

Cognome Eta Residenza

Rossi 34 RomaBianchi 37 Roma

Cognome Eta Residenza

Verdi 35 MilanoBianchi 37 Roma

Possiamo definirne l’unione, mettendo insieme le righe di entrambe:

Laureati ∪ Dirigenti

Cognome Eta Residenza

Rossi 34 RomaBianchi 37 RomaVerdi 35 Milano

(il DBMS provvede automaticamente adeliminare le eventuali ripetizioni!)

Guido Pezzini Basi di Dati I

Unione, intersezione, differenza

Piu concretamente, consideriamo due relazioni R1,R2.Supponiamo abbiano lo stesso schema.Esempio:Laureati Dirigenti

Cognome Eta Residenza

Rossi 34 RomaBianchi 37 Roma

Cognome Eta Residenza

Verdi 35 MilanoBianchi 37 Roma

Possiamo definirne l’unione, mettendo insieme le righe di entrambe:Laureati ∪ Dirigenti

Cognome Eta Residenza

Rossi 34 RomaBianchi 37 RomaVerdi 35 Milano

(il DBMS provvede automaticamente adeliminare le eventuali ripetizioni!)

Guido Pezzini Basi di Dati I

Unione, intersezione, differenza

Piu concretamente, consideriamo due relazioni R1,R2.Supponiamo abbiano lo stesso schema.Esempio:Laureati Dirigenti

Cognome Eta Residenza

Rossi 34 RomaBianchi 37 Roma

Cognome Eta Residenza

Verdi 35 MilanoBianchi 37 Roma

Possiamo definirne l’unione, mettendo insieme le righe di entrambe:Laureati ∪ Dirigenti

Cognome Eta Residenza

Rossi 34 RomaBianchi 37 RomaVerdi 35 Milano

(il DBMS provvede automaticamente adeliminare le eventuali ripetizioni!)

Guido Pezzini Basi di Dati I

Unione, intersezione, differenza

Piu concretamente, consideriamo due relazioni R1,R2.Supponiamo abbiano lo stesso schema.Esempio:Laureati Dirigenti

Cognome Eta Residenza

Rossi 34 RomaBianchi 37 Roma

Cognome Eta Residenza

Verdi 35 MilanoBianchi 37 Roma

Possiamo definirne l’unione, mettendo insieme le righe di entrambe:Laureati ∪ Dirigenti

Cognome Eta Residenza

Rossi 34 RomaBianchi 37 RomaVerdi 35 Milano

(il DBMS provvede automaticamente adeliminare le eventuali ripetizioni!)

Guido Pezzini Basi di Dati I

Unione, intersezione, differenza

Allo stesso modo possiamo definire l’intersezione:

Esempio:Laureati Dirigenti

Cognome Eta Residenza

Rossi 34 RomaBianchi 37 Roma

Cognome Eta Residenza

Verdi 35 MilanoBianchi 37 Roma

Laureati ∩ Dirigenti

Cognome Eta Residenza

Bianchi 37 Roma

(qui non c’e rischio di ripetizioni)

Guido Pezzini Basi di Dati I

Unione, intersezione, differenza

Allo stesso modo possiamo definire l’intersezione:Esempio:Laureati Dirigenti

Cognome Eta Residenza

Rossi 34 RomaBianchi 37 Roma

Cognome Eta Residenza

Verdi 35 MilanoBianchi 37 Roma

Laureati ∩ Dirigenti

Cognome Eta Residenza

Bianchi 37 Roma

(qui non c’e rischio di ripetizioni)

Guido Pezzini Basi di Dati I

Unione, intersezione, differenza

Allo stesso modo possiamo definire l’intersezione:Esempio:Laureati Dirigenti

Cognome Eta Residenza

Rossi 34 RomaBianchi 37 Roma

Cognome Eta Residenza

Verdi 35 MilanoBianchi 37 Roma

Laureati ∩ Dirigenti

Cognome Eta Residenza

Bianchi 37 Roma

(qui non c’e rischio di ripetizioni)

Guido Pezzini Basi di Dati I

Unione, intersezione, differenza

Allo stesso modo possiamo definire l’intersezione:Esempio:Laureati Dirigenti

Cognome Eta Residenza

Rossi 34 RomaBianchi 37 Roma

Cognome Eta Residenza

Verdi 35 MilanoBianchi 37 Roma

Laureati ∩ DirigentiCognome Eta Residenza

Bianchi 37 Roma

(qui non c’e rischio di ripetizioni)

Guido Pezzini Basi di Dati I

Unione, intersezione, differenza

Allo stesso modo possiamo definire l’intersezione:Esempio:Laureati Dirigenti

Cognome Eta Residenza

Rossi 34 RomaBianchi 37 Roma

Cognome Eta Residenza

Verdi 35 MilanoBianchi 37 Roma

Laureati ∩ DirigentiCognome Eta Residenza

Bianchi 37 Roma

(qui non c’e rischio di ripetizioni)

Guido Pezzini Basi di Dati I

Unione, intersezione, differenza

E la differenza:

Esempio:Laureati Dirigenti

Cognome Eta Residenza

Rossi 34 RomaBianchi 37 Roma

Cognome Eta Residenza

Verdi 35 MilanoBianchi 37 Roma

Laureati r Dirigenti

Cognome Eta Residenza

Rossi 34 Roma

(anche qui non c’e rischio di ripetizioni) (ma qui l’ordine conta!)

Dirigenti r Laureati

Cognome Eta Residenza

Verdi 35 Milano

Guido Pezzini Basi di Dati I

Unione, intersezione, differenza

E la differenza:Esempio:Laureati Dirigenti

Cognome Eta Residenza

Rossi 34 RomaBianchi 37 Roma

Cognome Eta Residenza

Verdi 35 MilanoBianchi 37 Roma

Laureati r Dirigenti

Cognome Eta Residenza

Rossi 34 Roma

(anche qui non c’e rischio di ripetizioni) (ma qui l’ordine conta!)

Dirigenti r Laureati

Cognome Eta Residenza

Verdi 35 Milano

Guido Pezzini Basi di Dati I

Unione, intersezione, differenza

E la differenza:Esempio:Laureati Dirigenti

Cognome Eta Residenza

Rossi 34 RomaBianchi 37 Roma

Cognome Eta Residenza

Verdi 35 MilanoBianchi 37 Roma

Laureati r Dirigenti

Cognome Eta Residenza

Rossi 34 Roma

(anche qui non c’e rischio di ripetizioni) (ma qui l’ordine conta!)

Dirigenti r Laureati

Cognome Eta Residenza

Verdi 35 Milano

Guido Pezzini Basi di Dati I

Unione, intersezione, differenza

E la differenza:Esempio:Laureati Dirigenti

Cognome Eta Residenza

Rossi 34 RomaBianchi 37 Roma

Cognome Eta Residenza

Verdi 35 MilanoBianchi 37 Roma

Laureati r DirigentiCognome Eta Residenza

Rossi 34 Roma

(anche qui non c’e rischio di ripetizioni) (ma qui l’ordine conta!)

Dirigenti r Laureati

Cognome Eta Residenza

Verdi 35 Milano

Guido Pezzini Basi di Dati I

Unione, intersezione, differenza

E la differenza:Esempio:Laureati Dirigenti

Cognome Eta Residenza

Rossi 34 RomaBianchi 37 Roma

Cognome Eta Residenza

Verdi 35 MilanoBianchi 37 Roma

Laureati r DirigentiCognome Eta Residenza

Rossi 34 Roma

(anche qui non c’e rischio di ripetizioni)

(ma qui l’ordine conta!)

Dirigenti r Laureati

Cognome Eta Residenza

Verdi 35 Milano

Guido Pezzini Basi di Dati I

Unione, intersezione, differenza

E la differenza:Esempio:Laureati Dirigenti

Cognome Eta Residenza

Rossi 34 RomaBianchi 37 Roma

Cognome Eta Residenza

Verdi 35 MilanoBianchi 37 Roma

Laureati r DirigentiCognome Eta Residenza

Rossi 34 Roma

(anche qui non c’e rischio di ripetizioni) (ma qui l’ordine conta!)

Dirigenti r Laureati

Cognome Eta Residenza

Verdi 35 Milano

Guido Pezzini Basi di Dati I

Unione, intersezione, differenza

E la differenza:Esempio:Laureati Dirigenti

Cognome Eta Residenza

Rossi 34 RomaBianchi 37 Roma

Cognome Eta Residenza

Verdi 35 MilanoBianchi 37 Roma

Laureati r DirigentiCognome Eta Residenza

Rossi 34 Roma

(anche qui non c’e rischio di ripetizioni) (ma qui l’ordine conta!)

Dirigenti r Laureati

Cognome Eta Residenza

Verdi 35 Milano

Guido Pezzini Basi di Dati I

Unione, intersezione, differenza

E la differenza:Esempio:Laureati Dirigenti

Cognome Eta Residenza

Rossi 34 RomaBianchi 37 Roma

Cognome Eta Residenza

Verdi 35 MilanoBianchi 37 Roma

Laureati r DirigentiCognome Eta Residenza

Rossi 34 Roma

(anche qui non c’e rischio di ripetizioni) (ma qui l’ordine conta!)

Dirigenti r LaureatiCognome Eta Residenza

Verdi 35 Milano

Guido Pezzini Basi di Dati I

Unione, intersezione, differenza

Ripetiamo: Per queste operazioni e necessario che le relazioni sianosullo stesso schema.

Se questo non e verificato, possiamo voler definire operazioni simili,ma dovremmo essere piu precisi nello specificare cosa vogliamo.Ad esempio, che colonne dovrebbe avere l’unione di due relazioniche hanno attributi diversi?

Selezioniamo solo le colonne comuni?

oppure

Mettiamo anche le colonne che figurano in una sola dellerelazioni?

Vedremo che tali operazioni (piu complesse) sono possibili, ma nonsi chiamano unione, intersezione, differenza (vedi: join).

Guido Pezzini Basi di Dati I

Unione, intersezione, differenza

Ripetiamo: Per queste operazioni e necessario che le relazioni sianosullo stesso schema.Se questo non e verificato, possiamo voler definire operazioni simili,ma dovremmo essere piu precisi nello specificare cosa vogliamo.

Ad esempio, che colonne dovrebbe avere l’unione di due relazioniche hanno attributi diversi?

Selezioniamo solo le colonne comuni?

oppure

Mettiamo anche le colonne che figurano in una sola dellerelazioni?

Vedremo che tali operazioni (piu complesse) sono possibili, ma nonsi chiamano unione, intersezione, differenza (vedi: join).

Guido Pezzini Basi di Dati I

Unione, intersezione, differenza

Ripetiamo: Per queste operazioni e necessario che le relazioni sianosullo stesso schema.Se questo non e verificato, possiamo voler definire operazioni simili,ma dovremmo essere piu precisi nello specificare cosa vogliamo.Ad esempio, che colonne dovrebbe avere l’unione di due relazioniche hanno attributi diversi?

Selezioniamo solo le colonne comuni?

oppure

Mettiamo anche le colonne che figurano in una sola dellerelazioni?

Vedremo che tali operazioni (piu complesse) sono possibili, ma nonsi chiamano unione, intersezione, differenza (vedi: join).

Guido Pezzini Basi di Dati I

Unione, intersezione, differenza

Ripetiamo: Per queste operazioni e necessario che le relazioni sianosullo stesso schema.Se questo non e verificato, possiamo voler definire operazioni simili,ma dovremmo essere piu precisi nello specificare cosa vogliamo.Ad esempio, che colonne dovrebbe avere l’unione di due relazioniche hanno attributi diversi?

Selezioniamo solo le colonne comuni?

oppure

Mettiamo anche le colonne che figurano in una sola dellerelazioni?

Vedremo che tali operazioni (piu complesse) sono possibili, ma nonsi chiamano unione, intersezione, differenza (vedi: join).

Guido Pezzini Basi di Dati I

Unione, intersezione, differenza

Ripetiamo: Per queste operazioni e necessario che le relazioni sianosullo stesso schema.Se questo non e verificato, possiamo voler definire operazioni simili,ma dovremmo essere piu precisi nello specificare cosa vogliamo.Ad esempio, che colonne dovrebbe avere l’unione di due relazioniche hanno attributi diversi?

Selezioniamo solo le colonne comuni? oppure

Mettiamo anche le colonne che figurano in una sola dellerelazioni?

Vedremo che tali operazioni (piu complesse) sono possibili, ma nonsi chiamano unione, intersezione, differenza (vedi: join).

Guido Pezzini Basi di Dati I

Unione, intersezione, differenza

Ripetiamo: Per queste operazioni e necessario che le relazioni sianosullo stesso schema.Se questo non e verificato, possiamo voler definire operazioni simili,ma dovremmo essere piu precisi nello specificare cosa vogliamo.Ad esempio, che colonne dovrebbe avere l’unione di due relazioniche hanno attributi diversi?

Selezioniamo solo le colonne comuni? oppure

Mettiamo anche le colonne che figurano in una sola dellerelazioni?

Vedremo che tali operazioni (piu complesse) sono possibili,

ma nonsi chiamano unione, intersezione, differenza (vedi: join).

Guido Pezzini Basi di Dati I

Unione, intersezione, differenza

Ripetiamo: Per queste operazioni e necessario che le relazioni sianosullo stesso schema.Se questo non e verificato, possiamo voler definire operazioni simili,ma dovremmo essere piu precisi nello specificare cosa vogliamo.Ad esempio, che colonne dovrebbe avere l’unione di due relazioniche hanno attributi diversi?

Selezioniamo solo le colonne comuni? oppure

Mettiamo anche le colonne che figurano in una sola dellerelazioni?

Vedremo che tali operazioni (piu complesse) sono possibili, ma nonsi chiamano unione, intersezione, differenza (vedi: join).

Guido Pezzini Basi di Dati I

Ridenominazione

La ridenominazione e usata per cambiare gli attributi (cioe i nomidelle colonne) in una relazione.

La rappresentiamo come un operatore, con il simbolo ρ, e lanotazione e la seguente:

ρNuovo nome←Vecchio nome(Relazione).

Esempio:Paternita

ρGenitore←Padre(Paternita)

Padre Figlio

Adamo CainoAdamo AbeleAbramo IsaccoAbramo Ismaele

Genitore Figlio

Adamo CainoAdamo AbeleAbramo IsaccoAbramo Ismaele

Attenzione: i dati della tabella non cambiano!

Guido Pezzini Basi di Dati I

Ridenominazione

La ridenominazione e usata per cambiare gli attributi (cioe i nomidelle colonne) in una relazione.La rappresentiamo come un operatore, con il simbolo ρ, e lanotazione e la seguente:

ρNuovo nome←Vecchio nome(Relazione).

Esempio:Paternita

ρGenitore←Padre(Paternita)

Padre Figlio

Adamo CainoAdamo AbeleAbramo IsaccoAbramo Ismaele

Genitore Figlio

Adamo CainoAdamo AbeleAbramo IsaccoAbramo Ismaele

Attenzione: i dati della tabella non cambiano!

Guido Pezzini Basi di Dati I

Ridenominazione

La ridenominazione e usata per cambiare gli attributi (cioe i nomidelle colonne) in una relazione.La rappresentiamo come un operatore, con il simbolo ρ, e lanotazione e la seguente:

ρNuovo nome←Vecchio nome(Relazione).

Esempio:Paternita

ρGenitore←Padre(Paternita)

Padre Figlio

Adamo CainoAdamo AbeleAbramo IsaccoAbramo Ismaele

Genitore Figlio

Adamo CainoAdamo AbeleAbramo IsaccoAbramo Ismaele

Attenzione: i dati della tabella non cambiano!

Guido Pezzini Basi di Dati I

Ridenominazione

La ridenominazione e usata per cambiare gli attributi (cioe i nomidelle colonne) in una relazione.La rappresentiamo come un operatore, con il simbolo ρ, e lanotazione e la seguente:

ρNuovo nome←Vecchio nome(Relazione).

Esempio:Paternita ρGenitore←Padre(Paternita)

Padre Figlio

Adamo CainoAdamo AbeleAbramo IsaccoAbramo Ismaele

Genitore Figlio

Adamo CainoAdamo AbeleAbramo IsaccoAbramo Ismaele

Attenzione: i dati della tabella non cambiano!

Guido Pezzini Basi di Dati I

Ridenominazione

La ridenominazione e usata per cambiare gli attributi (cioe i nomidelle colonne) in una relazione.La rappresentiamo come un operatore, con il simbolo ρ, e lanotazione e la seguente:

ρNuovo nome←Vecchio nome(Relazione).

Esempio:Paternita ρGenitore←Padre(Paternita)

Padre Figlio

Adamo CainoAdamo AbeleAbramo IsaccoAbramo Ismaele

Genitore Figlio

Adamo CainoAdamo AbeleAbramo IsaccoAbramo Ismaele

Attenzione: i dati della tabella non cambiano!

Guido Pezzini Basi di Dati I

Ridenominazione

La ridenominazione e usata per cambiare gli attributi (cioe i nomidelle colonne) in una relazione.La rappresentiamo come un operatore, con il simbolo ρ, e lanotazione e la seguente:

ρNuovo nome←Vecchio nome(Relazione).

Esempio:Paternita ρGenitore←Padre(Paternita)

Padre Figlio

Adamo CainoAdamo AbeleAbramo IsaccoAbramo Ismaele

Genitore Figlio

Adamo CainoAdamo AbeleAbramo IsaccoAbramo Ismaele

Attenzione: i dati della tabella non cambiano!

Guido Pezzini Basi di Dati I

Ridenominazione

Cambiare nome a delle colonne piu volte, una dopo l’altra, si indicanaturalmente concatenando gli operatori:

Esempio:Paternita

Padre Figlio

Adamo CainoAdamo AbeleAbramo IsaccoAbramo Ismaele

Guido Pezzini Basi di Dati I

Ridenominazione

Cambiare nome a delle colonne piu volte, una dopo l’altra, si indicanaturalmente concatenando gli operatori:

Esempio:Paternita

Padre Figlio

Adamo CainoAdamo AbeleAbramo IsaccoAbramo Ismaele

Guido Pezzini Basi di Dati I

Ridenominazione

Cambiare nome a delle colonne piu volte, una dopo l’altra, si indicanaturalmente concatenando gli operatori:

Esempio:ρGenitore←Padre(Paternita)

Genitore Figlio

Adamo CainoAdamo AbeleAbramo IsaccoAbramo Ismaele

Guido Pezzini Basi di Dati I

Ridenominazione

Cambiare nome a delle colonne piu volte, una dopo l’altra, si indicanaturalmente concatenando gli operatori:

Esempio:ρParente←Genitore(ρGenitore←Padre(Paternita))

Parente Figlio

Adamo CainoAdamo AbeleAbramo IsaccoAbramo Ismaele

Guido Pezzini Basi di Dati I

Ridenominazione e operatori insiemistici

La ridenominazione e utile quando si vogliono applicare glioperatori insiemistici (unione, intersezione, differenza) a tabellecon attributi diversi.

Esempio: sarebbe naturale voler unire le tabellePaternita Maternita

Padre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

Pero non si puo unirle immediatamente, cioe

Paternita ∪ Maternita

non e permesso, perche le tabelle non hanno gli stessi attributi.

Guido Pezzini Basi di Dati I

Ridenominazione e operatori insiemistici

La ridenominazione e utile quando si vogliono applicare glioperatori insiemistici (unione, intersezione, differenza) a tabellecon attributi diversi.

Esempio: sarebbe naturale voler unire le tabellePaternita Maternita

Padre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

Pero non si puo unirle immediatamente, cioe

Paternita ∪ Maternita

non e permesso, perche le tabelle non hanno gli stessi attributi.

Guido Pezzini Basi di Dati I

Ridenominazione e operatori insiemistici

La ridenominazione e utile quando si vogliono applicare glioperatori insiemistici (unione, intersezione, differenza) a tabellecon attributi diversi.

Esempio: sarebbe naturale voler unire le tabellePaternita Maternita

Padre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

Pero non si puo unirle immediatamente,

cioe

Paternita ∪ Maternita

non e permesso, perche le tabelle non hanno gli stessi attributi.

Guido Pezzini Basi di Dati I

Ridenominazione e operatori insiemistici

La ridenominazione e utile quando si vogliono applicare glioperatori insiemistici (unione, intersezione, differenza) a tabellecon attributi diversi.

Esempio: sarebbe naturale voler unire le tabellePaternita Maternita

Padre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

Pero non si puo unirle immediatamente, cioe

Paternita ∪ Maternita

non e permesso, perche le tabelle non hanno gli stessi attributi.

Guido Pezzini Basi di Dati I

Ridenominazione e operatori insiemistici

Ma gli attributi “Padre” e “Madre” possono essere raggruppatiinsieme come “Genitore”.

Allora prima va usata la ridenominazione:

Paternita MaternitaPadre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

ρGenitore←Padre(Paternita) ρGenitore←Madre(Maternita)Genitore Figlio

Adamo CainoAdamo Abele

Genitore Figlio

Eva CainoEva Set

Guido Pezzini Basi di Dati I

Ridenominazione e operatori insiemistici

Ma gli attributi “Padre” e “Madre” possono essere raggruppatiinsieme come “Genitore”.

Allora prima va usata la ridenominazione:

Paternita MaternitaPadre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

ρGenitore←Padre(Paternita) ρGenitore←Madre(Maternita)Genitore Figlio

Adamo CainoAdamo Abele

Genitore Figlio

Eva CainoEva Set

Guido Pezzini Basi di Dati I

Ridenominazione e operatori insiemistici

Ma gli attributi “Padre” e “Madre” possono essere raggruppatiinsieme come “Genitore”.

Allora prima va usata la ridenominazione:

Paternita MaternitaPadre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

ρGenitore←Padre(Paternita)

ρGenitore←Madre(Maternita)Genitore Figlio

Adamo CainoAdamo Abele

Genitore Figlio

Eva CainoEva Set

Guido Pezzini Basi di Dati I

Ridenominazione e operatori insiemistici

Ma gli attributi “Padre” e “Madre” possono essere raggruppatiinsieme come “Genitore”.

Allora prima va usata la ridenominazione:

Paternita MaternitaPadre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

ρGenitore←Padre(Paternita)

ρGenitore←Madre(Maternita)

Genitore Figlio

Adamo CainoAdamo Abele

Genitore Figlio

Eva CainoEva Set

Guido Pezzini Basi di Dati I

Ridenominazione e operatori insiemistici

Ma gli attributi “Padre” e “Madre” possono essere raggruppatiinsieme come “Genitore”.

Allora prima va usata la ridenominazione:

Paternita MaternitaPadre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

ρGenitore←Padre(Paternita) ρGenitore←Madre(Maternita)Genitore Figlio

Adamo CainoAdamo Abele

Genitore Figlio

Eva CainoEva Set

Guido Pezzini Basi di Dati I

Ridenominazione e operatori insiemistici

Ma gli attributi “Padre” e “Madre” possono essere raggruppatiinsieme come “Genitore”.

Allora prima va usata la ridenominazione:

Paternita MaternitaPadre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

ρGenitore←Padre(Paternita) ρGenitore←Madre(Maternita)Genitore Figlio

Adamo CainoAdamo Abele

Genitore Figlio

Eva CainoEva Set

Guido Pezzini Basi di Dati I

Ridenominazione e operatori insiemistici

e poi si puo usare l’unione:

ρGenitore←Padre(Paternita) ρGenitore←Madre(Maternita)Genitore Figlio

Adamo CainoAdamo Abele

Genitore Figlio

Eva CainoEva Set

ρGenitore←Padre(Paternita) ∪ ρGenitore←Madre(Maternita)

Genitore Figlio

Adamo CainoAdamo Abele

Eva CainoEva Set

Osservazione: il nome stesso della nuova tabella contiene la tracciadi tutte le operazioni usate per ottenerla. Possiamo darle anche unnuovo nome:Genitorialita =ρGenitore←Padre(Paternita) ∪ ρGenitore←Madre(Maternita)

Guido Pezzini Basi di Dati I

Ridenominazione e operatori insiemistici

e poi si puo usare l’unione:

ρGenitore←Padre(Paternita) ρGenitore←Madre(Maternita)Genitore Figlio

Adamo CainoAdamo Abele

Genitore Figlio

Eva CainoEva Set

ρGenitore←Padre(Paternita) ∪ ρGenitore←Madre(Maternita)

Genitore Figlio

Adamo CainoAdamo Abele

Eva CainoEva Set

Osservazione: il nome stesso della nuova tabella contiene la tracciadi tutte le operazioni usate per ottenerla. Possiamo darle anche unnuovo nome:Genitorialita =ρGenitore←Padre(Paternita) ∪ ρGenitore←Madre(Maternita)

Guido Pezzini Basi di Dati I

Ridenominazione e operatori insiemistici

e poi si puo usare l’unione:

ρGenitore←Padre(Paternita) ρGenitore←Madre(Maternita)Genitore Figlio

Adamo CainoAdamo Abele

Genitore Figlio

Eva CainoEva Set

ρGenitore←Padre(Paternita) ∪ ρGenitore←Madre(Maternita)

Genitore Figlio

Adamo CainoAdamo Abele

Eva CainoEva Set

Osservazione: il nome stesso della nuova tabella contiene la tracciadi tutte le operazioni usate per ottenerla. Possiamo darle anche unnuovo nome:Genitorialita =ρGenitore←Padre(Paternita) ∪ ρGenitore←Madre(Maternita)

Guido Pezzini Basi di Dati I

Ridenominazione e operatori insiemistici

e poi si puo usare l’unione:

ρGenitore←Padre(Paternita) ρGenitore←Madre(Maternita)Genitore Figlio

Adamo CainoAdamo Abele

Genitore Figlio

Eva CainoEva Set

ρGenitore←Padre(Paternita) ∪ ρGenitore←Madre(Maternita)Genitore Figlio

Adamo CainoAdamo Abele

Eva CainoEva Set

Osservazione: il nome stesso della nuova tabella contiene la tracciadi tutte le operazioni usate per ottenerla. Possiamo darle anche unnuovo nome:Genitorialita =ρGenitore←Padre(Paternita) ∪ ρGenitore←Madre(Maternita)

Guido Pezzini Basi di Dati I

Ridenominazione e operatori insiemistici

e poi si puo usare l’unione:

ρGenitore←Padre(Paternita) ρGenitore←Madre(Maternita)Genitore Figlio

Adamo CainoAdamo Abele

Genitore Figlio

Eva CainoEva Set

ρGenitore←Padre(Paternita) ∪ ρGenitore←Madre(Maternita)Genitore Figlio

Adamo CainoAdamo Abele

Eva CainoEva Set

Osservazione: il nome stesso della nuova tabella contiene la tracciadi tutte le operazioni usate per ottenerla. Possiamo darle anche unnuovo nome:

Genitorialita =ρGenitore←Padre(Paternita) ∪ ρGenitore←Madre(Maternita)

Guido Pezzini Basi di Dati I

Ridenominazione e operatori insiemistici

e poi si puo usare l’unione:

ρGenitore←Padre(Paternita) ρGenitore←Madre(Maternita)Genitore Figlio

Adamo CainoAdamo Abele

Genitore Figlio

Eva CainoEva Set

ρGenitore←Padre(Paternita) ∪ ρGenitore←Madre(Maternita)Genitore Figlio

Adamo CainoAdamo Abele

Eva CainoEva Set

Osservazione: il nome stesso della nuova tabella contiene la tracciadi tutte le operazioni usate per ottenerla. Possiamo darle anche unnuovo nome:Genitorialita =ρGenitore←Padre(Paternita) ∪ ρGenitore←Madre(Maternita)

Guido Pezzini Basi di Dati I

Proiezione e selezione

La proiezione e la selezione si usano per selezionare(rispettivamente) solo alcune colonne e solo alcune righe di unarelazione.

La proiezione e la piu semplice: bisogna solo indicare esplicitamentequali colonne si vogliono mantenere. Si usa la notazione

πColonne da mantenere(Relazione)

Guido Pezzini Basi di Dati I

Proiezione e selezione

La proiezione e la selezione si usano per selezionare(rispettivamente) solo alcune colonne e solo alcune righe di unarelazione.

La proiezione e la piu semplice: bisogna solo indicare esplicitamentequali colonne si vogliono mantenere.

Si usa la notazione

πColonne da mantenere(Relazione)

Guido Pezzini Basi di Dati I

Proiezione e selezione

La proiezione e la selezione si usano per selezionare(rispettivamente) solo alcune colonne e solo alcune righe di unarelazione.

La proiezione e la piu semplice: bisogna solo indicare esplicitamentequali colonne si vogliono mantenere. Si usa la notazione

πColonne da mantenere(Relazione)

Guido Pezzini Basi di Dati I

Proiezione

Esempio:Studenti

Nome Cognome Matricola Data di nascita Corso

Fabio Rossi 4453 1.12.1996 MatematicaGiulia Bianchi 8759 30.3.1994 FisicaMarco Rossi 6012 20.7.1995 ChimicaGiulia Verdi 1404 1.12.1996 Fisica

πNome,Cognome(Studenti)

Nome Cognome

Fabio RossiGiulia BianchiMarco RossiGiulia Verdi

Guido Pezzini Basi di Dati I

Proiezione

Esempio:Studenti

Nome Cognome Matricola Data di nascita Corso

Fabio Rossi 4453 1.12.1996 MatematicaGiulia Bianchi 8759 30.3.1994 FisicaMarco Rossi 6012 20.7.1995 ChimicaGiulia Verdi 1404 1.12.1996 Fisica

πNome,Cognome(Studenti)

Nome Cognome

Fabio RossiGiulia BianchiMarco RossiGiulia Verdi

Guido Pezzini Basi di Dati I

Proiezione

Esempio:Studenti

Nome Cognome Matricola Data di nascita Corso

Fabio Rossi 4453 1.12.1996 MatematicaGiulia Bianchi 8759 30.3.1994 FisicaMarco Rossi 6012 20.7.1995 ChimicaGiulia Verdi 1404 1.12.1996 Fisica

πNome,Cognome(Studenti)

Nome Cognome

Fabio RossiGiulia BianchiMarco RossiGiulia Verdi

Guido Pezzini Basi di Dati I

Proiezione

Altro esempio:Studenti

Nome Cognome Matricola Data di nascita Corso

Fabio Rossi 4453 1.12.1996 MatematicaGiulia Bianchi 8759 30.3.1994 FisicaMarco Rossi 6012 20.7.1995 ChimicaGiulia Verdi 1404 1.12.1996 Fisica

πNome,Corso(Studenti)Nome Corso

Fabio MatematicaGiulia FisicaMarco ChimicaGiulia Fisica

Guido Pezzini Basi di Dati I

Proiezione

Altro esempio:Studenti

Nome Cognome Matricola Data di nascita Corso

Fabio Rossi 4453 1.12.1996 MatematicaGiulia Bianchi 8759 30.3.1994 FisicaMarco Rossi 6012 20.7.1995 ChimicaGiulia Verdi 1404 1.12.1996 Fisica

πNome,Corso(Studenti)

Nome Corso

Fabio MatematicaGiulia FisicaMarco ChimicaGiulia Fisica

Guido Pezzini Basi di Dati I

Proiezione

Altro esempio:Studenti

Nome Cognome Matricola Data di nascita Corso

Fabio Rossi 4453 1.12.1996 MatematicaGiulia Bianchi 8759 30.3.1994 FisicaMarco Rossi 6012 20.7.1995 ChimicaGiulia Verdi 1404 1.12.1996 Fisica

πNome,Corso(Studenti)Nome Corso

Fabio MatematicaGiulia FisicaMarco ChimicaGiulia Fisica

Guido Pezzini Basi di Dati I

Proiezione

Altro esempio:Studenti

Nome Cognome Matricola Data di nascita Corso

Fabio Rossi 4453 1.12.1996 MatematicaGiulia Bianchi 8759 30.3.1994 FisicaMarco Rossi 6012 20.7.1995 ChimicaGiulia Verdi 1404 1.12.1996 Fisica

πNome,Corso(Studenti)Nome Corso

Fabio MatematicaGiulia FisicaMarco ChimicaGiulia Fisica

Anche qui il DBMS elimina automaticamente eventuali ripetizioni!

Guido Pezzini Basi di Dati I

Proiezione

Altro esempio:Studenti

Nome Cognome Matricola Data di nascita Corso

Fabio Rossi 4453 1.12.1996 MatematicaGiulia Bianchi 8759 30.3.1994 FisicaMarco Rossi 6012 20.7.1995 ChimicaGiulia Verdi 1404 1.12.1996 Fisica

πNome,Corso(Studenti)Nome Corso

Fabio MatematicaGiulia FisicaMarco Chimica

Anche qui il DBMS elimina automaticamente eventuali ripetizioni!

Guido Pezzini Basi di Dati I

Proiezione

In generale il numero di righe di

πColonne da mantenere(Relazione)

e ≤ il numero di righe di Relazione.

Il numero e uguale se e solo se

le colonne da mantenere sono unasuperchiave di Relazione.

Guido Pezzini Basi di Dati I

Proiezione

In generale il numero di righe di

πColonne da mantenere(Relazione)

e ≤ il numero di righe di Relazione.

Il numero e uguale se e solo se

le colonne da mantenere sono unasuperchiave di Relazione.

Guido Pezzini Basi di Dati I

Proiezione

In generale il numero di righe di

πColonne da mantenere(Relazione)

e ≤ il numero di righe di Relazione.

Il numero e uguale se e solo se le colonne da mantenere sono unasuperchiave di Relazione.

Guido Pezzini Basi di Dati I

Selezione

La selezione si usa per selezionare alcune righe di una relazione.

Le righe da mantenere si indicano specificando un criterio, checiascuna di esse deve (singolarmente) rispettare. La notazione e laseguente:

σCriterio(Relazione)

Guido Pezzini Basi di Dati I

Selezione

La selezione si usa per selezionare alcune righe di una relazione.

Le righe da mantenere si indicano specificando un criterio, checiascuna di esse deve (singolarmente) rispettare.

La notazione e laseguente:

σCriterio(Relazione)

Guido Pezzini Basi di Dati I

Selezione

La selezione si usa per selezionare alcune righe di una relazione.

Le righe da mantenere si indicano specificando un criterio, checiascuna di esse deve (singolarmente) rispettare. La notazione e laseguente:

σCriterio(Relazione)

Guido Pezzini Basi di Dati I

Selezione

Esempio:Esami

Studente Voto Lode Corso

4453 21 no Analisi6887 30 sı Geometria4453 28 no Algebra4453 28 no Fisica1837 25 no Algebra9928 23 no Fisica

σVoto≥28(Esami)

Guido Pezzini Basi di Dati I

Selezione

Esempio:Esami

Studente Voto Lode Corso

4453 21 no Analisi6887 30 sı Geometria4453 28 no Algebra4453 28 no Fisica1837 25 no Algebra9928 23 no Fisica

σVoto≥28(Esami)

Guido Pezzini Basi di Dati I

Selezione

Esempio:Esami

Studente Voto Lode Corso

4453 21 no Analisi6887 30 sı Geometria4453 28 no Algebra4453 28 no Fisica1837 25 no Algebra9928 23 no Fisica

σVoto≥28(Esami)

Studente Voto Lode Corso

6887 30 sı Geometria4453 28 no Algebra4453 28 no Fisica

Guido Pezzini Basi di Dati I

Selezione

Esempio:Esami

Studente Voto Lode Corso

4453 21 no Analisi6887 30 sı Geometria4453 28 no Algebra4453 28 no Fisica1837 25 no Algebra9928 23 no Fisica

σVoto≥28(Esami)

Studente Voto Lode Corso

6887 30 sı Geometria4453 28 no Algebra4453 28 no Fisica

Guido Pezzini Basi di Dati I

Selezione

Altro esempio:Esami

Studente Voto Lode Corso

4453 21 no Analisi6887 30 sı Geometria4453 28 no Algebra4453 28 no Fisica1837 25 no Algebra9928 23 no Fisica

σCorso=Fisica(Esami)

Guido Pezzini Basi di Dati I

Selezione

Altro esempio:Esami

Studente Voto Lode Corso

4453 21 no Analisi6887 30 sı Geometria4453 28 no Algebra4453 28 no Fisica1837 25 no Algebra9928 23 no Fisica

σCorso=Fisica(Esami)

Guido Pezzini Basi di Dati I

Selezione

Altro esempio:Esami

Studente Voto Lode Corso

4453 21 no Analisi6887 30 sı Geometria4453 28 no Algebra4453 28 no Fisica1837 25 no Algebra9928 23 no Fisica

σCorso=Fisica(Esami)

Studente Voto Lode Corso

4453 28 no Fisica9928 23 no Fisica

Guido Pezzini Basi di Dati I

Selezione

Altro esempio:Esami

Studente Voto Lode Corso

4453 21 no Analisi6887 30 sı Geometria4453 28 no Algebra4453 28 no Fisica1837 25 no Algebra9928 23 no Fisica

σCorso=Fisica(Esami)Studente Voto Lode Corso

4453 28 no Fisica9928 23 no Fisica

Guido Pezzini Basi di Dati I

Selezione

Attenzione: Normalmente in un DBMS e possibile solo specificarecondizioni che riguardano la singola riga.

Non e possibile descrivere il sottoinsieme delle righe volute in modopiu generale.

Per tali operazioni piu complesse e necessaria un’implementazionead-hoc.

Guido Pezzini Basi di Dati I

Selezione

Attenzione: Normalmente in un DBMS e possibile solo specificarecondizioni che riguardano la singola riga.

Non e possibile descrivere il sottoinsieme delle righe volute in modopiu generale.

Per tali operazioni piu complesse e necessaria un’implementazionead-hoc.

Guido Pezzini Basi di Dati I

Selezione

Attenzione: Normalmente in un DBMS e possibile solo specificarecondizioni che riguardano la singola riga.

Non e possibile descrivere il sottoinsieme delle righe volute in modopiu generale.

Per tali operazioni piu complesse e necessaria un’implementazionead-hoc.

Guido Pezzini Basi di Dati I

Join

L’operazione di join permette di combinare piu relazioni in modosimile agli operatori insiemistici, combinando caratteristiche siadell’unione sia dell’intersezione.

Si puo applicare a relazioni chenon hanno gli stessi attributi.Ne vedremo diverse varianti, e anche operatori da esso derivati:

il join naturale,

il join n-ario,

il join esterno,

il self-join,

il theta-join e l’equi-join.

Queste varianti esistono perche

ci sono diversi possibili modi di trattare il fatto che le relazioninon hanno gli stessi attributi,

e conveniente combinare join con se stesso e con altreoperazioni.

Guido Pezzini Basi di Dati I

Join

L’operazione di join permette di combinare piu relazioni in modosimile agli operatori insiemistici, combinando caratteristiche siadell’unione sia dell’intersezione. Si puo applicare a relazioni chenon hanno gli stessi attributi.

Ne vedremo diverse varianti, e anche operatori da esso derivati:

il join naturale,

il join n-ario,

il join esterno,

il self-join,

il theta-join e l’equi-join.

Queste varianti esistono perche

ci sono diversi possibili modi di trattare il fatto che le relazioninon hanno gli stessi attributi,

e conveniente combinare join con se stesso e con altreoperazioni.

Guido Pezzini Basi di Dati I

Join

L’operazione di join permette di combinare piu relazioni in modosimile agli operatori insiemistici, combinando caratteristiche siadell’unione sia dell’intersezione. Si puo applicare a relazioni chenon hanno gli stessi attributi.Ne vedremo diverse varianti, e anche operatori da esso derivati:

il join naturale,

il join n-ario,

il join esterno,

il self-join,

il theta-join e l’equi-join.

Queste varianti esistono perche

ci sono diversi possibili modi di trattare il fatto che le relazioninon hanno gli stessi attributi,

e conveniente combinare join con se stesso e con altreoperazioni.

Guido Pezzini Basi di Dati I

Join

L’operazione di join permette di combinare piu relazioni in modosimile agli operatori insiemistici, combinando caratteristiche siadell’unione sia dell’intersezione. Si puo applicare a relazioni chenon hanno gli stessi attributi.Ne vedremo diverse varianti, e anche operatori da esso derivati:

il join naturale,

il join n-ario,

il join esterno,

il self-join,

il theta-join e l’equi-join.

Queste varianti esistono perche

ci sono diversi possibili modi di trattare il fatto che le relazioninon hanno gli stessi attributi,

e conveniente combinare join con se stesso e con altreoperazioni.

Guido Pezzini Basi di Dati I

Join

L’operazione di join permette di combinare piu relazioni in modosimile agli operatori insiemistici, combinando caratteristiche siadell’unione sia dell’intersezione. Si puo applicare a relazioni chenon hanno gli stessi attributi.Ne vedremo diverse varianti, e anche operatori da esso derivati:

il join naturale,

il join n-ario,

il join esterno,

il self-join,

il theta-join e l’equi-join.

Queste varianti esistono perche

ci sono diversi possibili modi di trattare il fatto che le relazioninon hanno gli stessi attributi,

e conveniente combinare join con se stesso e con altreoperazioni.

Guido Pezzini Basi di Dati I

Join

L’operazione di join permette di combinare piu relazioni in modosimile agli operatori insiemistici, combinando caratteristiche siadell’unione sia dell’intersezione. Si puo applicare a relazioni chenon hanno gli stessi attributi.Ne vedremo diverse varianti, e anche operatori da esso derivati:

il join naturale,

il join n-ario,

il join esterno,

il self-join,

il theta-join e l’equi-join.

Queste varianti esistono perche

ci sono diversi possibili modi di trattare il fatto che le relazioninon hanno gli stessi attributi,

e conveniente combinare join con se stesso e con altreoperazioni.

Guido Pezzini Basi di Dati I

Join naturale

Definiamo il join naturale di due relazioni R1 ed R2,

definiterispettivamente sugli schemi S1 ed S2 (ricordiamo: sono i loroinsiemi degli attributi).Il join, denotato come

R1 on R2

e una relazione sullo schema

S1 ∪ S2

cioe uniamo le colonne delle due relazioni.Le righe del join R1 on R2 sono definite nel modo seguente:

R1 on R2 contiene una riga r ⇔ R1 ha una riga r1 che coincide conr sugli attributi S1, e R2 ha una riga r2 the coincide con r sugli

attributi S2.

Guido Pezzini Basi di Dati I

Join naturale

Definiamo il join naturale di due relazioni R1 ed R2, definiterispettivamente sugli schemi S1 ed S2 (ricordiamo: sono i loroinsiemi degli attributi).

Il join, denotato come

R1 on R2

e una relazione sullo schema

S1 ∪ S2

cioe uniamo le colonne delle due relazioni.Le righe del join R1 on R2 sono definite nel modo seguente:

R1 on R2 contiene una riga r ⇔ R1 ha una riga r1 che coincide conr sugli attributi S1, e R2 ha una riga r2 the coincide con r sugli

attributi S2.

Guido Pezzini Basi di Dati I

Join naturale

Definiamo il join naturale di due relazioni R1 ed R2, definiterispettivamente sugli schemi S1 ed S2 (ricordiamo: sono i loroinsiemi degli attributi).Il join, denotato come

R1 on R2

e una relazione sullo schema

S1 ∪ S2

cioe uniamo le colonne delle due relazioni.Le righe del join R1 on R2 sono definite nel modo seguente:

R1 on R2 contiene una riga r ⇔ R1 ha una riga r1 che coincide conr sugli attributi S1, e R2 ha una riga r2 the coincide con r sugli

attributi S2.

Guido Pezzini Basi di Dati I

Join naturale

Definiamo il join naturale di due relazioni R1 ed R2, definiterispettivamente sugli schemi S1 ed S2 (ricordiamo: sono i loroinsiemi degli attributi).Il join, denotato come

R1 on R2

e una relazione sullo schema

S1 ∪ S2

cioe uniamo le colonne delle due relazioni.

Le righe del join R1 on R2 sono definite nel modo seguente:

R1 on R2 contiene una riga r ⇔ R1 ha una riga r1 che coincide conr sugli attributi S1, e R2 ha una riga r2 the coincide con r sugli

attributi S2.

Guido Pezzini Basi di Dati I

Join naturale

Definiamo il join naturale di due relazioni R1 ed R2, definiterispettivamente sugli schemi S1 ed S2 (ricordiamo: sono i loroinsiemi degli attributi).Il join, denotato come

R1 on R2

e una relazione sullo schema

S1 ∪ S2

cioe uniamo le colonne delle due relazioni.Le righe del join R1 on R2 sono definite nel modo seguente:

R1 on R2 contiene una riga r ⇔ R1 ha una riga r1 che coincide conr sugli attributi S1, e R2 ha una riga r2 the coincide con r sugli

attributi S2.

Guido Pezzini Basi di Dati I

Join naturale

Osservazione: i due schemi S1 ed S2 possono avere attributi incomune!Esempio:R1 R2

Impiegato Reparto

Rossi VenditeNeri Produzione

Bianchi Produzione

Reparto Piano

Produzione 2Vendite 1

R1 onR2

Impiegato Reparto Piano

Bianchi Produzione 2

Guido Pezzini Basi di Dati I

Join naturale

Osservazione: i due schemi S1 ed S2 possono avere attributi incomune!Esempio:R1 R2

Impiegato Reparto

Rossi VenditeNeri Produzione

Bianchi Produzione

Reparto Piano

Produzione 2Vendite 1

R1 onR2

Impiegato Reparto Piano

Bianchi Produzione 2

Guido Pezzini Basi di Dati I

Join naturale

Osservazione: i due schemi S1 ed S2 possono avere attributi incomune!Esempio:R1 R2

Impiegato Reparto

Rossi VenditeNeri Produzione

Bianchi Produzione

Reparto Piano

Produzione 2Vendite 1

R1 onR2

Impiegato Reparto Piano

Bianchi Produzione 2

Guido Pezzini Basi di Dati I

Join naturale

Osservazione: i due schemi S1 ed S2 possono avere attributi incomune!Esempio:R1 R2

Impiegato Reparto

Rossi VenditeNeri Produzione

Bianchi Produzione

Reparto Piano

Produzione 2Vendite 1

R1 onR2

Impiegato Reparto Piano

Rossi Vendite 1

Bianchi Produzione 2

Guido Pezzini Basi di Dati I

Join naturale

Osservazione: i due schemi S1 ed S2 possono avere attributi incomune!Esempio:R1 R2

Impiegato Reparto

Rossi VenditeNeri Produzione

Bianchi Produzione

Reparto Piano

Produzione 2Vendite 1

R1 onR2

Impiegato Reparto Piano

Rossi Vendite 1

Bianchi Produzione 2

Guido Pezzini Basi di Dati I

Join naturale

Osservazione: i due schemi S1 ed S2 possono avere attributi incomune!Esempio:R1 R2

Impiegato Reparto

Rossi VenditeNeri Produzione

Bianchi Produzione

Reparto Piano

Produzione 2Vendite 1

R1 onR2

Impiegato Reparto Piano

Rossi Vendite 1Neri Produzione 2

Guido Pezzini Basi di Dati I

Join naturale

Osservazione: i due schemi S1 ed S2 possono avere attributi incomune!Esempio:R1 R2

Impiegato Reparto

Rossi VenditeNeri Produzione

Bianchi Produzione

Reparto Piano

Produzione 2Vendite 1

R1 onR2

Impiegato Reparto Piano

Rossi Vendite 1Neri Produzione 2

Bianchi Produzione 2

Guido Pezzini Basi di Dati I

Join naturale

Osservazione: i due schemi S1 ed S2 possono avere attributi incomune!Esempio:R1 R2

Impiegato Reparto

Rossi VenditeNeri Produzione

Bianchi Produzione

Reparto Piano

Produzione 2Vendite 1

R1 onR2

Impiegato Reparto Piano

Rossi Vendite 1Neri Produzione 2

Bianchi Produzione 2

Guido Pezzini Basi di Dati I

Join naturale vs. ridenominazione + unione

Confrontiamo il join naturale con la composizione diridenominazione ed unione.Paternita Maternita

Padre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

ρGenitore←Padre(Paternita) ∪ ρGenitore←Madre(Maternita)Genitore Figlio

Adamo CainoAdamo Abele

Eva AbeleEva Set

Guido Pezzini Basi di Dati I

Join naturale vs. ridenominazione + unione

Confrontiamo il join naturale con la composizione diridenominazione ed unione.Paternita Maternita

Padre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

ρGenitore←Padre(Paternita) ∪ ρGenitore←Madre(Maternita)

Genitore Figlio

Adamo CainoAdamo Abele

Eva AbeleEva Set

Guido Pezzini Basi di Dati I

Join naturale vs. ridenominazione + unione

Confrontiamo il join naturale con la composizione diridenominazione ed unione.Paternita Maternita

Padre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

ρGenitore←Padre(Paternita) ∪ ρGenitore←Madre(Maternita)Genitore Figlio

Adamo CainoAdamo Abele

Eva AbeleEva Set

Guido Pezzini Basi di Dati I

Join naturale vs. ridenominazione + unione

Confrontiamo il join naturale con la composizione diridenominazione ed unione.Paternita Maternita

Padre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

PaternitaonMaternitaPadre Madre Figlio

Adamo Eva Caino

Guido Pezzini Basi di Dati I

Join naturale vs. ridenominazione + unione

Confrontiamo il join naturale con la composizione diridenominazione ed unione.Paternita Maternita

Padre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

PaternitaonMaternita

Padre Madre Figlio

Adamo Eva Caino

Guido Pezzini Basi di Dati I

Join naturale vs. ridenominazione + unione

Confrontiamo il join naturale con la composizione diridenominazione ed unione.Paternita Maternita

Padre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

PaternitaonMaternitaPadre Madre Figlio

Adamo Eva Caino

Guido Pezzini Basi di Dati I

Join naturale vs. ridenominazione + unione

Confrontiamo il join naturale con la composizione diridenominazione ed unione.Paternita Maternita

Padre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

PaternitaonMaternitaPadre Madre Figlio

Adamo Eva Caino

Guido Pezzini Basi di Dati I

Join naturale: proprieta

Il numero di righe di R1 on R2 e minore o uguale a n1 · n2,dove ni e il numero di righe di Ri .

Non e detto che tutte le righe di R1 (o tutte le righe di R2)contribuiscano a qualche riga di R1 on R2.

Se sı, il join si dice completo.

All’estremo opposto, e anche possibile che il join sia vuoto!Questo accade quando nessuna riga di R1 e combinabile conalcuna riga di R2 (ricordiamo: le righe devono coincidere negliattributi comuni a R1 ed R2).

Guido Pezzini Basi di Dati I

Join naturale: proprieta

Il numero di righe di R1 on R2 e minore o uguale a n1 · n2,dove ni e il numero di righe di Ri .

Non e detto che tutte le righe di R1 (o tutte le righe di R2)contribuiscano a qualche riga di R1 on R2.

Se sı, il join si dice completo.

All’estremo opposto, e anche possibile che il join sia vuoto!Questo accade quando nessuna riga di R1 e combinabile conalcuna riga di R2 (ricordiamo: le righe devono coincidere negliattributi comuni a R1 ed R2).

Guido Pezzini Basi di Dati I

Join naturale: proprieta

Il numero di righe di R1 on R2 e minore o uguale a n1 · n2,dove ni e il numero di righe di Ri .

Non e detto che tutte le righe di R1 (o tutte le righe di R2)contribuiscano a qualche riga di R1 on R2.

Se sı, il join si dice completo.

All’estremo opposto, e anche possibile che il join sia vuoto!Questo accade quando nessuna riga di R1 e combinabile conalcuna riga di R2 (ricordiamo: le righe devono coincidere negliattributi comuni a R1 ed R2).

Guido Pezzini Basi di Dati I

Join naturale: proprieta

Il numero di righe di R1 on R2 e minore o uguale a n1 · n2,dove ni e il numero di righe di Ri .

Non e detto che tutte le righe di R1 (o tutte le righe di R2)contribuiscano a qualche riga di R1 on R2.

Se sı, il join si dice completo.

All’estremo opposto, e anche possibile che il join sia vuoto!

Questo accade quando nessuna riga di R1 e combinabile conalcuna riga di R2 (ricordiamo: le righe devono coincidere negliattributi comuni a R1 ed R2).

Guido Pezzini Basi di Dati I

Join naturale: proprieta

Il numero di righe di R1 on R2 e minore o uguale a n1 · n2,dove ni e il numero di righe di Ri .

Non e detto che tutte le righe di R1 (o tutte le righe di R2)contribuiscano a qualche riga di R1 on R2.

Se sı, il join si dice completo.

All’estremo opposto, e anche possibile che il join sia vuoto!Questo accade quando nessuna riga di R1 e combinabile conalcuna riga di R2

(ricordiamo: le righe devono coincidere negliattributi comuni a R1 ed R2).

Guido Pezzini Basi di Dati I

Join naturale: proprieta

Il numero di righe di R1 on R2 e minore o uguale a n1 · n2,dove ni e il numero di righe di Ri .

Non e detto che tutte le righe di R1 (o tutte le righe di R2)contribuiscano a qualche riga di R1 on R2.

Se sı, il join si dice completo.

All’estremo opposto, e anche possibile che il join sia vuoto!Questo accade quando nessuna riga di R1 e combinabile conalcuna riga di R2 (ricordiamo: le righe devono coincidere negliattributi comuni a R1 ed R2).

Guido Pezzini Basi di Dati I

Join naturale e vincoli di integrita referenziale

Supponiamo che due relazioni abbiano un vincolo di integritareferenziale, e che le colonne corrispondentiabbiano tutte lo stesso nome.

Esempio:

Infrazioni(Prov., Numero) ⊆ Veicoli

Allora il join InfrazionionVeicoli ha esattamente tante righequante ne ha Infrazioni.

(Domanda: Perche?)

Guido Pezzini Basi di Dati I

Join naturale e vincoli di integrita referenziale

Supponiamo che due relazioni abbiano un vincolo di integritareferenziale, e che le colonne corrispondentiabbiano tutte lo stesso nome.Esempio:

Infrazioni(Prov., Numero) ⊆ Veicoli

Allora il join InfrazionionVeicoli ha esattamente tante righequante ne ha Infrazioni.

(Domanda: Perche?)

Guido Pezzini Basi di Dati I

Join naturale e vincoli di integrita referenziale

Supponiamo che due relazioni abbiano un vincolo di integritareferenziale, e che le colonne corrispondentiabbiano tutte lo stesso nome.Esempio:

Infrazioni(Prov., Numero) ⊆ Veicoli

Allora il join InfrazionionVeicoli ha esattamente tante righequante ne ha Infrazioni.

(Domanda: Perche?)

Guido Pezzini Basi di Dati I

Join naturale e vincoli di integrita referenziale

Supponiamo che due relazioni abbiano un vincolo di integritareferenziale, e che le colonne corrispondentiabbiano tutte lo stesso nome.Esempio:

Infrazioni(Prov., Numero) ⊆ Veicoli

Allora il join InfrazionionVeicoli ha esattamente tante righequante ne ha Infrazioni.

(Domanda: Perche?)

Guido Pezzini Basi di Dati I

Join naturale e vincoli di integrita referenziale

Esempio:Infrazioni

Codice Data Agente Prov. Numero

143886 20.1.2017 277 RM 4E5432366521 4.3.2017 102 MI 8D1526

VeicoliProv. Numero Marca

FI 2B5881 FordRM 4E5432 FiatMI 8D1526 Audi

InfrazionionVeicoliCodice Data Agente Prov. Numero Marca

143886 20.1.2017 277 RM 4E5432 Fiat366521 4.3.2017 102 MI 8D1526 Audi

Guido Pezzini Basi di Dati I

Join naturale e vincoli di integrita referenziale

Esempio:Infrazioni

Codice Data Agente Prov. Numero

143886 20.1.2017 277 RM 4E5432366521 4.3.2017 102 MI 8D1526

VeicoliProv. Numero Marca

FI 2B5881 FordRM 4E5432 FiatMI 8D1526 Audi

InfrazionionVeicoli

Codice Data Agente Prov. Numero Marca

143886 20.1.2017 277 RM 4E5432 Fiat366521 4.3.2017 102 MI 8D1526 Audi

Guido Pezzini Basi di Dati I

Join naturale e vincoli di integrita referenziale

Esempio:Infrazioni

Codice Data Agente Prov. Numero

143886 20.1.2017 277 RM 4E5432366521 4.3.2017 102 MI 8D1526

VeicoliProv. Numero Marca

FI 2B5881 FordRM 4E5432 FiatMI 8D1526 Audi

InfrazionionVeicoliCodice Data Agente Prov. Numero Marca

143886 20.1.2017 277 RM 4E5432 Fiat366521 4.3.2017 102 MI 8D1526 Audi

Guido Pezzini Basi di Dati I

Join naturale, intersezione e “prodotto cartesiano”

Consideriamo il join R1 on R2 di due relazioni R1, R2 sullo schemarispettivamente S1, S2, e con rispettivamente n1, n2 righe.

Se S1 = S2, allora

R1 on R2

= R1 ∩ R2

Infatti R1 on R2 e sullo schema S1 ∪ S2 = S1 = S2, e contieneesattamente le righe di R1 che coincidono con qualche riga diR2.

All’estremo opposto, supponiamo S1 ∩ S2 = ∅. AlloraR1 on R2 contiene n1 · n2 righe, ottenute combinando ogni rigadi R1 con ogni riga di R2 senza restrizioni. Abbiamo cioe un“prodotto cartesiano” di R1 ed R2.

Guido Pezzini Basi di Dati I

Join naturale, intersezione e “prodotto cartesiano”

Consideriamo il join R1 on R2 di due relazioni R1, R2 sullo schemarispettivamente S1, S2, e con rispettivamente n1, n2 righe.

Se S1 = S2, allora

R1 on R2

= R1 ∩ R2

Infatti R1 on R2 e sullo schema S1 ∪ S2 = S1 = S2, e contieneesattamente le righe di R1 che coincidono con qualche riga diR2.

All’estremo opposto, supponiamo S1 ∩ S2 = ∅. AlloraR1 on R2 contiene n1 · n2 righe, ottenute combinando ogni rigadi R1 con ogni riga di R2 senza restrizioni. Abbiamo cioe un“prodotto cartesiano” di R1 ed R2.

Guido Pezzini Basi di Dati I

Join naturale, intersezione e “prodotto cartesiano”

Consideriamo il join R1 on R2 di due relazioni R1, R2 sullo schemarispettivamente S1, S2, e con rispettivamente n1, n2 righe.

Se S1 = S2, allora

R1 on R2= R1 ∩ R2

Infatti R1 on R2 e sullo schema S1 ∪ S2 = S1 = S2, e contieneesattamente le righe di R1 che coincidono con qualche riga diR2.

All’estremo opposto, supponiamo S1 ∩ S2 = ∅. AlloraR1 on R2 contiene n1 · n2 righe, ottenute combinando ogni rigadi R1 con ogni riga di R2 senza restrizioni. Abbiamo cioe un“prodotto cartesiano” di R1 ed R2.

Guido Pezzini Basi di Dati I

Join naturale, intersezione e “prodotto cartesiano”

Consideriamo il join R1 on R2 di due relazioni R1, R2 sullo schemarispettivamente S1, S2, e con rispettivamente n1, n2 righe.

Se S1 = S2, allora

R1 on R2= R1 ∩ R2

Infatti R1 on R2 e sullo schema S1 ∪ S2 = S1 = S2, e contieneesattamente le righe di R1 che coincidono con qualche riga diR2.

All’estremo opposto, supponiamo S1 ∩ S2 = ∅. AlloraR1 on R2 contiene n1 · n2 righe, ottenute combinando ogni rigadi R1 con ogni riga di R2 senza restrizioni. Abbiamo cioe un“prodotto cartesiano” di R1 ed R2.

Guido Pezzini Basi di Dati I

Join naturale, intersezione e “prodotto cartesiano”

Consideriamo il join R1 on R2 di due relazioni R1, R2 sullo schemarispettivamente S1, S2, e con rispettivamente n1, n2 righe.

Se S1 = S2, allora

R1 on R2= R1 ∩ R2

Infatti R1 on R2 e sullo schema S1 ∪ S2 = S1 = S2, e contieneesattamente le righe di R1 che coincidono con qualche riga diR2.

All’estremo opposto, supponiamo S1 ∩ S2 = ∅. AlloraR1 on R2 contiene n1 · n2 righe, ottenute combinando ogni rigadi R1 con ogni riga di R2 senza restrizioni.

Abbiamo cioe un“prodotto cartesiano” di R1 ed R2.

Guido Pezzini Basi di Dati I

Join naturale, intersezione e “prodotto cartesiano”

Consideriamo il join R1 on R2 di due relazioni R1, R2 sullo schemarispettivamente S1, S2, e con rispettivamente n1, n2 righe.

Se S1 = S2, allora

R1 on R2= R1 ∩ R2

Infatti R1 on R2 e sullo schema S1 ∪ S2 = S1 = S2, e contieneesattamente le righe di R1 che coincidono con qualche riga diR2.

All’estremo opposto, supponiamo S1 ∩ S2 = ∅. AlloraR1 on R2 contiene n1 · n2 righe, ottenute combinando ogni rigadi R1 con ogni riga di R2 senza restrizioni. Abbiamo cioe un“prodotto cartesiano” di R1 ed R2.

Guido Pezzini Basi di Dati I

Join n-ario

Il join, considerato come operazione fra relazioni, e commutativo:

R1 on R2 = R2 on R1

ed associativo:

(R1 on R2) on R3 = R1 on (R2 on R3)

Quindi si puo scrivere anche un join di piu di due relazioni, senzaparentesi:

R1 on R2 on R3

o in generale di n relazioni:

R1 on R2 on . . . on Rn

=onni=1 Ri

Questo si chiama join n-ario.

Guido Pezzini Basi di Dati I

Join n-ario

Il join, considerato come operazione fra relazioni, e commutativo:

R1 on R2 = R2 on R1

ed associativo:

(R1 on R2) on R3 = R1 on (R2 on R3)

Quindi si puo scrivere anche un join di piu di due relazioni, senzaparentesi:

R1 on R2 on R3

o in generale di n relazioni:

R1 on R2 on . . . on Rn

=onni=1 Ri

Questo si chiama join n-ario.

Guido Pezzini Basi di Dati I

Join n-ario

Il join, considerato come operazione fra relazioni, e commutativo:

R1 on R2 = R2 on R1

ed associativo:

(R1 on R2) on R3 = R1 on (R2 on R3)

Quindi si puo scrivere anche un join di piu di due relazioni, senzaparentesi:

R1 on R2 on R3

o in generale di n relazioni:

R1 on R2 on . . . on Rn

=onni=1 Ri

Questo si chiama join n-ario.

Guido Pezzini Basi di Dati I

Join n-ario

Il join, considerato come operazione fra relazioni, e commutativo:

R1 on R2 = R2 on R1

ed associativo:

(R1 on R2) on R3 = R1 on (R2 on R3)

Quindi si puo scrivere anche un join di piu di due relazioni, senzaparentesi:

R1 on R2 on R3

o in generale di n relazioni:

R1 on R2 on . . . on Rn

=onni=1 Ri

Questo si chiama join n-ario.

Guido Pezzini Basi di Dati I

Join n-ario

Il join, considerato come operazione fra relazioni, e commutativo:

R1 on R2 = R2 on R1

ed associativo:

(R1 on R2) on R3 = R1 on (R2 on R3)

Quindi si puo scrivere anche un join di piu di due relazioni, senzaparentesi:

R1 on R2 on R3

o in generale di n relazioni:

R1 on R2 on . . . on Rn

=onni=1 Ri

Questo si chiama join n-ario.

Guido Pezzini Basi di Dati I

Join n-ario

Il join, considerato come operazione fra relazioni, e commutativo:

R1 on R2 = R2 on R1

ed associativo:

(R1 on R2) on R3 = R1 on (R2 on R3)

Quindi si puo scrivere anche un join di piu di due relazioni, senzaparentesi:

R1 on R2 on R3

o in generale di n relazioni:

R1 on R2 on . . . on Rn

=onni=1 Ri

Questo si chiama join n-ario.

Guido Pezzini Basi di Dati I

Join n-ario

Il join, considerato come operazione fra relazioni, e commutativo:

R1 on R2 = R2 on R1

ed associativo:

(R1 on R2) on R3 = R1 on (R2 on R3)

Quindi si puo scrivere anche un join di piu di due relazioni, senzaparentesi:

R1 on R2 on R3

o in generale di n relazioni:

R1 on R2 on . . . on Rn

=onni=1 Ri

Questo si chiama join n-ario.

Guido Pezzini Basi di Dati I

Join n-ario

Il join, considerato come operazione fra relazioni, e commutativo:

R1 on R2 = R2 on R1

ed associativo:

(R1 on R2) on R3 = R1 on (R2 on R3)

Quindi si puo scrivere anche un join di piu di due relazioni, senzaparentesi:

R1 on R2 on R3

o in generale di n relazioni:

R1 on R2 on . . . on Rn

=onni=1 Ri

Questo si chiama join n-ario.

Guido Pezzini Basi di Dati I

Join n-ario

Il join, considerato come operazione fra relazioni, e commutativo:

R1 on R2 = R2 on R1

ed associativo:

(R1 on R2) on R3 = R1 on (R2 on R3)

Quindi si puo scrivere anche un join di piu di due relazioni, senzaparentesi:

R1 on R2 on R3

o in generale di n relazioni:

R1 on R2 on . . . on Rn=onni=1 Ri

Questo si chiama join n-ario.

Guido Pezzini Basi di Dati I

Join n-ario

Il join, considerato come operazione fra relazioni, e commutativo:

R1 on R2 = R2 on R1

ed associativo:

(R1 on R2) on R3 = R1 on (R2 on R3)

Quindi si puo scrivere anche un join di piu di due relazioni, senzaparentesi:

R1 on R2 on R3

o in generale di n relazioni:

R1 on R2 on . . . on Rn=onni=1 Ri

Questo si chiama join n-ario.Guido Pezzini Basi di Dati I

Join esterni

Il join R1 on R2 non include in generale tutte le righe di R1 ed R2.

Esistono varianti che invece le includono tutte: i join esterni.Con essi, se una riga di una relazione non e compatibile con alcunariga dell’altra, viene estesa mettendo NULL negli attributimancanti, e viene inclusa nel join.Esistono tre versioni:

join esterno sinistro:

R1 onleft R2

che estende solo le righe di R1,

join esterno destro:

R1 onright R2

che estende solo le righe di R2,

join esterno completo:

R1 onfull R2

che estende le righe di entrambe R1 ed R2.

Guido Pezzini Basi di Dati I

Join esterni

Il join R1 on R2 non include in generale tutte le righe di R1 ed R2.Esistono varianti che invece le includono tutte: i join esterni.

Con essi, se una riga di una relazione non e compatibile con alcunariga dell’altra, viene estesa mettendo NULL negli attributimancanti, e viene inclusa nel join.Esistono tre versioni:

join esterno sinistro:

R1 onleft R2

che estende solo le righe di R1,

join esterno destro:

R1 onright R2

che estende solo le righe di R2,

join esterno completo:

R1 onfull R2

che estende le righe di entrambe R1 ed R2.

Guido Pezzini Basi di Dati I

Join esterni

Il join R1 on R2 non include in generale tutte le righe di R1 ed R2.Esistono varianti che invece le includono tutte: i join esterni.Con essi, se una riga di una relazione non e compatibile con alcunariga dell’altra,

viene estesa mettendo NULL negli attributimancanti, e viene inclusa nel join.Esistono tre versioni:

join esterno sinistro:

R1 onleft R2

che estende solo le righe di R1,

join esterno destro:

R1 onright R2

che estende solo le righe di R2,

join esterno completo:

R1 onfull R2

che estende le righe di entrambe R1 ed R2.

Guido Pezzini Basi di Dati I

Join esterni

Il join R1 on R2 non include in generale tutte le righe di R1 ed R2.Esistono varianti che invece le includono tutte: i join esterni.Con essi, se una riga di una relazione non e compatibile con alcunariga dell’altra, viene estesa mettendo NULL negli attributimancanti,

e viene inclusa nel join.Esistono tre versioni:

join esterno sinistro:

R1 onleft R2

che estende solo le righe di R1,

join esterno destro:

R1 onright R2

che estende solo le righe di R2,

join esterno completo:

R1 onfull R2

che estende le righe di entrambe R1 ed R2.

Guido Pezzini Basi di Dati I

Join esterni

Il join R1 on R2 non include in generale tutte le righe di R1 ed R2.Esistono varianti che invece le includono tutte: i join esterni.Con essi, se una riga di una relazione non e compatibile con alcunariga dell’altra, viene estesa mettendo NULL negli attributimancanti, e viene inclusa nel join.

Esistono tre versioni:

join esterno sinistro:

R1 onleft R2

che estende solo le righe di R1,

join esterno destro:

R1 onright R2

che estende solo le righe di R2,

join esterno completo:

R1 onfull R2

che estende le righe di entrambe R1 ed R2.

Guido Pezzini Basi di Dati I

Join esterni

Il join R1 on R2 non include in generale tutte le righe di R1 ed R2.Esistono varianti che invece le includono tutte: i join esterni.Con essi, se una riga di una relazione non e compatibile con alcunariga dell’altra, viene estesa mettendo NULL negli attributimancanti, e viene inclusa nel join.Esistono tre versioni:

join esterno sinistro:

R1 onleft R2

che estende solo le righe di R1,

join esterno destro:

R1 onright R2

che estende solo le righe di R2,

join esterno completo:

R1 onfull R2

che estende le righe di entrambe R1 ed R2.

Guido Pezzini Basi di Dati I

Join esterni

Il join R1 on R2 non include in generale tutte le righe di R1 ed R2.Esistono varianti che invece le includono tutte: i join esterni.Con essi, se una riga di una relazione non e compatibile con alcunariga dell’altra, viene estesa mettendo NULL negli attributimancanti, e viene inclusa nel join.Esistono tre versioni:

join esterno sinistro:

R1 onleft R2

che estende solo le righe di R1,

join esterno destro:

R1 onright R2

che estende solo le righe di R2,

join esterno completo:

R1 onfull R2

che estende le righe di entrambe R1 ed R2.

Guido Pezzini Basi di Dati I

Join esterni

Il join R1 on R2 non include in generale tutte le righe di R1 ed R2.Esistono varianti che invece le includono tutte: i join esterni.Con essi, se una riga di una relazione non e compatibile con alcunariga dell’altra, viene estesa mettendo NULL negli attributimancanti, e viene inclusa nel join.Esistono tre versioni:

join esterno sinistro:

R1 onleft R2

che estende solo le righe di R1,

join esterno destro:

R1 onright R2

che estende solo le righe di R2,

join esterno completo:

R1 onfull R2

che estende le righe di entrambe R1 ed R2.

Guido Pezzini Basi di Dati I

Join esterni

Il join R1 on R2 non include in generale tutte le righe di R1 ed R2.Esistono varianti che invece le includono tutte: i join esterni.Con essi, se una riga di una relazione non e compatibile con alcunariga dell’altra, viene estesa mettendo NULL negli attributimancanti, e viene inclusa nel join.Esistono tre versioni:

join esterno sinistro:

R1 onleft R2

che estende solo le righe di R1,

join esterno destro:

R1 onright R2

che estende solo le righe di R2,

join esterno completo:

R1 onfull R2

che estende le righe di entrambe R1 ed R2.

Guido Pezzini Basi di Dati I

Join esterni

Il join R1 on R2 non include in generale tutte le righe di R1 ed R2.Esistono varianti che invece le includono tutte: i join esterni.Con essi, se una riga di una relazione non e compatibile con alcunariga dell’altra, viene estesa mettendo NULL negli attributimancanti, e viene inclusa nel join.Esistono tre versioni:

join esterno sinistro:

R1 onleft R2

che estende solo le righe di R1,

join esterno destro:

R1 onright R2

che estende solo le righe di R2,

join esterno completo:

R1 onfull R2

che estende le righe di entrambe R1 ed R2.

Guido Pezzini Basi di Dati I

Join esterni

Il join R1 on R2 non include in generale tutte le righe di R1 ed R2.Esistono varianti che invece le includono tutte: i join esterni.Con essi, se una riga di una relazione non e compatibile con alcunariga dell’altra, viene estesa mettendo NULL negli attributimancanti, e viene inclusa nel join.Esistono tre versioni:

join esterno sinistro:

R1 onleft R2

che estende solo le righe di R1,

join esterno destro:

R1 onright R2

che estende solo le righe di R2,

join esterno completo:

R1 onfull R2

che estende le righe di entrambe R1 ed R2.

Guido Pezzini Basi di Dati I

Join esterni

Il join R1 on R2 non include in generale tutte le righe di R1 ed R2.Esistono varianti che invece le includono tutte: i join esterni.Con essi, se una riga di una relazione non e compatibile con alcunariga dell’altra, viene estesa mettendo NULL negli attributimancanti, e viene inclusa nel join.Esistono tre versioni:

join esterno sinistro:

R1 onleft R2

che estende solo le righe di R1,

join esterno destro:

R1 onright R2

che estende solo le righe di R2,

join esterno completo:

R1 onfull R2

che estende le righe di entrambe R1 ed R2.

Guido Pezzini Basi di Dati I

Join esterni

Il join R1 on R2 non include in generale tutte le righe di R1 ed R2.Esistono varianti che invece le includono tutte: i join esterni.Con essi, se una riga di una relazione non e compatibile con alcunariga dell’altra, viene estesa mettendo NULL negli attributimancanti, e viene inclusa nel join.Esistono tre versioni:

join esterno sinistro:

R1 onleft R2

che estende solo le righe di R1,

join esterno destro:

R1 onright R2

che estende solo le righe di R2,

join esterno completo:

R1 onfull R2

che estende le righe di entrambe R1 ed R2.

Guido Pezzini Basi di Dati I

Join esterni

Il join R1 on R2 non include in generale tutte le righe di R1 ed R2.Esistono varianti che invece le includono tutte: i join esterni.Con essi, se una riga di una relazione non e compatibile con alcunariga dell’altra, viene estesa mettendo NULL negli attributimancanti, e viene inclusa nel join.Esistono tre versioni:

join esterno sinistro:

R1 onleft R2

che estende solo le righe di R1,

join esterno destro:

R1 onright R2

che estende solo le righe di R2,

join esterno completo:

R1 onfull R2

che estende le righe di entrambe R1 ed R2.

Guido Pezzini Basi di Dati I

Join esterni

Esempio:Paternita Maternita

Padre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

PaternitaonMaternitaPadre Madre Figlio

Adamo Eva Caino

PaternitaonleftMaternitaPadre Madre Figlio

Adamo Eva CainoAdamo NULL Abele

Guido Pezzini Basi di Dati I

Join esterni

Esempio:Paternita Maternita

Padre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

PaternitaonMaternita

Padre Madre Figlio

Adamo Eva Caino

PaternitaonleftMaternitaPadre Madre Figlio

Adamo Eva CainoAdamo NULL Abele

Guido Pezzini Basi di Dati I

Join esterni

Esempio:Paternita Maternita

Padre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

PaternitaonMaternitaPadre Madre Figlio

Adamo Eva Caino

PaternitaonleftMaternitaPadre Madre Figlio

Adamo Eva CainoAdamo NULL Abele

Guido Pezzini Basi di Dati I

Join esterni

Esempio:Paternita Maternita

Padre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

PaternitaonMaternitaPadre Madre Figlio

Adamo Eva Caino

PaternitaonleftMaternita

Padre Madre Figlio

Adamo Eva CainoAdamo NULL Abele

Guido Pezzini Basi di Dati I

Join esterni

Esempio:Paternita Maternita

Padre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

PaternitaonMaternitaPadre Madre Figlio

Adamo Eva Caino

PaternitaonleftMaternitaPadre Madre Figlio

Adamo Eva CainoAdamo NULL Abele

Guido Pezzini Basi di Dati I

Join esterni

Esempio:Paternita Maternita

Padre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

PaternitaonMaternitaPadre Madre Figlio

Adamo Eva Caino

PaternitaonleftMaternitaPadre Madre Figlio

Adamo Eva Caino

Adamo NULL Abele

Guido Pezzini Basi di Dati I

Join esterni

Esempio:Paternita Maternita

Padre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

PaternitaonMaternitaPadre Madre Figlio

Adamo Eva Caino

PaternitaonleftMaternitaPadre Madre Figlio

Adamo Eva CainoAdamo NULL Abele

Guido Pezzini Basi di Dati I

Join esterni

Esempio:Paternita Maternita

Padre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

PaternitaonMaternitaPadre Madre Figlio

Adamo Eva Caino

PaternitaonrightMaternita

Padre Madre Figlio

Adamo Eva CainoNULL Eva Set

Guido Pezzini Basi di Dati I

Join esterni

Esempio:Paternita Maternita

Padre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

PaternitaonMaternitaPadre Madre Figlio

Adamo Eva Caino

PaternitaonrightMaternita

Padre Madre Figlio

Adamo Eva CainoNULL Eva Set

Guido Pezzini Basi di Dati I

Join esterni

Esempio:Paternita Maternita

Padre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

PaternitaonMaternitaPadre Madre Figlio

Adamo Eva Caino

PaternitaonrightMaternita

Padre Madre Figlio

Adamo Eva CainoNULL Eva Set

Guido Pezzini Basi di Dati I

Join esterni

Esempio:Paternita Maternita

Padre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

PaternitaonMaternitaPadre Madre Figlio

Adamo Eva Caino

PaternitaonrightMaternita

Padre Madre Figlio

Adamo Eva Caino

NULL Eva Set

Guido Pezzini Basi di Dati I

Join esterni

Esempio:Paternita Maternita

Padre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

PaternitaonMaternitaPadre Madre Figlio

Adamo Eva Caino

PaternitaonrightMaternita

Padre Madre Figlio

Adamo Eva CainoNULL Eva Set

Guido Pezzini Basi di Dati I

Join esterni

Esempio:Paternita Maternita

Padre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

PaternitaonMaternitaPadre Madre Figlio

Adamo Eva Caino

PaternitaonfullMaternitaPadre Madre Figlio

Adamo Eva CainoAdamo NULL AbeleNULL Eva Set

Guido Pezzini Basi di Dati I

Join esterni

Esempio:Paternita Maternita

Padre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

PaternitaonMaternitaPadre Madre Figlio

Adamo Eva Caino

PaternitaonfullMaternita

Padre Madre Figlio

Adamo Eva CainoAdamo NULL AbeleNULL Eva Set

Guido Pezzini Basi di Dati I

Join esterni

Esempio:Paternita Maternita

Padre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

PaternitaonMaternitaPadre Madre Figlio

Adamo Eva Caino

PaternitaonfullMaternitaPadre Madre Figlio

Adamo Eva CainoAdamo NULL AbeleNULL Eva Set

Guido Pezzini Basi di Dati I

Join esterni

Esempio:Paternita Maternita

Padre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

PaternitaonMaternitaPadre Madre Figlio

Adamo Eva Caino

PaternitaonfullMaternitaPadre Madre Figlio

Adamo Eva Caino

Adamo NULL AbeleNULL Eva Set

Guido Pezzini Basi di Dati I

Join esterni

Esempio:Paternita Maternita

Padre Figlio

Adamo CainoAdamo Abele

Madre Figlio

Eva CainoEva Set

PaternitaonMaternitaPadre Madre Figlio

Adamo Eva Caino

PaternitaonfullMaternitaPadre Madre Figlio

Adamo Eva CainoAdamo NULL AbeleNULL Eva Set

Guido Pezzini Basi di Dati I

Join esterni e valori NULL

Attenzione: I join esterni introducono spesso valori NULL.

Vedremo in seguito come vengono definiti gli operatori dell’algebrarelazionale in presenza di tali valori.

Guido Pezzini Basi di Dati I

Join esterni e valori NULL

Attenzione: I join esterni introducono spesso valori NULL.Vedremo in seguito come vengono definiti gli operatori dell’algebrarelazionale in presenza di tali valori.

Guido Pezzini Basi di Dati I

Self-join

Il join R on R di una relazione R con se stessa e uguale...

ad R.

Ma puo essere utile dopo una ridenominazione!

Si chiama allora self-join.

Guido Pezzini Basi di Dati I

Self-join

Il join R on R di una relazione R con se stessa e uguale... ad R.

Ma puo essere utile dopo una ridenominazione!

Si chiama allora self-join.

Guido Pezzini Basi di Dati I

Self-join

Il join R on R di una relazione R con se stessa e uguale... ad R.

Ma puo essere utile dopo una ridenominazione!

Si chiama allora self-join.

Guido Pezzini Basi di Dati I

Self-join

Il join R on R di una relazione R con se stessa e uguale... ad R.

Ma puo essere utile dopo una ridenominazione!

Si chiama allora self-join.

Guido Pezzini Basi di Dati I

Self-join

Esempio:Genitori ρ(Nonno,Genitore)←(Genitore,Figlio)(Genitori)

Genitore Figlio

Luca ElenaMaria Elena

Giorgio LucaSilvia MariaEnzo Maria

Da questa relazione deduciamo che Giorgio, Silvia ed Enzo sonononni di Elena.

Guido Pezzini Basi di Dati I

Self-join

Esempio:Genitori ρ(Nonno,Genitore)←(Genitore,Figlio)(Genitori)

Genitore Figlio

Luca ElenaMaria Elena

Giorgio LucaSilvia MariaEnzo Maria

Da questa relazione deduciamo che Giorgio, Silvia ed Enzo sonononni di Elena.

Guido Pezzini Basi di Dati I

Self-join

Esempio:Genitori ρ(Nonno,Genitore)←(Genitore,Figlio)(Genitori)

Genitore Figlio

Luca ElenaMaria Elena

Giorgio LucaSilvia MariaEnzo Maria

Da questa relazione deduciamo che Giorgio, Silvia ed Enzo sonononni di Elena.

Guido Pezzini Basi di Dati I

Self-join

Esempio:Genitori ρ(Nonno,Genitore)←(Genitore,Figlio)(Genitori)

Genitore Figlio

Luca ElenaMaria Elena

Giorgio LucaSilvia MariaEnzo Maria

Nonno Genitore

Luca ElenaMaria Elena

Giorgio LucaSilvia MariaEnzo Maria

Da questa relazione deduciamo che Giorgio, Silvia ed Enzo sonononni di Elena.

Guido Pezzini Basi di Dati I

Self-join

Esempio:Genitori ρ(Nonno,Genitore)←(Genitore,Figlio)(Genitori)

Genitore Figlio

Luca ElenaMaria Elena

Giorgio LucaSilvia MariaEnzo Maria

Nonno Genitore

Luca ElenaMaria Elena

Giorgio LucaSilvia MariaEnzo Maria

Da questa relazione deduciamo che Giorgio, Silvia ed Enzo sonononni di Elena.

Guido Pezzini Basi di Dati I

Self-join

Esempio:Genitori ρ(Nonno,Genitore)←(Genitore,Figlio)(Genitori)

Genitore Figlio

Luca ElenaMaria Elena

Giorgio LucaSilvia MariaEnzo Maria

Nonno Genitore

Luca ElenaMaria Elena

Giorgio LucaSilvia MariaEnzo Maria

Da questa relazione deduciamo che Giorgio, Silvia ed Enzo sonononni di Elena.

ρ(Nonno,Genitore)←(Genitore,Figlio)(Genitore) on Genitore

Nonno Genitore Figlio

Giorgio Luca ElenaSilvia Maria ElenaEnzo Maria Elena

Guido Pezzini Basi di Dati I

Self-join

Esempio:Genitori ρ(Nonno,Genitore)←(Genitore,Figlio)(Genitori)

Genitore Figlio

Luca ElenaMaria Elena

Giorgio LucaSilvia MariaEnzo Maria

Nonno Genitore

Luca ElenaMaria Elena

Giorgio LucaSilvia MariaEnzo Maria

Da questa relazione deduciamo che Giorgio, Silvia ed Enzo sonononni di Elena.

ρ(Nonno,Genitore)←(Genitore,Figlio)(Genitore) on Genitore

Nonno Genitore Figlio

Giorgio Luca ElenaSilvia Maria ElenaEnzo Maria Elena

Guido Pezzini Basi di Dati I

Self-join

Esempio:Genitori ρ(Nonno,Genitore)←(Genitore,Figlio)(Genitori)

Genitore Figlio

Luca ElenaMaria Elena

Giorgio LucaSilvia MariaEnzo Maria

Nonno Genitore

Luca ElenaMaria Elena

Giorgio LucaSilvia MariaEnzo Maria

Da questa relazione deduciamo che Giorgio, Silvia ed Enzo sonononni di Elena.

ρ(Nonno,Genitore)←(Genitore,Figlio)(Genitore) on Genitore

Nonno Genitore Figlio

Giorgio Luca ElenaSilvia Maria ElenaEnzo Maria Elena

Guido Pezzini Basi di Dati I

Theta-join

Come nell’esempio precedente, il join e spesso utile incombinazione con altri operatori. Si possono definire allora altrioperatori da esso “derivati”.

Ad esempio il theta-join, che e la composizione di selezione e join:

theta-join = selezione ◦ join

La notazione e:

onCriterio= σCriterio◦ on

Attenzione: In molti DBMS il theta-join e definito invece comecomposizione di selezione e prodotto cartesiano:

theta-join = selezione ◦ prodotto cartesiano

(ricordiamo: il prodotto cartesiano e il join di due relazioni senzaattributi in comune)

Guido Pezzini Basi di Dati I

Theta-join

Come nell’esempio precedente, il join e spesso utile incombinazione con altri operatori. Si possono definire allora altrioperatori da esso “derivati”.

Ad esempio il theta-join, che e la composizione di selezione e join:

theta-join = selezione ◦ join

La notazione e:

onCriterio= σCriterio◦ on

Attenzione: In molti DBMS il theta-join e definito invece comecomposizione di selezione e prodotto cartesiano:

theta-join = selezione ◦ prodotto cartesiano

(ricordiamo: il prodotto cartesiano e il join di due relazioni senzaattributi in comune)

Guido Pezzini Basi di Dati I

Theta-join

Come nell’esempio precedente, il join e spesso utile incombinazione con altri operatori. Si possono definire allora altrioperatori da esso “derivati”.

Ad esempio il theta-join, che e la composizione di selezione e join:

theta-join = selezione ◦ join

La notazione e:

onCriterio= σCriterio◦ on

Attenzione: In molti DBMS il theta-join e definito invece comecomposizione di selezione e prodotto cartesiano:

theta-join = selezione ◦ prodotto cartesiano

(ricordiamo: il prodotto cartesiano e il join di due relazioni senzaattributi in comune)

Guido Pezzini Basi di Dati I

Theta-join

Come nell’esempio precedente, il join e spesso utile incombinazione con altri operatori. Si possono definire allora altrioperatori da esso “derivati”.

Ad esempio il theta-join, che e la composizione di selezione e join:

theta-join = selezione ◦ join

La notazione e:

onCriterio= σCriterio◦ on

Attenzione: In molti DBMS il theta-join e definito invece comecomposizione di selezione e prodotto cartesiano:

theta-join = selezione ◦ prodotto cartesiano

(ricordiamo: il prodotto cartesiano e il join di due relazioni senzaattributi in comune)

Guido Pezzini Basi di Dati I

Theta-join

Come nell’esempio precedente, il join e spesso utile incombinazione con altri operatori. Si possono definire allora altrioperatori da esso “derivati”.

Ad esempio il theta-join, che e la composizione di selezione e join:

theta-join = selezione ◦ join

La notazione e:

onCriterio= σCriterio◦ on

Attenzione: In molti DBMS il theta-join e definito invece comecomposizione di selezione e prodotto cartesiano:

theta-join = selezione ◦ prodotto cartesiano

(ricordiamo: il prodotto cartesiano e il join di due relazioni senzaattributi in comune)

Guido Pezzini Basi di Dati I

Theta-join

Come nell’esempio precedente, il join e spesso utile incombinazione con altri operatori. Si possono definire allora altrioperatori da esso “derivati”.

Ad esempio il theta-join, che e la composizione di selezione e join:

theta-join = selezione ◦ join

La notazione e:

onCriterio= σCriterio◦ on

Attenzione: In molti DBMS il theta-join e definito invece comecomposizione di selezione e prodotto cartesiano:

theta-join = selezione ◦ prodotto cartesiano

(ricordiamo: il prodotto cartesiano e il join di due relazioni senzaattributi in comune)

Guido Pezzini Basi di Dati I

Theta-join

Come nell’esempio precedente, il join e spesso utile incombinazione con altri operatori. Si possono definire allora altrioperatori da esso “derivati”.

Ad esempio il theta-join, che e la composizione di selezione e join:

theta-join = selezione ◦ join

La notazione e:

onCriterio= σCriterio◦ on

Attenzione: In molti DBMS il theta-join e definito invece comecomposizione di selezione e prodotto cartesiano:

theta-join = selezione ◦ prodotto cartesiano

(ricordiamo: il prodotto cartesiano e il join di due relazioni senzaattributi in comune)

Guido Pezzini Basi di Dati I

Theta-join

Esempio:Infrazioni

Codice Data Agente Prov. Numero

143886 20.1.2017 277 RM 4E5432366521 4.3.2017 102 MI 8D1526

VeicoliProv. Numero Marca

FI 2B5881 FordRM 4E5432 FiatMI 8D1526 Audi

InfrazionionVeicoliCodice Data Agente Prov Numero Marca

143886 20.1.2017 277 RM 4E5432 Fiat366521 4.3.2017 102 MI 8D1526 Audi

Guido Pezzini Basi di Dati I

Theta-join

Esempio:Infrazioni

Codice Data Agente Prov. Numero

143886 20.1.2017 277 RM 4E5432366521 4.3.2017 102 MI 8D1526

VeicoliProv. Numero Marca

FI 2B5881 FordRM 4E5432 FiatMI 8D1526 Audi

InfrazionionVeicoli

Codice Data Agente Prov Numero Marca

143886 20.1.2017 277 RM 4E5432 Fiat366521 4.3.2017 102 MI 8D1526 Audi

Guido Pezzini Basi di Dati I

Theta-join

Esempio:Infrazioni

Codice Data Agente Prov. Numero

143886 20.1.2017 277 RM 4E5432366521 4.3.2017 102 MI 8D1526

VeicoliProv. Numero Marca

FI 2B5881 FordRM 4E5432 FiatMI 8D1526 Audi

InfrazionionVeicoliCodice Data Agente Prov Numero Marca

143886 20.1.2017 277 RM 4E5432 Fiat366521 4.3.2017 102 MI 8D1526 Audi

Guido Pezzini Basi di Dati I

Theta-join

Esempio:Infrazioni

Codice Data Agente Prov. Numero

143886 20.1.2017 277 RM 4E5432366521 4.3.2017 102 MI 8D1526

VeicoliProv. Numero Marca

FI 2B5881 FordRM 4E5432 FiatMI 8D1526 Audi

InfrazionionData = 4.3.2017VeicoliCodice Data Agente Prov. Numero Marca

366521 4.3.2017 102 MI 8D1526 Audi

Guido Pezzini Basi di Dati I

Theta-join

Esempio:Infrazioni

Codice Data Agente Prov. Numero

143886 20.1.2017 277 RM 4E5432366521 4.3.2017 102 MI 8D1526

VeicoliProv. Numero Marca

FI 2B5881 FordRM 4E5432 FiatMI 8D1526 Audi

InfrazionionData = 4.3.2017Veicoli

Codice Data Agente Prov. Numero Marca

366521 4.3.2017 102 MI 8D1526 Audi

Guido Pezzini Basi di Dati I

Theta-join

Esempio:Infrazioni

Codice Data Agente Prov. Numero

143886 20.1.2017 277 RM 4E5432366521 4.3.2017 102 MI 8D1526

VeicoliProv. Numero Marca

FI 2B5881 FordRM 4E5432 FiatMI 8D1526 Audi

InfrazionionData = 4.3.2017VeicoliCodice Data Agente Prov. Numero Marca

366521 4.3.2017 102 MI 8D1526 Audi

Guido Pezzini Basi di Dati I

Equi-join

Spesso il criterio C di un theta-join R1 onC R2 fra due relazioniR1,R2 e del tipo

valore in un attributo di R1 = valore in un attributo di R2

In questo caso il theta-join si chiama equi-join.

L’esempio tipico di equi-join e il join di due relazioni che si vuoleabbiano colonne in comune, ma dove i nomi non corrispondono.

Invece di

1 ridenominare gli attributi, e poi

2 usare il join,

si puo usare l’equi-join.

Guido Pezzini Basi di Dati I

Equi-join

Spesso il criterio C di un theta-join R1 onC R2 fra due relazioniR1,R2 e del tipo

valore in un attributo di R1 = valore in un attributo di R2

In questo caso il theta-join si chiama equi-join.

L’esempio tipico di equi-join e il join di due relazioni che si vuoleabbiano colonne in comune, ma dove i nomi non corrispondono.

Invece di

1 ridenominare gli attributi, e poi

2 usare il join,

si puo usare l’equi-join.

Guido Pezzini Basi di Dati I

Equi-join

Spesso il criterio C di un theta-join R1 onC R2 fra due relazioniR1,R2 e del tipo

valore in un attributo di R1 = valore in un attributo di R2

In questo caso il theta-join si chiama equi-join.

L’esempio tipico di equi-join e il join di due relazioni che si vuoleabbiano colonne in comune, ma dove i nomi non corrispondono.

Invece di

1 ridenominare gli attributi, e poi

2 usare il join,

si puo usare l’equi-join.

Guido Pezzini Basi di Dati I

Equi-join

Spesso il criterio C di un theta-join R1 onC R2 fra due relazioniR1,R2 e del tipo

valore in un attributo di R1 = valore in un attributo di R2

In questo caso il theta-join si chiama equi-join.

L’esempio tipico di equi-join e il join di due relazioni che si vuoleabbiano colonne in comune, ma dove i nomi non corrispondono.

Invece di

1 ridenominare gli attributi, e poi

2 usare il join,

si puo usare l’equi-join.

Guido Pezzini Basi di Dati I

Equi-join

Spesso il criterio C di un theta-join R1 onC R2 fra due relazioniR1,R2 e del tipo

valore in un attributo di R1 = valore in un attributo di R2

In questo caso il theta-join si chiama equi-join.

L’esempio tipico di equi-join e il join di due relazioni che si vuoleabbiano colonne in comune, ma dove i nomi non corrispondono.

Invece di

1 ridenominare gli attributi, e poi

2 usare il join,

si puo usare l’equi-join.

Guido Pezzini Basi di Dati I

Equi-join

Spesso il criterio C di un theta-join R1 onC R2 fra due relazioniR1,R2 e del tipo

valore in un attributo di R1 = valore in un attributo di R2

In questo caso il theta-join si chiama equi-join.

L’esempio tipico di equi-join e il join di due relazioni che si vuoleabbiano colonne in comune, ma dove i nomi non corrispondono.

Invece di

1 ridenominare gli attributi, e poi

2 usare il join,

si puo usare l’equi-join.

Guido Pezzini Basi di Dati I

Equi-join

Esempio:Infrazioni

Codice Data Agente Prov. Numero

143886 20.1.2017 277 RM 4E5432366521 4.3.2017 102 MI 8D1526

AgentiMatricola Nome

081 Rossi102 Neri277 Bianchi

InfrazionionAgente=MatricolaAgenti

Codice Data Agente Prov. Numero Matricola Nome

143886 20.1.2017 277 RM 4E5432 277 Bianchi366521 4.3.2017 102 MI 8D1526 102 Neri

Si possono poi elminare le colonne “doppie” con una proiezione.

Guido Pezzini Basi di Dati I

Equi-join

Esempio:Infrazioni

Codice Data Agente Prov. Numero

143886 20.1.2017 277 RM 4E5432366521 4.3.2017 102 MI 8D1526

AgentiMatricola Nome

081 Rossi102 Neri277 Bianchi

InfrazionionAgente=MatricolaAgenti

Codice Data Agente Prov. Numero Matricola Nome

143886 20.1.2017 277 RM 4E5432 277 Bianchi366521 4.3.2017 102 MI 8D1526 102 Neri

Si possono poi elminare le colonne “doppie” con una proiezione.

Guido Pezzini Basi di Dati I

Equi-join

Esempio:Infrazioni

Codice Data Agente Prov. Numero

143886 20.1.2017 277 RM 4E5432366521 4.3.2017 102 MI 8D1526

AgentiMatricola Nome

081 Rossi102 Neri277 Bianchi

InfrazionionAgente=MatricolaAgenti

Codice Data Agente Prov. Numero Matricola Nome

143886 20.1.2017 277 RM 4E5432 277 Bianchi366521 4.3.2017 102 MI 8D1526 102 Neri

Si possono poi elminare le colonne “doppie” con una proiezione.

Guido Pezzini Basi di Dati I

Equi-join

Esempio:Infrazioni

Codice Data Agente Prov. Numero

143886 20.1.2017 277 RM 4E5432366521 4.3.2017 102 MI 8D1526

AgentiMatricola Nome

081 Rossi102 Neri277 Bianchi

InfrazionionAgente=MatricolaAgenti

Codice Data Agente Prov. Numero Matricola Nome

143886 20.1.2017 277 RM 4E5432 277 Bianchi366521 4.3.2017 102 MI 8D1526 102 Neri

Si possono poi elminare le colonne “doppie” con una proiezione.

Guido Pezzini Basi di Dati I

Equi-join e join naturale

Alcuni DBMS non conservano i nomi delle colonne correlandorelazioni diverse: vi aggiungono il nome della relazione di partenza.

Esempio: Se viene usata Impiegati(Nome, Cognome,Dipartimento), i suoi attributi diventano Impiegati.Nome,Impiegati.Cognome, Impiegati.Dipartimento

In questi casi join naturale non esiste, in quanto colonneprovenienti da relazioni diverse non avranno mai lo stessoattributo. Viene quindi sostituito dall’equi-join.

Esempio Il join di Impiegati(Nome, Dipartimento) eEdifici(Indirizzo, Dipartimento) si fa come

Impiegati(Nome, Dipartimento)onImpiegati.Dipartimento = Edifici.Dipartimento

Edifici(Indirizzo, Dipartimento)

Guido Pezzini Basi di Dati I

Equi-join e join naturale

Alcuni DBMS non conservano i nomi delle colonne correlandorelazioni diverse: vi aggiungono il nome della relazione di partenza.

Esempio: Se viene usata Impiegati(Nome, Cognome,Dipartimento), i suoi attributi diventano Impiegati.Nome,Impiegati.Cognome, Impiegati.Dipartimento

In questi casi join naturale non esiste, in quanto colonneprovenienti da relazioni diverse non avranno mai lo stessoattributo. Viene quindi sostituito dall’equi-join.

Esempio Il join di Impiegati(Nome, Dipartimento) eEdifici(Indirizzo, Dipartimento) si fa come

Impiegati(Nome, Dipartimento)onImpiegati.Dipartimento = Edifici.Dipartimento

Edifici(Indirizzo, Dipartimento)

Guido Pezzini Basi di Dati I

Equi-join e join naturale

Alcuni DBMS non conservano i nomi delle colonne correlandorelazioni diverse: vi aggiungono il nome della relazione di partenza.

Esempio: Se viene usata Impiegati(Nome, Cognome,Dipartimento), i suoi attributi diventano Impiegati.Nome,Impiegati.Cognome, Impiegati.Dipartimento

In questi casi join naturale non esiste, in quanto colonneprovenienti da relazioni diverse non avranno mai lo stessoattributo. Viene quindi sostituito dall’equi-join.

Esempio Il join di Impiegati(Nome, Dipartimento) eEdifici(Indirizzo, Dipartimento) si fa come

Impiegati(Nome, Dipartimento)onImpiegati.Dipartimento = Edifici.Dipartimento

Edifici(Indirizzo, Dipartimento)

Guido Pezzini Basi di Dati I

Equi-join e join naturale

Alcuni DBMS non conservano i nomi delle colonne correlandorelazioni diverse: vi aggiungono il nome della relazione di partenza.

Esempio: Se viene usata Impiegati(Nome, Cognome,Dipartimento), i suoi attributi diventano Impiegati.Nome,Impiegati.Cognome, Impiegati.Dipartimento

In questi casi join naturale non esiste, in quanto colonneprovenienti da relazioni diverse non avranno mai lo stessoattributo. Viene quindi sostituito dall’equi-join.

Esempio Il join di Impiegati(Nome, Dipartimento) eEdifici(Indirizzo, Dipartimento) si fa come

Impiegati(Nome, Dipartimento)onImpiegati.Dipartimento = Edifici.Dipartimento

Edifici(Indirizzo, Dipartimento)

Guido Pezzini Basi di Dati I

Equi-join e join naturale

Alcuni DBMS non conservano i nomi delle colonne correlandorelazioni diverse: vi aggiungono il nome della relazione di partenza.

Esempio: Se viene usata Impiegati(Nome, Cognome,Dipartimento), i suoi attributi diventano Impiegati.Nome,Impiegati.Cognome, Impiegati.Dipartimento

In questi casi join naturale non esiste, in quanto colonneprovenienti da relazioni diverse non avranno mai lo stessoattributo. Viene quindi sostituito dall’equi-join.

Esempio Il join di Impiegati(Nome, Dipartimento) eEdifici(Indirizzo, Dipartimento) si fa come

Impiegati(Nome, Dipartimento)onImpiegati.Dipartimento = Edifici.Dipartimento

Edifici(Indirizzo, Dipartimento)

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

L’algebra relazionale permette di formulare espressioni fra loroequivalenti, cioe che producono lo stesso risultato.

L’equivalenza puo essere

assoluta,

se e vera sempre indipendentemente dagli schemidelle relazioni coinvolte. Si scrive

Relazione ≡ Altra relazione

relativa, se e vera solo su un certo schema. Si scrive

Relazione ≡schema Altra relazione

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

L’algebra relazionale permette di formulare espressioni fra loroequivalenti, cioe che producono lo stesso risultato.

L’equivalenza puo essere

assoluta,

se e vera sempre indipendentemente dagli schemidelle relazioni coinvolte. Si scrive

Relazione ≡ Altra relazione

relativa, se e vera solo su un certo schema. Si scrive

Relazione ≡schema Altra relazione

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

L’algebra relazionale permette di formulare espressioni fra loroequivalenti, cioe che producono lo stesso risultato.

L’equivalenza puo essere

assoluta, se e vera sempre indipendentemente dagli schemidelle relazioni coinvolte.

Si scrive

Relazione ≡ Altra relazione

relativa, se e vera solo su un certo schema. Si scrive

Relazione ≡schema Altra relazione

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

L’algebra relazionale permette di formulare espressioni fra loroequivalenti, cioe che producono lo stesso risultato.

L’equivalenza puo essere

assoluta, se e vera sempre indipendentemente dagli schemidelle relazioni coinvolte. Si scrive

Relazione ≡ Altra relazione

relativa, se e vera solo su un certo schema. Si scrive

Relazione ≡schema Altra relazione

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

L’algebra relazionale permette di formulare espressioni fra loroequivalenti, cioe che producono lo stesso risultato.

L’equivalenza puo essere

assoluta, se e vera sempre indipendentemente dagli schemidelle relazioni coinvolte. Si scrive

Relazione ≡ Altra relazione

relativa, se e vera solo su un certo schema.

Si scrive

Relazione ≡schema Altra relazione

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

L’algebra relazionale permette di formulare espressioni fra loroequivalenti, cioe che producono lo stesso risultato.

L’equivalenza puo essere

assoluta, se e vera sempre indipendentemente dagli schemidelle relazioni coinvolte. Si scrive

Relazione ≡ Altra relazione

relativa, se e vera solo su un certo schema. Si scrive

Relazione ≡schema Altra relazione

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Esempi:

Per ogni relazione R e qualsiasi scelta di criteri C1,C2 per laselezione σ,

l’equivalenza

σC1 AND C2(R) ≡ σC1(σC2(R))

e sempre vera.

Consideriamo due relazioni R1,R2 su schemi rispettivamenteS1,S2, e supponiamo A,B,C ⊆ S1 ∪ S2 con A ⊆ S1 ∩ S2 eB ∩ C = ∅.

L’equivalenza

πA∪B(R1) on πA∪C (R2) ≡S πA∪B∪C (R1 on R2)

e vera se e solo se S1 ∩ S2 = A. Perche a sinistra il joinavviene su relazioni che hanno in comune solo A, mentre adestra R1 ed R2 possono avere piu colonne in comune, e allorail join in generale sara diverso.

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Esempi:

Per ogni relazione R e qualsiasi scelta di criteri C1,C2 per laselezione σ, l’equivalenza

σC1 AND C2(R) ≡ σC1(σC2(R))

e sempre vera.

Consideriamo due relazioni R1,R2 su schemi rispettivamenteS1,S2, e supponiamo A,B,C ⊆ S1 ∪ S2 con A ⊆ S1 ∩ S2 eB ∩ C = ∅.

L’equivalenza

πA∪B(R1) on πA∪C (R2) ≡S πA∪B∪C (R1 on R2)

e vera se e solo se S1 ∩ S2 = A. Perche a sinistra il joinavviene su relazioni che hanno in comune solo A, mentre adestra R1 ed R2 possono avere piu colonne in comune, e allorail join in generale sara diverso.

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Esempi:

Per ogni relazione R e qualsiasi scelta di criteri C1,C2 per laselezione σ, l’equivalenza

σC1 AND C2(R) ≡ σC1(σC2(R))

e sempre vera.

Consideriamo due relazioni R1,R2 su schemi rispettivamenteS1,S2, e supponiamo A,B,C ⊆ S1 ∪ S2 con A ⊆ S1 ∩ S2 eB ∩ C = ∅.

L’equivalenza

πA∪B(R1) on πA∪C (R2) ≡S πA∪B∪C (R1 on R2)

e vera se e solo se S1 ∩ S2 = A. Perche a sinistra il joinavviene su relazioni che hanno in comune solo A, mentre adestra R1 ed R2 possono avere piu colonne in comune, e allorail join in generale sara diverso.

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Esempi:

Per ogni relazione R e qualsiasi scelta di criteri C1,C2 per laselezione σ, l’equivalenza

σC1 AND C2(R) ≡ σC1(σC2(R))

e sempre vera.

Consideriamo due relazioni R1,R2 su schemi rispettivamenteS1,S2, e supponiamo A,B,C ⊆ S1 ∪ S2 con A ⊆ S1 ∩ S2 eB ∩ C = ∅. L’equivalenza

πA∪B(R1) on πA∪C (R2) ≡S πA∪B∪C (R1 on R2)

e vera

se e solo se S1 ∩ S2 = A. Perche a sinistra il joinavviene su relazioni che hanno in comune solo A, mentre adestra R1 ed R2 possono avere piu colonne in comune, e allorail join in generale sara diverso.

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Esempi:

Per ogni relazione R e qualsiasi scelta di criteri C1,C2 per laselezione σ, l’equivalenza

σC1 AND C2(R) ≡ σC1(σC2(R))

e sempre vera.

Consideriamo due relazioni R1,R2 su schemi rispettivamenteS1,S2, e supponiamo A,B,C ⊆ S1 ∪ S2 con A ⊆ S1 ∩ S2 eB ∩ C = ∅. L’equivalenza

πA∪B(R1) on πA∪C (R2) ≡S πA∪B∪C (R1 on R2)

e vera se e solo se S1 ∩ S2 = A.

Perche a sinistra il joinavviene su relazioni che hanno in comune solo A, mentre adestra R1 ed R2 possono avere piu colonne in comune, e allorail join in generale sara diverso.

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Esempi:

Per ogni relazione R e qualsiasi scelta di criteri C1,C2 per laselezione σ, l’equivalenza

σC1 AND C2(R) ≡ σC1(σC2(R))

e sempre vera.

Consideriamo due relazioni R1,R2 su schemi rispettivamenteS1,S2, e supponiamo A,B,C ⊆ S1 ∪ S2 con A ⊆ S1 ∩ S2 eB ∩ C = ∅. L’equivalenza

πA∪B(R1) on πA∪C (R2) ≡S πA∪B∪C (R1 on R2)

e vera se e solo se S1 ∩ S2 = A. Perche a sinistra il joinavviene su relazioni che hanno in comune solo A, mentre adestra R1 ed R2 possono avere piu colonne in comune, e allorail join in generale sara diverso.

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Tali equivalenze sono utili in pratica, perche alcune operazionirichiedono piu risorse (tempo e spazio) di altre.

Eseguendo una serie di operazioni, e molto utile

ridurre le dimensioni delle relazioni che vengono create neipassi intermedi, o almeno

far sı che le operazioni piu onerose (es. il join) venganoeseguite su relazioni piccole.

Le equivalenze servono ad ottimizzare i vari passaggi in questosenso.

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Tali equivalenze sono utili in pratica, perche alcune operazionirichiedono piu risorse (tempo e spazio) di altre.

Eseguendo una serie di operazioni, e molto utile

ridurre le dimensioni delle relazioni che vengono create neipassi intermedi, o almeno

far sı che le operazioni piu onerose (es. il join) venganoeseguite su relazioni piccole.

Le equivalenze servono ad ottimizzare i vari passaggi in questosenso.

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Tali equivalenze sono utili in pratica, perche alcune operazionirichiedono piu risorse (tempo e spazio) di altre.

Eseguendo una serie di operazioni, e molto utile

ridurre le dimensioni delle relazioni che vengono create neipassi intermedi, o almeno

far sı che le operazioni piu onerose (es. il join) venganoeseguite su relazioni piccole.

Le equivalenze servono ad ottimizzare i vari passaggi in questosenso.

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Tali equivalenze sono utili in pratica, perche alcune operazionirichiedono piu risorse (tempo e spazio) di altre.

Eseguendo una serie di operazioni, e molto utile

ridurre le dimensioni delle relazioni che vengono create neipassi intermedi, o almeno

far sı che le operazioni piu onerose (es. il join) venganoeseguite su relazioni piccole.

Le equivalenze servono ad ottimizzare i vari passaggi in questosenso.

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Tali equivalenze sono utili in pratica, perche alcune operazionirichiedono piu risorse (tempo e spazio) di altre.

Eseguendo una serie di operazioni, e molto utile

ridurre le dimensioni delle relazioni che vengono create neipassi intermedi, o almeno

far sı che le operazioni piu onerose (es. il join) venganoeseguite su relazioni piccole.

Le equivalenze servono ad ottimizzare i vari passaggi in questosenso.

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Alcune equivalenze utili:

Atomizzazione delle selezioni:

σC1 AND C2(R) ≡ σC1(σC2(R))

che abbiamo gia visto.

Idempotenza delle proiezioni:

πA(R) ≡ πA(πA∪B(R))

dove A e B sono sottoinsiemi degli attributi di R.

Anticipazione della selezione rispetto al join:

σC (R1 on R2) ≡ R1 on σC (R2)

che vale solo se il criterio di selezione C fa riferimento solo adattributi di R2 e non di R1.

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Alcune equivalenze utili:

Atomizzazione delle selezioni:

σC1 AND C2(R) ≡ σC1(σC2(R))

che abbiamo gia visto.

Idempotenza delle proiezioni:

πA(R) ≡ πA(πA∪B(R))

dove A e B sono sottoinsiemi degli attributi di R.

Anticipazione della selezione rispetto al join:

σC (R1 on R2) ≡ R1 on σC (R2)

che vale solo se il criterio di selezione C fa riferimento solo adattributi di R2 e non di R1.

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Alcune equivalenze utili:

Atomizzazione delle selezioni:

σC1 AND C2(R) ≡ σC1(σC2(R))

che abbiamo gia visto.

Idempotenza delle proiezioni:

πA(R) ≡ πA(πA∪B(R))

dove A e B sono sottoinsiemi degli attributi di R.

Anticipazione della selezione rispetto al join:

σC (R1 on R2) ≡ R1 on σC (R2)

che vale solo se il criterio di selezione C fa riferimento solo adattributi di R2 e non di R1.

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Anticipazione della proiezione rispetto al join: Siano R1,R2

relazioni definite sugli schemi risp. S1, S2. Sia T2 ⊆ S2 conT2 ⊇ S1 ∩ S2. Allora nel join solo le colonne di T2 vengonoconfrontate con colonne di S1, e vale

πS1∪T2(R1 on R2) ≡ R1 on πT2(R2)

Combinando l’equivalenza precedente con l’idempotenza delleproiezioni otteniamo:

πX (R1 onC R2) ≡ πX (πT1(R1) onC πT2(R2))

che vale sotto le seguenti ipotesi:R1,R2 sono relazioni su risp. S1,S2,il criterio C di theta-join coinvolge sottoinsiemi J1 di S1 e J2 diS2, con Ji ⊇ S1 ∩ S2,T1 = (S1 ∩ X ) ∪ J1, T2 = (S2 ∩ X ) ∪ J2

Cioe: facendo una proiezione dopo un theta-join, possiamoeliminare sin dall’inizio le colonne che non compaiono dopo laproiezione e che non sono coinvolte nel theta-join.

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Anticipazione della proiezione rispetto al join: Siano R1,R2

relazioni definite sugli schemi risp. S1, S2. Sia T2 ⊆ S2 conT2 ⊇ S1 ∩ S2. Allora nel join solo le colonne di T2 vengonoconfrontate con colonne di S1, e vale

πS1∪T2(R1 on R2) ≡ R1 on πT2(R2)

Combinando l’equivalenza precedente con l’idempotenza delleproiezioni otteniamo:

πX (R1 onC R2) ≡ πX (πT1(R1) onC πT2(R2))

che vale sotto le seguenti ipotesi:R1,R2 sono relazioni su risp. S1,S2,il criterio C di theta-join coinvolge sottoinsiemi J1 di S1 e J2 diS2, con Ji ⊇ S1 ∩ S2,T1 = (S1 ∩ X ) ∪ J1, T2 = (S2 ∩ X ) ∪ J2

Cioe: facendo una proiezione dopo un theta-join, possiamoeliminare sin dall’inizio le colonne che non compaiono dopo laproiezione e che non sono coinvolte nel theta-join.

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Anticipazione della proiezione rispetto al join: Siano R1,R2

relazioni definite sugli schemi risp. S1, S2. Sia T2 ⊆ S2 conT2 ⊇ S1 ∩ S2. Allora nel join solo le colonne di T2 vengonoconfrontate con colonne di S1, e vale

πS1∪T2(R1 on R2) ≡ R1 on πT2(R2)

Combinando l’equivalenza precedente con l’idempotenza delleproiezioni otteniamo:

πX (R1 onC R2) ≡ πX (πT1(R1) onC πT2(R2))

che vale sotto le seguenti ipotesi:R1,R2 sono relazioni su risp. S1,S2,il criterio C di theta-join coinvolge sottoinsiemi J1 di S1 e J2 diS2, con Ji ⊇ S1 ∩ S2,T1 = (S1 ∩ X ) ∪ J1, T2 = (S2 ∩ X ) ∪ J2

Cioe: facendo una proiezione dopo un theta-join, possiamoeliminare sin dall’inizio le colonne che non compaiono dopo laproiezione e che non sono coinvolte nel theta-join.

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Esempio:Vediamo come queste equivalenze vengono usate in pratica.Consideriamo due relazioni:

Impiegati(Matricola, Nome, Cognome, Eta, Stipendio),

Supervisione(Capo, Impiegato).

Supponiamo di voler elencare i capi degli impiegati con meno di 30anni. Dobbiamo prima costruire una relazione che contenga leinformazioni di entrambe le tabelle:

Impiegati on Supervisione

Poi imponiamo:

Impiegato di Supervisione si riferisce a Matricola diImpiegati (vincolo di integrita referenziale),

vogliamo solo i capi con meno di 30 anni.

Quindi:

σEta<30 AND Matricola=Impiegato(Impiegati on Supervisione)

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Esempio:Vediamo come queste equivalenze vengono usate in pratica.Consideriamo due relazioni:

Impiegati(Matricola, Nome, Cognome, Eta, Stipendio),

Supervisione(Capo, Impiegato).

Supponiamo di voler elencare i capi degli impiegati con meno di 30anni.

Dobbiamo prima costruire una relazione che contenga leinformazioni di entrambe le tabelle:

Impiegati on Supervisione

Poi imponiamo:

Impiegato di Supervisione si riferisce a Matricola diImpiegati (vincolo di integrita referenziale),

vogliamo solo i capi con meno di 30 anni.

Quindi:

σEta<30 AND Matricola=Impiegato(Impiegati on Supervisione)

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Esempio:Vediamo come queste equivalenze vengono usate in pratica.Consideriamo due relazioni:

Impiegati(Matricola, Nome, Cognome, Eta, Stipendio),

Supervisione(Capo, Impiegato).

Supponiamo di voler elencare i capi degli impiegati con meno di 30anni. Dobbiamo prima costruire una relazione che contenga leinformazioni di entrambe le tabelle:

Impiegati on Supervisione

Poi imponiamo:

Impiegato di Supervisione si riferisce a Matricola diImpiegati (vincolo di integrita referenziale),

vogliamo solo i capi con meno di 30 anni.

Quindi:

σEta<30 AND Matricola=Impiegato(Impiegati on Supervisione)

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Esempio:Vediamo come queste equivalenze vengono usate in pratica.Consideriamo due relazioni:

Impiegati(Matricola, Nome, Cognome, Eta, Stipendio),

Supervisione(Capo, Impiegato).

Supponiamo di voler elencare i capi degli impiegati con meno di 30anni. Dobbiamo prima costruire una relazione che contenga leinformazioni di entrambe le tabelle:

Impiegati on Supervisione

Poi imponiamo:

Impiegato di Supervisione si riferisce a Matricola diImpiegati (vincolo di integrita referenziale),

vogliamo solo i capi con meno di 30 anni.

Quindi:

σEta<30 AND Matricola=Impiegato(Impiegati on Supervisione)

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Esempio:Vediamo come queste equivalenze vengono usate in pratica.Consideriamo due relazioni:

Impiegati(Matricola, Nome, Cognome, Eta, Stipendio),

Supervisione(Capo, Impiegato).

Supponiamo di voler elencare i capi degli impiegati con meno di 30anni. Dobbiamo prima costruire una relazione che contenga leinformazioni di entrambe le tabelle:

Impiegati on Supervisione

Poi imponiamo:

Impiegato di Supervisione si riferisce a Matricola diImpiegati (vincolo di integrita referenziale),

vogliamo solo i capi con meno di 30 anni.

Quindi:

σEta<30 AND Matricola=Impiegato(Impiegati on Supervisione)

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Esempio:Vediamo come queste equivalenze vengono usate in pratica.Consideriamo due relazioni:

Impiegati(Matricola, Nome, Cognome, Eta, Stipendio),

Supervisione(Capo, Impiegato).

Supponiamo di voler elencare i capi degli impiegati con meno di 30anni. Dobbiamo prima costruire una relazione che contenga leinformazioni di entrambe le tabelle:

Impiegati on Supervisione

Poi imponiamo:

Impiegato di Supervisione si riferisce a Matricola diImpiegati (vincolo di integrita referenziale),

vogliamo solo i capi con meno di 30 anni.

Quindi:

σEta<30 AND Matricola=Impiegato(Impiegati on Supervisione)

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Esempio:Vediamo come queste equivalenze vengono usate in pratica.Consideriamo due relazioni:

Impiegati(Matricola, Nome, Cognome, Eta, Stipendio),

Supervisione(Capo, Impiegato).

Supponiamo di voler elencare i capi degli impiegati con meno di 30anni. Dobbiamo prima costruire una relazione che contenga leinformazioni di entrambe le tabelle:

Impiegati on Supervisione

Poi imponiamo:

Impiegato di Supervisione si riferisce a Matricola diImpiegati (vincolo di integrita referenziale),

vogliamo solo i capi con meno di 30 anni.

Quindi:

σEta<30 AND Matricola=Impiegato(Impiegati on Supervisione)

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Infine vogliamo solo il campo “Capo”:

πCapo(σEta<30 AND Matricola=Impiegato(Impiegati onSupervisione))

E un’espressione poco efficiente, perche coinvolge pochi attributidelle due tabelle, ma crea subito un prodotto cartesiano, il cuinumero di righe e il prodotto del numero di righe di Impiegati edi Supervisione.Per ottimizzarla, spezziamo prima le selezioni in passi elementari:

πCapo(σEta<30(σMatricola=Impiegato(Impiegati on Supervisione)))

Poi possiamo usare l’equi-join al posto della selezione e join:

πCapo(σEta<30(Impiegati onMatricola=Impiegato Supervisione))

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Infine vogliamo solo il campo “Capo”:

πCapo(σEta<30 AND Matricola=Impiegato(Impiegati onSupervisione))

E un’espressione poco efficiente, perche coinvolge pochi attributidelle due tabelle, ma crea subito un prodotto cartesiano, il cuinumero di righe e il prodotto del numero di righe di Impiegati edi Supervisione.Per ottimizzarla, spezziamo prima le selezioni in passi elementari:

πCapo(σEta<30(σMatricola=Impiegato(Impiegati on Supervisione)))

Poi possiamo usare l’equi-join al posto della selezione e join:

πCapo(σEta<30(Impiegati onMatricola=Impiegato Supervisione))

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Infine vogliamo solo il campo “Capo”:

πCapo(σEta<30 AND Matricola=Impiegato(Impiegati onSupervisione))

E un’espressione poco efficiente, perche coinvolge pochi attributidelle due tabelle, ma crea subito un prodotto cartesiano, il cuinumero di righe e il prodotto del numero di righe di Impiegati edi Supervisione.

Per ottimizzarla, spezziamo prima le selezioni in passi elementari:

πCapo(σEta<30(σMatricola=Impiegato(Impiegati on Supervisione)))

Poi possiamo usare l’equi-join al posto della selezione e join:

πCapo(σEta<30(Impiegati onMatricola=Impiegato Supervisione))

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Infine vogliamo solo il campo “Capo”:

πCapo(σEta<30 AND Matricola=Impiegato(Impiegati onSupervisione))

E un’espressione poco efficiente, perche coinvolge pochi attributidelle due tabelle, ma crea subito un prodotto cartesiano, il cuinumero di righe e il prodotto del numero di righe di Impiegati edi Supervisione.Per ottimizzarla, spezziamo prima le selezioni in passi elementari:

πCapo(σEta<30(σMatricola=Impiegato(Impiegati on Supervisione)))

Poi possiamo usare l’equi-join al posto della selezione e join:

πCapo(σEta<30(Impiegati onMatricola=Impiegato Supervisione))

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Infine vogliamo solo il campo “Capo”:

πCapo(σEta<30 AND Matricola=Impiegato(Impiegati onSupervisione))

E un’espressione poco efficiente, perche coinvolge pochi attributidelle due tabelle, ma crea subito un prodotto cartesiano, il cuinumero di righe e il prodotto del numero di righe di Impiegati edi Supervisione.Per ottimizzarla, spezziamo prima le selezioni in passi elementari:

πCapo(σEta<30(σMatricola=Impiegato(Impiegati on Supervisione)))

Poi possiamo usare l’equi-join al posto della selezione e join:

πCapo(σEta<30(Impiegati onMatricola=Impiegato Supervisione))

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Questa che abbiamo ottenuto

πCapo(σEta<30(Impiegati onMatricola=Impiegato Supervisione))

e gia un’espressione migliore,

perche un equi-join di solito eimplementato internamente in modo piu efficiente di un prodottocartesiano seguito da una selezione.

Ad esempio il DBMS non ha bisogno di immagazzinare tutti i datidel prodotto cartesiano prima di iniziare a fare la selezione, puoapplicarla di riga in riga mentre crea il prodotto cartesiano,registrando effettivamente la riga solo se il criterio e rispettato.(Questo dipende chiaramente dal DBMS.)

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Questa che abbiamo ottenuto

πCapo(σEta<30(Impiegati onMatricola=Impiegato Supervisione))

e gia un’espressione migliore, perche un equi-join di solito eimplementato internamente in modo piu efficiente di un prodottocartesiano seguito da una selezione.

Ad esempio il DBMS non ha bisogno di immagazzinare tutti i datidel prodotto cartesiano prima di iniziare a fare la selezione, puoapplicarla di riga in riga mentre crea il prodotto cartesiano,registrando effettivamente la riga solo se il criterio e rispettato.(Questo dipende chiaramente dal DBMS.)

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Questa che abbiamo ottenuto

πCapo(σEta<30(Impiegati onMatricola=Impiegato Supervisione))

e gia un’espressione migliore, perche un equi-join di solito eimplementato internamente in modo piu efficiente di un prodottocartesiano seguito da una selezione.

Ad esempio il DBMS non ha bisogno di immagazzinare tutti i datidel prodotto cartesiano prima di iniziare a fare la selezione,

puoapplicarla di riga in riga mentre crea il prodotto cartesiano,registrando effettivamente la riga solo se il criterio e rispettato.(Questo dipende chiaramente dal DBMS.)

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Questa che abbiamo ottenuto

πCapo(σEta<30(Impiegati onMatricola=Impiegato Supervisione))

e gia un’espressione migliore, perche un equi-join di solito eimplementato internamente in modo piu efficiente di un prodottocartesiano seguito da una selezione.

Ad esempio il DBMS non ha bisogno di immagazzinare tutti i datidel prodotto cartesiano prima di iniziare a fare la selezione, puoapplicarla di riga in riga mentre crea il prodotto cartesiano,registrando effettivamente la riga solo se il criterio e rispettato.

(Questo dipende chiaramente dal DBMS.)

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Questa che abbiamo ottenuto

πCapo(σEta<30(Impiegati onMatricola=Impiegato Supervisione))

e gia un’espressione migliore, perche un equi-join di solito eimplementato internamente in modo piu efficiente di un prodottocartesiano seguito da una selezione.

Ad esempio il DBMS non ha bisogno di immagazzinare tutti i datidel prodotto cartesiano prima di iniziare a fare la selezione, puoapplicarla di riga in riga mentre crea il prodotto cartesiano,registrando effettivamente la riga solo se il criterio e rispettato.(Questo dipende chiaramente dal DBMS.)

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Continuiamo da:

πCapo(σEta<30(Impiegati onMatricola=Impiegato Supervisione))

Notiamo che nell’equi-join:

ci interessano comunque solo gli impiegati con meno di 30anni,

solo l’attributo Matricola viene coinvolto nell’equi-join,

e poi nessun attributo di Impiegati rimane dopo laproiezione finale.

Usiamo allora l’ultima equivalenza vista, ottenendo:

πCapo(πMatricola(σEta<30(Impiegati)) onMatricola=Impiegato

Supervisione)

Questa espressione e ancora migliore: l’equi-join viene fatto surelazioni probabilmente piu piccole di quelle di partenza.

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Continuiamo da:

πCapo(σEta<30(Impiegati onMatricola=Impiegato Supervisione))

Notiamo che nell’equi-join:

ci interessano comunque solo gli impiegati con meno di 30anni,

solo l’attributo Matricola viene coinvolto nell’equi-join,

e poi nessun attributo di Impiegati rimane dopo laproiezione finale.

Usiamo allora l’ultima equivalenza vista, ottenendo:

πCapo(πMatricola(σEta<30(Impiegati)) onMatricola=Impiegato

Supervisione)

Questa espressione e ancora migliore: l’equi-join viene fatto surelazioni probabilmente piu piccole di quelle di partenza.

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Continuiamo da:

πCapo(σEta<30(Impiegati onMatricola=Impiegato Supervisione))

Notiamo che nell’equi-join:

ci interessano comunque solo gli impiegati con meno di 30anni,

solo l’attributo Matricola viene coinvolto nell’equi-join,

e poi nessun attributo di Impiegati rimane dopo laproiezione finale.

Usiamo allora l’ultima equivalenza vista, ottenendo:

πCapo(πMatricola(σEta<30(Impiegati)) onMatricola=Impiegato

Supervisione)

Questa espressione e ancora migliore: l’equi-join viene fatto surelazioni probabilmente piu piccole di quelle di partenza.

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Continuiamo da:

πCapo(σEta<30(Impiegati onMatricola=Impiegato Supervisione))

Notiamo che nell’equi-join:

ci interessano comunque solo gli impiegati con meno di 30anni,

solo l’attributo Matricola viene coinvolto nell’equi-join,

e poi nessun attributo di Impiegati rimane dopo laproiezione finale.

Usiamo allora l’ultima equivalenza vista, ottenendo:

πCapo(πMatricola(σEta<30(Impiegati)) onMatricola=Impiegato

Supervisione)

Questa espressione e ancora migliore: l’equi-join viene fatto surelazioni probabilmente piu piccole di quelle di partenza.

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Continuiamo da:

πCapo(σEta<30(Impiegati onMatricola=Impiegato Supervisione))

Notiamo che nell’equi-join:

ci interessano comunque solo gli impiegati con meno di 30anni,

solo l’attributo Matricola viene coinvolto nell’equi-join,

e poi nessun attributo di Impiegati rimane dopo laproiezione finale.

Usiamo allora l’ultima equivalenza vista, ottenendo:

πCapo(πMatricola(σEta<30(Impiegati)) onMatricola=Impiegato

Supervisione)

Questa espressione e ancora migliore: l’equi-join viene fatto surelazioni probabilmente piu piccole di quelle di partenza.

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Continuiamo da:

πCapo(σEta<30(Impiegati onMatricola=Impiegato Supervisione))

Notiamo che nell’equi-join:

ci interessano comunque solo gli impiegati con meno di 30anni,

solo l’attributo Matricola viene coinvolto nell’equi-join,

e poi nessun attributo di Impiegati rimane dopo laproiezione finale.

Usiamo allora l’ultima equivalenza vista, ottenendo:

πCapo(πMatricola(σEta<30(Impiegati)) onMatricola=Impiegato

Supervisione)

Questa espressione e ancora migliore: l’equi-join viene fatto surelazioni probabilmente piu piccole di quelle di partenza.

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Vediamo altre equivalenze.

Distributivita della selezione rispetto all’unione:

σC (R1 ∪ R2) ≡ σC (R1) ∪ σC (R2)

e lo stesso con intersezione (∩) e differenza (r).

Distributivita della proiezione rispetto all’unione:

πX (R1 ∪ R2) ≡ πX (R1) ∪ πX (R2)

Attenzione: La proiezione non e distributiva rispetto alladifferenza, ne all’intersezione! Cioe in generale

πX (R1 ∩ R2) 6≡ πX (R1) ∩ πX (R2),πX (R1 r R2) 6≡ πX (R1) r πX (R2).

Ad esempio, se una riga r1 di R1 coincide con una riga r2 di R2 suX , ma r1 ed r2 non coincidono su altri attributi, allora r1 comparirain πX (R1 r R2) ma non in πX (R1) r πX (R2).

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Vediamo altre equivalenze.

Distributivita della selezione rispetto all’unione:

σC (R1 ∪ R2) ≡ σC (R1) ∪ σC (R2)

e lo stesso con intersezione (∩) e differenza (r).

Distributivita della proiezione rispetto all’unione:

πX (R1 ∪ R2) ≡ πX (R1) ∪ πX (R2)

Attenzione: La proiezione non e distributiva rispetto alladifferenza, ne all’intersezione! Cioe in generale

πX (R1 ∩ R2) 6≡ πX (R1) ∩ πX (R2),πX (R1 r R2) 6≡ πX (R1) r πX (R2).

Ad esempio, se una riga r1 di R1 coincide con una riga r2 di R2 suX , ma r1 ed r2 non coincidono su altri attributi, allora r1 comparirain πX (R1 r R2) ma non in πX (R1) r πX (R2).

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Vediamo altre equivalenze.

Distributivita della selezione rispetto all’unione:

σC (R1 ∪ R2) ≡ σC (R1) ∪ σC (R2)

e lo stesso con intersezione (∩) e differenza (r).

Distributivita della proiezione rispetto all’unione:

πX (R1 ∪ R2) ≡ πX (R1) ∪ πX (R2)

Attenzione: La proiezione non e distributiva rispetto alladifferenza, ne all’intersezione!

Cioe in generale

πX (R1 ∩ R2) 6≡ πX (R1) ∩ πX (R2),πX (R1 r R2) 6≡ πX (R1) r πX (R2).

Ad esempio, se una riga r1 di R1 coincide con una riga r2 di R2 suX , ma r1 ed r2 non coincidono su altri attributi, allora r1 comparirain πX (R1 r R2) ma non in πX (R1) r πX (R2).

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Vediamo altre equivalenze.

Distributivita della selezione rispetto all’unione:

σC (R1 ∪ R2) ≡ σC (R1) ∪ σC (R2)

e lo stesso con intersezione (∩) e differenza (r).

Distributivita della proiezione rispetto all’unione:

πX (R1 ∪ R2) ≡ πX (R1) ∪ πX (R2)

Attenzione: La proiezione non e distributiva rispetto alladifferenza, ne all’intersezione! Cioe in generale

πX (R1 ∩ R2) 6≡ πX (R1) ∩ πX (R2),πX (R1 r R2) 6≡ πX (R1) r πX (R2).

Ad esempio, se una riga r1 di R1 coincide con una riga r2 di R2 suX , ma r1 ed r2 non coincidono su altri attributi, allora r1 comparirain πX (R1 r R2) ma non in πX (R1) r πX (R2).

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Vediamo altre equivalenze.

Distributivita della selezione rispetto all’unione:

σC (R1 ∪ R2) ≡ σC (R1) ∪ σC (R2)

e lo stesso con intersezione (∩) e differenza (r).

Distributivita della proiezione rispetto all’unione:

πX (R1 ∪ R2) ≡ πX (R1) ∪ πX (R2)

Attenzione: La proiezione non e distributiva rispetto alladifferenza, ne all’intersezione! Cioe in generale

πX (R1 ∩ R2) 6≡ πX (R1) ∩ πX (R2),πX (R1 r R2) 6≡ πX (R1) r πX (R2).

Ad esempio, se una riga r1 di R1 coincide con una riga r2 di R2 suX , ma r1 ed r2 non coincidono su altri attributi,

allora r1 comparirain πX (R1 r R2) ma non in πX (R1) r πX (R2).

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Vediamo altre equivalenze.

Distributivita della selezione rispetto all’unione:

σC (R1 ∪ R2) ≡ σC (R1) ∪ σC (R2)

e lo stesso con intersezione (∩) e differenza (r).

Distributivita della proiezione rispetto all’unione:

πX (R1 ∪ R2) ≡ πX (R1) ∪ πX (R2)

Attenzione: La proiezione non e distributiva rispetto alladifferenza, ne all’intersezione! Cioe in generale

πX (R1 ∩ R2) 6≡ πX (R1) ∩ πX (R2),πX (R1 r R2) 6≡ πX (R1) r πX (R2).

Ad esempio, se una riga r1 di R1 coincide con una riga r2 di R2 suX , ma r1 ed r2 non coincidono su altri attributi, allora r1 comparirain πX (R1 r R2) ma non in πX (R1) r πX (R2).

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Infine:

la selezione con piu criteri, legati logicamente con AND, OR,NOT, e legata agli operatori insiemistici:

σC1 OR C2(R) ≡ σC1(R) ∪ σC2(R)

σC1 AND C2(R) ≡ σC1(R) ∩ σC2(R)

σC1 AND NOT C2(R) ≡ σC1(R) r σC2(R)

l’unione e l’intersezione sono commutative ed associative,

distributivita del join rispetto all’unione:

R on (R1 ∪ R2) = (R on R1) ∪ (R on R2)

il theta-join e l’equi-join non sono associativi!

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Infine:

la selezione con piu criteri, legati logicamente con AND, OR,NOT, e legata agli operatori insiemistici:

σC1 OR C2(R) ≡ σC1(R) ∪ σC2(R)

σC1 AND C2(R) ≡ σC1(R) ∩ σC2(R)

σC1 AND NOT C2(R) ≡ σC1(R) r σC2(R)

l’unione e l’intersezione sono commutative ed associative,

distributivita del join rispetto all’unione:

R on (R1 ∪ R2) = (R on R1) ∪ (R on R2)

il theta-join e l’equi-join non sono associativi!

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Infine:

la selezione con piu criteri, legati logicamente con AND, OR,NOT, e legata agli operatori insiemistici:

σC1 OR C2(R) ≡ σC1(R) ∪ σC2(R)

σC1 AND C2(R) ≡ σC1(R) ∩ σC2(R)

σC1 AND NOT C2(R) ≡ σC1(R) r σC2(R)

l’unione e l’intersezione sono commutative ed associative,

distributivita del join rispetto all’unione:

R on (R1 ∪ R2) = (R on R1) ∪ (R on R2)

il theta-join e l’equi-join non sono associativi!

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Infine:

la selezione con piu criteri, legati logicamente con AND, OR,NOT, e legata agli operatori insiemistici:

σC1 OR C2(R) ≡ σC1(R) ∪ σC2(R)

σC1 AND C2(R) ≡ σC1(R) ∩ σC2(R)

σC1 AND NOT C2(R) ≡ σC1(R) r σC2(R)

l’unione e l’intersezione sono commutative ed associative,

distributivita del join rispetto all’unione:

R on (R1 ∪ R2) = (R on R1) ∪ (R on R2)

il theta-join e l’equi-join non sono associativi!

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Infine:

la selezione con piu criteri, legati logicamente con AND, OR,NOT, e legata agli operatori insiemistici:

σC1 OR C2(R) ≡ σC1(R) ∪ σC2(R)

σC1 AND C2(R) ≡ σC1(R) ∩ σC2(R)

σC1 AND NOT C2(R) ≡ σC1(R) r σC2(R)

l’unione e l’intersezione sono commutative ed associative,

distributivita del join rispetto all’unione:

R on (R1 ∪ R2) = (R on R1) ∪ (R on R2)

il theta-join e l’equi-join non sono associativi!

Guido Pezzini Basi di Dati I

Equivalenza di espressioni algebriche

Infine:

la selezione con piu criteri, legati logicamente con AND, OR,NOT, e legata agli operatori insiemistici:

σC1 OR C2(R) ≡ σC1(R) ∪ σC2(R)

σC1 AND C2(R) ≡ σC1(R) ∩ σC2(R)

σC1 AND NOT C2(R) ≡ σC1(R) r σC2(R)

l’unione e l’intersezione sono commutative ed associative,

distributivita del join rispetto all’unione:

R on (R1 ∪ R2) = (R on R1) ∪ (R on R2)

il theta-join e l’equi-join non sono associativi!

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Finora abbiamo visto gli operatori dell’algebra relazionaleipotizzando che non siano presenti valori NULL.

In pratica pero tali valori vanno ammessi, ed e necessario che ilcomportamento del DBMS in loro presenza sia ben specificato, ades. di fronte ad operazioni di confronto.Esempio:Persone

Nome Eta

Rossi 31Neri 28

Bianchi NULL

Come interpretare l’espressione

Eta ≥ 30

in questa relazione?

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Finora abbiamo visto gli operatori dell’algebra relazionaleipotizzando che non siano presenti valori NULL.

In pratica pero tali valori vanno ammessi, ed e necessario che ilcomportamento del DBMS in loro presenza sia ben specificato,

ades. di fronte ad operazioni di confronto.Esempio:Persone

Nome Eta

Rossi 31Neri 28

Bianchi NULL

Come interpretare l’espressione

Eta ≥ 30

in questa relazione?

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Finora abbiamo visto gli operatori dell’algebra relazionaleipotizzando che non siano presenti valori NULL.

In pratica pero tali valori vanno ammessi, ed e necessario che ilcomportamento del DBMS in loro presenza sia ben specificato, ades. di fronte ad operazioni di confronto.

Esempio:Persone

Nome Eta

Rossi 31Neri 28

Bianchi NULL

Come interpretare l’espressione

Eta ≥ 30

in questa relazione?

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Finora abbiamo visto gli operatori dell’algebra relazionaleipotizzando che non siano presenti valori NULL.

In pratica pero tali valori vanno ammessi, ed e necessario che ilcomportamento del DBMS in loro presenza sia ben specificato, ades. di fronte ad operazioni di confronto.Esempio:Persone

Nome Eta

Rossi 31Neri 28

Bianchi NULL

Come interpretare l’espressione

Eta ≥ 30

in questa relazione?

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Finora abbiamo visto gli operatori dell’algebra relazionaleipotizzando che non siano presenti valori NULL.

In pratica pero tali valori vanno ammessi, ed e necessario che ilcomportamento del DBMS in loro presenza sia ben specificato, ades. di fronte ad operazioni di confronto.Esempio:Persone

Nome Eta

Rossi 31Neri 28

Bianchi NULL

Come interpretare l’espressione

Eta ≥ 30

in questa relazione?

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Vediamo vari modi di dare una risposta.

In ogni caso partiamo dal presupposto che NON consideriamo ladisuguaglianza

NULL ≥ 30

come VERA, visto che nella relazione il dato NULL nel dominioEta vuol dire chiaramente che l’eta della persona non e nota,quindi non si puo affermare con certezza che sia ≥ 30.

Esempio:Una selezione sceglie le righe su cui il criterio e VERO.Allora qui abbiamoσEta≥30(Persone)

Nome Eta

Rossi 31Neri 28

Bianchi NULL

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Vediamo vari modi di dare una risposta.

In ogni caso partiamo dal presupposto che NON consideriamo ladisuguaglianza

NULL ≥ 30

come VERA,

visto che nella relazione il dato NULL nel dominioEta vuol dire chiaramente che l’eta della persona non e nota,quindi non si puo affermare con certezza che sia ≥ 30.

Esempio:Una selezione sceglie le righe su cui il criterio e VERO.Allora qui abbiamoσEta≥30(Persone)

Nome Eta

Rossi 31Neri 28

Bianchi NULL

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Vediamo vari modi di dare una risposta.

In ogni caso partiamo dal presupposto che NON consideriamo ladisuguaglianza

NULL ≥ 30

come VERA, visto che nella relazione il dato NULL nel dominioEta vuol dire chiaramente che l’eta della persona non e nota,quindi non si puo affermare con certezza che sia ≥ 30.

Esempio:Una selezione sceglie le righe su cui il criterio e VERO.Allora qui abbiamoσEta≥30(Persone)

Nome Eta

Rossi 31Neri 28

Bianchi NULL

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Vediamo vari modi di dare una risposta.

In ogni caso partiamo dal presupposto che NON consideriamo ladisuguaglianza

NULL ≥ 30

come VERA, visto che nella relazione il dato NULL nel dominioEta vuol dire chiaramente che l’eta della persona non e nota,quindi non si puo affermare con certezza che sia ≥ 30.

Esempio:Una selezione sceglie le righe su cui il criterio e VERO.Allora qui abbiamoσEta≥30(Persone)

Nome Eta

Rossi 31Neri 28

Bianchi NULL

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Vediamo vari modi di dare una risposta.

In ogni caso partiamo dal presupposto che NON consideriamo ladisuguaglianza

NULL ≥ 30

come VERA, visto che nella relazione il dato NULL nel dominioEta vuol dire chiaramente che l’eta della persona non e nota,quindi non si puo affermare con certezza che sia ≥ 30.

Esempio:Una selezione sceglie le righe su cui il criterio e VERO.Allora qui abbiamoσEta≥30(Persone)

Nome Eta

Rossi 31Neri 28

Bianchi NULL

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Vediamo vari modi di dare una risposta.

In ogni caso partiamo dal presupposto che NON consideriamo ladisuguaglianza

NULL ≥ 30

come VERA, visto che nella relazione il dato NULL nel dominioEta vuol dire chiaramente che l’eta della persona non e nota,quindi non si puo affermare con certezza che sia ≥ 30.

Esempio:Una selezione sceglie le righe su cui il criterio e VERO.Allora qui abbiamoσEta≥30(Persone)

Nome Eta

Rossi 31Neri 28

Bianchi NULL

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Vediamo vari modi di dare una risposta.

In ogni caso partiamo dal presupposto che NON consideriamo ladisuguaglianza

NULL ≥ 30

come VERA, visto che nella relazione il dato NULL nel dominioEta vuol dire chiaramente che l’eta della persona non e nota,quindi non si puo affermare con certezza che sia ≥ 30.

Esempio:Una selezione sceglie le righe su cui il criterio e VERO.Allora qui abbiamoσEta≥30(Persone)

Nome Eta

Rossi 31

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Questo presupposto e ragionevole, pero va formalizzatoprecisamente per evitare risultati inaspettati.

Esempio: La relazione

σEta≥30(Persone) ∪ σEta<30(Persone)

dovrebbe essere uguale a...Persone, ma non lo e in presenza divalori NULL!Infatti abbiamo

σEta≥30(Persone) ∪ σEta<30(Persone)

Nome Eta

Rossi 31Neri 28

Bianchi NULL

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Questo presupposto e ragionevole, pero va formalizzatoprecisamente per evitare risultati inaspettati.Esempio: La relazione

σEta≥30(Persone) ∪ σEta<30(Persone)

dovrebbe essere uguale a...

Persone, ma non lo e in presenza divalori NULL!Infatti abbiamo

σEta≥30(Persone) ∪ σEta<30(Persone)

Nome Eta

Rossi 31Neri 28

Bianchi NULL

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Questo presupposto e ragionevole, pero va formalizzatoprecisamente per evitare risultati inaspettati.Esempio: La relazione

σEta≥30(Persone) ∪ σEta<30(Persone)

dovrebbe essere uguale a...Persone

, ma non lo e in presenza divalori NULL!Infatti abbiamo

σEta≥30(Persone) ∪ σEta<30(Persone)

Nome Eta

Rossi 31Neri 28

Bianchi NULL

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Questo presupposto e ragionevole, pero va formalizzatoprecisamente per evitare risultati inaspettati.Esempio: La relazione

σEta≥30(Persone) ∪ σEta<30(Persone)

dovrebbe essere uguale a...Persone, ma non lo e in presenza divalori NULL!

Infatti abbiamo

σEta≥30(Persone) ∪ σEta<30(Persone)

Nome Eta

Rossi 31Neri 28

Bianchi NULL

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Questo presupposto e ragionevole, pero va formalizzatoprecisamente per evitare risultati inaspettati.Esempio: La relazione

σEta≥30(Persone) ∪ σEta<30(Persone)

dovrebbe essere uguale a...Persone, ma non lo e in presenza divalori NULL!Infatti abbiamo

σEta≥30(Persone) ∪ σEta<30(Persone)

Nome Eta

Rossi 31Neri 28

Bianchi NULL

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Un modo di formalizzare la nostra scelta e di usare una logica a trevalori:

vero,

falso,

sconosciuto.

Gli operatori logici NOT, AND, OR con questi tre valori sono iseguenti:

NOT

V FF VS S

AND V F S

V V F SF F F FS S F S

OR V F S

V V V VF V F SS V S S

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Un modo di formalizzare la nostra scelta e di usare una logica a trevalori:

vero,

falso,

sconosciuto.

Gli operatori logici NOT, AND, OR con questi tre valori sono iseguenti:

NOT

V FF VS S

AND V F S

V V F SF F F FS S F S

OR V F S

V V V VF V F SS V S S

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Un modo di formalizzare la nostra scelta e di usare una logica a trevalori:

vero,

falso,

sconosciuto.

Gli operatori logici NOT, AND, OR con questi tre valori sono iseguenti:

NOT

V FF VS S

AND V F S

V V F SF F F FS S F S

OR V F S

V V V VF V F SS V S S

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Un modo di formalizzare la nostra scelta e di usare una logica a trevalori:

vero,

falso,

sconosciuto.

Gli operatori logici NOT, AND, OR con questi tre valori sono iseguenti:

NOT

V FF VS S

AND V F S

V V F SF F F FS S F S

OR V F S

V V V VF V F SS V S S

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Un modo di formalizzare la nostra scelta e di usare una logica a trevalori:

vero,

falso,

sconosciuto.

Gli operatori logici NOT, AND, OR con questi tre valori sono iseguenti:

NOT

V FF VS S

AND V F S

V V F SF F F FS S F S

OR V F S

V V V VF V F SS V S S

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Un modo di formalizzare la nostra scelta e di usare una logica a trevalori:

vero,

falso,

sconosciuto.

Gli operatori logici NOT, AND, OR con questi tre valori sono iseguenti:

NOT

V FF VS S

AND V F S

V V F SF F F FS S F S

OR V F S

V V V VF V F SS V S S

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Un modo di formalizzare la nostra scelta e di usare una logica a trevalori:

vero,

falso,

sconosciuto.

Gli operatori logici NOT, AND, OR con questi tre valori sono iseguenti:

NOT

V FF VS S

AND V F S

V V F SF F F FS S F S

OR V F S

V V V VF V F SS V S S

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Un modo di formalizzare la nostra scelta e di usare una logica a trevalori:

vero,

falso,

sconosciuto.

Gli operatori logici NOT, AND, OR con questi tre valori sono iseguenti:

NOT

V FF VS S

AND V F S

V V F SF F F FS S F S

OR V F S

V V V VF V F SS V S S

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Una logica a tre valori come questa puo essere usata per formularel’algebra relazionale con valori NULL in modo formalmentecorretto.

Ma non rende piu intuitivi risultati come l’esempio precedente: larelazione

σEta≥30(Persone) ∪ σEta<30(Persone)

rimane diversa da Persone.Con espressioni eventualmente molto piu complicate, il rischio diinserire operatori aspettandosi un risultato diverso e alto.

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Una logica a tre valori come questa puo essere usata per formularel’algebra relazionale con valori NULL in modo formalmentecorretto.Ma non rende piu intuitivi risultati come l’esempio precedente: larelazione

σEta≥30(Persone) ∪ σEta<30(Persone)

rimane diversa da Persone.

Con espressioni eventualmente molto piu complicate, il rischio diinserire operatori aspettandosi un risultato diverso e alto.

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Una logica a tre valori come questa puo essere usata per formularel’algebra relazionale con valori NULL in modo formalmentecorretto.Ma non rende piu intuitivi risultati come l’esempio precedente: larelazione

σEta≥30(Persone) ∪ σEta<30(Persone)

rimane diversa da Persone.Con espressioni eventualmente molto piu complicate, il rischio diinserire operatori aspettandosi un risultato diverso e alto.

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Una formalizzazione migliore (adottata in SQL) consiste nel

1 aggiungere gli operatori

IS NULL, IS NOT NULL,

2 considerare automaticamente FALSA ogni condizione logica secoinvolge dati NULL, come se si aggiungesse sempreimplicitamente “AND IS NOT NULL”.

Esempio: L’espressione

Eta ≥ 30

va letta come

(Eta ≥ 30) AND (Eta IS NOT NULL)

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Una formalizzazione migliore (adottata in SQL) consiste nel

1 aggiungere gli operatori

IS NULL, IS NOT NULL,

2 considerare automaticamente FALSA ogni condizione logica secoinvolge dati NULL, come se si aggiungesse sempreimplicitamente “AND IS NOT NULL”.

Esempio: L’espressione

Eta ≥ 30

va letta come

(Eta ≥ 30) AND (Eta IS NOT NULL)

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Una formalizzazione migliore (adottata in SQL) consiste nel

1 aggiungere gli operatori

IS NULL, IS NOT NULL,

2 considerare automaticamente FALSA ogni condizione logica secoinvolge dati NULL, come se si aggiungesse sempreimplicitamente “AND IS NOT NULL”.

Esempio: L’espressione

Eta ≥ 30

va letta come

(Eta ≥ 30) AND (Eta IS NOT NULL)

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Una formalizzazione migliore (adottata in SQL) consiste nel

1 aggiungere gli operatori

IS NULL, IS NOT NULL,

2 considerare automaticamente FALSA ogni condizione logica secoinvolge dati NULL, come se si aggiungesse sempreimplicitamente “AND IS NOT NULL”.

Esempio: L’espressione

Eta ≥ 30

va letta come

(Eta ≥ 30) AND (Eta IS NOT NULL)

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

In questo modo non sorprende che

σEta≥30(Persone) ∪ σEta<30(Persone)6=

Persone

perche in realta va letta come

σ Eta≥30AND

Eta IS NOT NULL

(Persone) ∪ σ Eta<30AND

Eta IS NOT NULL

(Persone)

6=Persone

Avremo invece

σEta≥30(Persone) ∪ σEta<30(Persone) ∪ σEta IS NULL(Persone)=

Persone

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

In questo modo non sorprende che

σEta≥30(Persone) ∪ σEta<30(Persone)6=

Persone

perche in realta va letta come

σ Eta≥30AND

Eta IS NOT NULL

(Persone) ∪ σ Eta<30AND

Eta IS NOT NULL

(Persone)

6=Persone

Avremo invece

σEta≥30(Persone) ∪ σEta<30(Persone) ∪ σEta IS NULL(Persone)=

Persone

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

In questo modo non sorprende che

σEta≥30(Persone) ∪ σEta<30(Persone)6=

Persone

perche in realta va letta come

σ Eta≥30AND

Eta IS NOT NULL

(Persone) ∪ σ Eta<30AND

Eta IS NOT NULL

(Persone)

6=Persone

Avremo invece

σEta≥30(Persone) ∪ σEta<30(Persone) ∪ σEta IS NULL(Persone)=

Persone

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

In questo modo non sorprende che

σEta≥30(Persone) ∪ σEta<30(Persone)6=

Persone

perche in realta va letta come

σ Eta≥30AND

Eta IS NOT NULL

(Persone) ∪ σ Eta<30AND

Eta IS NOT NULL

(Persone)

6=Persone

Avremo invece

σEta≥30(Persone) ∪ σEta<30(Persone) ∪ σEta IS NULL(Persone)=

Persone

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Discutiamo il comportamento dei singoli operatori che abbiamovisto, in presenza di valori NULL.

Attenzione: Unione, intersezione, differenza si comportano comeprima, cioe come se NULL fosse un valore come gli altri.

P QNome Eta

Rossi 31Neri 28

Bianchi NULL

Nome Eta

Rossi 31NULL 31

Bianchi NULL

P∪Q P∩Q PrQNome Eta

Rossi 31Neri 28

Bianchi NULLNULL 31

Nome Eta

Rossi 31Bianchi NULL

Nome Eta

Neri 28

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Discutiamo il comportamento dei singoli operatori che abbiamovisto, in presenza di valori NULL.Attenzione: Unione, intersezione, differenza si comportano comeprima,

cioe come se NULL fosse un valore come gli altri.

P QNome Eta

Rossi 31Neri 28

Bianchi NULL

Nome Eta

Rossi 31NULL 31

Bianchi NULL

P∪Q P∩Q PrQNome Eta

Rossi 31Neri 28

Bianchi NULLNULL 31

Nome Eta

Rossi 31Bianchi NULL

Nome Eta

Neri 28

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Discutiamo il comportamento dei singoli operatori che abbiamovisto, in presenza di valori NULL.Attenzione: Unione, intersezione, differenza si comportano comeprima, cioe come se NULL fosse un valore come gli altri.

P QNome Eta

Rossi 31Neri 28

Bianchi NULL

Nome Eta

Rossi 31NULL 31

Bianchi NULL

P∪Q P∩Q PrQNome Eta

Rossi 31Neri 28

Bianchi NULLNULL 31

Nome Eta

Rossi 31Bianchi NULL

Nome Eta

Neri 28

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Discutiamo il comportamento dei singoli operatori che abbiamovisto, in presenza di valori NULL.Attenzione: Unione, intersezione, differenza si comportano comeprima, cioe come se NULL fosse un valore come gli altri.

P QNome Eta

Rossi 31Neri 28

Bianchi NULL

Nome Eta

Rossi 31NULL 31

Bianchi NULL

P∪Q P∩Q PrQNome Eta

Rossi 31Neri 28

Bianchi NULLNULL 31

Nome Eta

Rossi 31Bianchi NULL

Nome Eta

Neri 28

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Discutiamo il comportamento dei singoli operatori che abbiamovisto, in presenza di valori NULL.Attenzione: Unione, intersezione, differenza si comportano comeprima, cioe come se NULL fosse un valore come gli altri.

P QNome Eta

Rossi 31Neri 28

Bianchi NULL

Nome Eta

Rossi 31NULL 31

Bianchi NULL

P∪Q

P∩Q PrQNome Eta

Rossi 31Neri 28

Bianchi NULLNULL 31

Nome Eta

Rossi 31Bianchi NULL

Nome Eta

Neri 28

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Discutiamo il comportamento dei singoli operatori che abbiamovisto, in presenza di valori NULL.Attenzione: Unione, intersezione, differenza si comportano comeprima, cioe come se NULL fosse un valore come gli altri.

P QNome Eta

Rossi 31Neri 28

Bianchi NULL

Nome Eta

Rossi 31NULL 31

Bianchi NULL

P∪Q

P∩Q PrQ

Nome Eta

Rossi 31Neri 28

Bianchi NULLNULL 31

Nome Eta

Rossi 31Bianchi NULL

Nome Eta

Neri 28

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Discutiamo il comportamento dei singoli operatori che abbiamovisto, in presenza di valori NULL.Attenzione: Unione, intersezione, differenza si comportano comeprima, cioe come se NULL fosse un valore come gli altri.

P QNome Eta

Rossi 31Neri 28

Bianchi NULL

Nome Eta

Rossi 31NULL 31

Bianchi NULL

P∪Q P∩Q

PrQ

Nome Eta

Rossi 31Neri 28

Bianchi NULLNULL 31

Nome Eta

Rossi 31Bianchi NULL

Nome Eta

Neri 28

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Discutiamo il comportamento dei singoli operatori che abbiamovisto, in presenza di valori NULL.Attenzione: Unione, intersezione, differenza si comportano comeprima, cioe come se NULL fosse un valore come gli altri.

P QNome Eta

Rossi 31Neri 28

Bianchi NULL

Nome Eta

Rossi 31NULL 31

Bianchi NULL

P∪Q P∩Q

PrQ

Nome Eta

Rossi 31Neri 28

Bianchi NULLNULL 31

Nome Eta

Rossi 31Bianchi NULL

Nome Eta

Neri 28

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Discutiamo il comportamento dei singoli operatori che abbiamovisto, in presenza di valori NULL.Attenzione: Unione, intersezione, differenza si comportano comeprima, cioe come se NULL fosse un valore come gli altri.

P QNome Eta

Rossi 31Neri 28

Bianchi NULL

Nome Eta

Rossi 31NULL 31

Bianchi NULL

P∪Q P∩Q PrQNome Eta

Rossi 31Neri 28

Bianchi NULLNULL 31

Nome Eta

Rossi 31Bianchi NULL

Nome Eta

Neri 28

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Discutiamo il comportamento dei singoli operatori che abbiamovisto, in presenza di valori NULL.Attenzione: Unione, intersezione, differenza si comportano comeprima, cioe come se NULL fosse un valore come gli altri.

P QNome Eta

Rossi 31Neri 28

Bianchi NULL

Nome Eta

Rossi 31NULL 31

Bianchi NULL

P∪Q P∩Q PrQNome Eta

Rossi 31Neri 28

Bianchi NULLNULL 31

Nome Eta

Rossi 31Bianchi NULL

Nome Eta

Neri 28

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

La proiezione si comporta allo stesso modo:

P πEta(P)Nome Eta

Rossi 31Neri NULL

Bianchi NULL

Eta

31NULL

E la selezione si comporta come abbiamo visto (aggiungendo cioesempre “AND IS NOT NULL”).

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

La proiezione si comporta allo stesso modo:P

πEta(P)

Nome Eta

Rossi 31Neri NULL

Bianchi NULL

Eta

31NULL

E la selezione si comporta come abbiamo visto (aggiungendo cioesempre “AND IS NOT NULL”).

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

La proiezione si comporta allo stesso modo:P πEta(P)

Nome Eta

Rossi 31Neri NULL

Bianchi NULL

Eta

31NULL

E la selezione si comporta come abbiamo visto (aggiungendo cioesempre “AND IS NOT NULL”).

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

La proiezione si comporta allo stesso modo:P πEta(P)

Nome Eta

Rossi 31Neri NULL

Bianchi NULL

Eta

31NULL

E la selezione si comporta come abbiamo visto (aggiungendo cioesempre “AND IS NOT NULL”).

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

La proiezione si comporta allo stesso modo:P πEta(P)

Nome Eta

Rossi 31Neri NULL

Bianchi NULL

Eta

31NULL

E la selezione si comporta come abbiamo visto

(aggiungendo cioesempre “AND IS NOT NULL”).

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

La proiezione si comporta allo stesso modo:P πEta(P)

Nome Eta

Rossi 31Neri NULL

Bianchi NULL

Eta

31NULL

E la selezione si comporta come abbiamo visto (aggiungendo cioesempre “AND IS NOT NULL”).

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Il join

e uguale ad un equi-join dove si richiede uguaglianza su tuttigli attributi comuni. Quindi si aggiunge come sopra “AND IS NOTNULL” quando si confrontano le righe sulle colonne comuni.

La conseguenza e che due righe non sono compatibili se hannovalori NULL su colonne comuni, anche se coincidono su tutti ivalori noti.

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Il join e uguale ad un equi-join dove si richiede uguaglianza su tuttigli attributi comuni.

Quindi si aggiunge come sopra “AND IS NOTNULL” quando si confrontano le righe sulle colonne comuni.

La conseguenza e che due righe non sono compatibili se hannovalori NULL su colonne comuni, anche se coincidono su tutti ivalori noti.

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Il join e uguale ad un equi-join dove si richiede uguaglianza su tuttigli attributi comuni. Quindi si aggiunge come sopra “AND IS NOTNULL” quando si confrontano le righe sulle colonne comuni.

La conseguenza e che due righe non sono compatibili se hannovalori NULL su colonne comuni, anche se coincidono su tutti ivalori noti.

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Il join e uguale ad un equi-join dove si richiede uguaglianza su tuttigli attributi comuni. Quindi si aggiunge come sopra “AND IS NOTNULL” quando si confrontano le righe sulle colonne comuni.

La conseguenza e che due righe non sono compatibili se hannovalori NULL su colonne comuni, anche se coincidono su tutti ivalori noti.

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Esempio:Infrazioni

Codice Data Agente Prov. Numero

143886 20.1.2017 277 RM 4E5432366521 4.3.2017 102 NULL 8D1526

VeicoliProv. Numero Marca

FI 2B5881 FordRM 4E5432 FiatMI 8D1526 Audi

InfrazionionVeicoliCodice Data Agente Prov. Numero Marca

143886 20.1.2017 277 RM 4E5432 Fiat

366521 4.3.2017 102 MI ? NULL 8D1526 Audi

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Esempio:Infrazioni

Codice Data Agente Prov. Numero

143886 20.1.2017 277 RM 4E5432366521 4.3.2017 102 NULL 8D1526

VeicoliProv. Numero Marca

FI 2B5881 FordRM 4E5432 FiatMI 8D1526 Audi

InfrazionionVeicoli

Codice Data Agente Prov. Numero Marca

143886 20.1.2017 277 RM 4E5432 Fiat

366521 4.3.2017 102 MI ? NULL 8D1526 Audi

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Esempio:Infrazioni

Codice Data Agente Prov. Numero

143886 20.1.2017 277 RM 4E5432366521 4.3.2017 102 NULL 8D1526

VeicoliProv. Numero Marca

FI 2B5881 FordRM 4E5432 FiatMI 8D1526 Audi

InfrazionionVeicoliCodice Data Agente Prov. Numero Marca

143886 20.1.2017 277 RM 4E5432 Fiat

366521 4.3.2017 102 MI ? NULL 8D1526 Audi

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Esempio:Infrazioni

Codice Data Agente Prov. Numero

143886 20.1.2017 277 RM 4E5432366521 4.3.2017 102 NULL 8D1526

VeicoliProv. Numero Marca

FI 2B5881 FordRM 4E5432 FiatMI 8D1526 Audi

InfrazionionVeicoliCodice Data Agente Prov. Numero Marca

143886 20.1.2017 277 RM 4E5432 Fiat366521 4.3.2017 102

MI ? NULL

8D1526 Audi

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Esempio:Infrazioni

Codice Data Agente Prov. Numero

143886 20.1.2017 277 RM 4E5432366521 4.3.2017 102 NULL 8D1526

VeicoliProv. Numero Marca

FI 2B5881 FordRM 4E5432 FiatMI 8D1526 Audi

InfrazionionVeicoliCodice Data Agente Prov. Numero Marca

143886 20.1.2017 277 RM 4E5432 Fiat366521 4.3.2017 102 MI ? NULL 8D1526 Audi

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Esempio:Infrazioni

Codice Data Agente Prov. Numero

143886 20.1.2017 277 RM 4E5432366521 4.3.2017 102 NULL 8D1526

VeicoliProv. Numero Marca

FI 2B5881 FordRM 4E5432 FiatMI 8D1526 Audi

InfrazionionVeicoliCodice Data Agente Prov. Numero Marca

143886 20.1.2017 277 RM 4E5432 Fiat366521 4.3.2017 102 MI ? NULL 8D1526 Audi

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Esempio:Infrazioni

Codice Data Agente Prov. Numero

143886 20.1.2017 277 RM 4E5432366521 4.3.2017 102 NULL 8D1526

VeicoliProv. Numero Marca

FI 2B5881 FordRM 4E5432 FiatMI 8D1526 Audi

InfrazionionVeicoliCodice Data Agente Prov. Numero Marca

143886 20.1.2017 277 RM 4E5432 Fiat

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Attenzione: Con valori NULL, il join di due relazioni con gli stessiattributi non e uguale alla loro intersezione!

Esempio:P Q

Nome Eta

Rossi 31Neri 28

Bianchi NULL

Nome Eta

Rossi 31NULL 31

Bianchi NULL

P∩Q PonQNome Eta

Rossi 31Bianchi NULL

Nome Eta

Rossi 31

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Attenzione: Con valori NULL, il join di due relazioni con gli stessiattributi non e uguale alla loro intersezione!Esempio:P Q

Nome Eta

Rossi 31Neri 28

Bianchi NULL

Nome Eta

Rossi 31NULL 31

Bianchi NULL

P∩Q PonQNome Eta

Rossi 31Bianchi NULL

Nome Eta

Rossi 31

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Attenzione: Con valori NULL, il join di due relazioni con gli stessiattributi non e uguale alla loro intersezione!Esempio:P Q

Nome Eta

Rossi 31Neri 28

Bianchi NULL

Nome Eta

Rossi 31NULL 31

Bianchi NULL

P∩Q

PonQNome Eta

Rossi 31Bianchi NULL

Nome Eta

Rossi 31

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Attenzione: Con valori NULL, il join di due relazioni con gli stessiattributi non e uguale alla loro intersezione!Esempio:P Q

Nome Eta

Rossi 31Neri 28

Bianchi NULL

Nome Eta

Rossi 31NULL 31

Bianchi NULL

P∩Q

PonQ

Nome Eta

Rossi 31Bianchi NULL

Nome Eta

Rossi 31

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Attenzione: Con valori NULL, il join di due relazioni con gli stessiattributi non e uguale alla loro intersezione!Esempio:P Q

Nome Eta

Rossi 31Neri 28

Bianchi NULL

Nome Eta

Rossi 31NULL 31

Bianchi NULL

P∩Q PonQNome Eta

Rossi 31Bianchi NULL

Nome Eta

Rossi 31

Guido Pezzini Basi di Dati I

Algebra relazionale con valori NULL

Attenzione: Con valori NULL, il join di due relazioni con gli stessiattributi non e uguale alla loro intersezione!Esempio:P Q

Nome Eta

Rossi 31Neri 28

Bianchi NULL

Nome Eta

Rossi 31NULL 31

Bianchi NULL

P∩Q PonQNome Eta

Rossi 31Bianchi NULL

Nome Eta

Rossi 31

Guido Pezzini Basi di Dati I