corso di basi di dati 4. algebra relazionale - mat.uniroma1.it · l’algebra relazionale e un...
TRANSCRIPT
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