31.05.2015 Views

Algebra Relazionale - Virgilio

Algebra Relazionale - Virgilio

Algebra Relazionale - Virgilio

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Algebra</strong> <strong>Relazionale</strong><br />

Linguaggi di query per database relazionali<br />

• Operazioni su database:<br />

– query: “legge" dati dal database<br />

– aggiornamenti: cambia il contenuto del database<br />

• Entrambe possono essere viste come trasformazioni da database a<br />

database<br />

• Strumenti teorici per lo studio dei linguaggi di query:<br />

– <strong>Algebra</strong> relazionale, un linguaggio “procedurale”<br />

– Calcolo relazionale, un linguaggio “dichiarativo”<br />

– Datalog, formalismo basato sulla programmazione logica<br />

• SQL: linguaggio esistente (con caratteristiche sia procedurali che<br />

dichiarative) ) per query e aggiornamenti<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 2


<strong>Algebra</strong> <strong>Relazionale</strong><br />

• Un insieme di operatori<br />

– Definiti su relazioni<br />

– Che producono relazioni<br />

e, quindi, possono essere combinati in espressioni complesse<br />

• Operatori<br />

– Unione, intersezione, differenza<br />

– Ridenominazione<br />

– Selezione<br />

– Proiezione<br />

– Join (naturale, prodotto cartesiano, theta join)<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 3<br />

Una visione d'insieme<br />

unarie<br />

ridenominazione<br />

selezione<br />

proiezione<br />

operazioni<br />

binarie<br />

unione<br />

intersezione<br />

differenza<br />

join<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 4


Unione, intersezione, differenza<br />

• Le relazioni sono insiemi; possiamo applicare le classiche<br />

operazioni insiemistiche<br />

• Attenzione! Vogliamo che I risultati siano relazioni (cioė,<br />

insiemi omogenei di tuple)<br />

• Quindi:<br />

– È necessario applicare gli operatori di unione,<br />

intersezione e differenza solamente su relazioni definite<br />

sugli stessi attributi<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 5<br />

Unione<br />

CICLISMO<br />

CF Cognome Eta`<br />

RSSX Rossi 20<br />

NRXY Neri 21<br />

VRDX Verdi 20<br />

CALCIO<br />

CF Cognome Eta`<br />

RSSY Rossi 20<br />

NRXY Neri 21<br />

VRDX Verdi 20<br />

Persone Persone che che hanno hanno<br />

l’hobby l’hobbydel del ciclismo ciclismo<br />

Persone Persone che che hanno hanno<br />

l’hobby l’hobbydel del ciclismo ciclismo<br />

oppure oppuredel del calcio calcio<br />

CICLISMO ∪ CALCIO<br />

CF Cognome Eta`<br />

RSSX Rossi 20<br />

NRXY Neri 21<br />

VRDX Verdi 20<br />

RSSY Rossi 20<br />

Persone Persone che che hanno hanno<br />

l’hobby l’hobbydel del calcio calcio<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 6


Intersezione<br />

CICLISMO<br />

CF Cognome Eta`<br />

RSSX Rossi 20<br />

NRXY Neri 21<br />

VRDX Verdi 20<br />

CALCIO<br />

CF Cognome Eta`<br />

RSSY Rossi 20<br />

NRXY Neri 21<br />

VRDX Verdi 20<br />

Persone Persone che che hanno hanno<br />

l’hobby l’hobbydel del ciclismo ciclismo<br />

Persone Persone che che hanno hanno<br />

entrambi entrambigli gli hobby hobby<br />

CICLISMO ∩ CALCIO<br />

CF Cognome Eta`<br />

NRXY Neri 21<br />

VRDX Verdi 20<br />

Persone Persone che che hanno hanno<br />

l’hobby l’hobbydel del calcio calcio<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 7<br />

CICLISMO<br />

CF Cognome Eta`<br />

RSSX Rossi 20<br />

NRXY Neri 21<br />

VRDX Verdi 20<br />

CALCIO<br />

CF Cognome Eta`<br />

RSSY Rossi 20<br />

NRXY Neri 21<br />

VRDX Verdi 20<br />

Differenza<br />

Persone Persone che che hanno hanno<br />

l’hobby l’hobbydel del ciclismo ciclismo<br />

CICLISMO - CALCIO<br />

Persone Persone che che hanno hanno<br />

solo solol’hobby l’hobby del del ciclismo ciclismo<br />

CF Cognome Eta`<br />

RSSX Rossi 20<br />

Differenza: Differenza: operazione operazione<br />

non non commutativa<br />

commutativa<br />

CALCIO - CICLISMO<br />

CF Cognome Eta`<br />

RSSY Rossi 20<br />

Persone Persone che che hanno hanno<br />

l’hobby l’hobbydel del calcio calcio<br />

Persone Persone che che hanno hanno<br />

solo solol’hobby l’hobby del del calcio calcio<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 8


Un semplice esempio di query<br />

CICLISMO<br />

Persone Persone che che hanno hanno<br />

l’hobby l’hobbydel del ciclismo ciclismo<br />

CF Cognome Eta`<br />

RSSX Rossi 20<br />

NRXY Neri 21<br />

VRDX Verdi 20<br />

Persone che che hanno<br />

solamente uno uno<br />

dei deidue due hobby<br />

CALCIO<br />

CF Cognome Eta`<br />

RSSY Rossi 20<br />

NRXY Neri 21<br />

VRDX Verdi 20<br />

Persone Persone che che hanno hanno<br />

l’hobby l’hobbydel del calcio calcio<br />

CICLISMO – CALCIO ∪ CALCIO – CICLISMO<br />

oppure<br />

CICLISMO ∪ CALCIO – CICLISMO ∩ CALCIO<br />

CF Cognome Eta`<br />

RSSX Rossi 20<br />

RSSY Rossi 20<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 9<br />

Cardinalità (numero delle tuple)<br />

Siano R e S due relazioni con cardinalità | R | e | S |<br />

Qual è la cardinalità delle relazioni<br />

R ∪ S<br />

| R ∪ S | = | R | + | S | - | R ∩ S |<br />

R - S<br />

| R - S | = | R | - | R ∩ S |<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 10


Un’unione significativa ma impossibile<br />

Tabella1<br />

Attore Età<br />

Paolo Rossi 34<br />

Mario Bianchi 35<br />

Carlo Verdi 43<br />

Tabella2<br />

Attrice Età<br />

Sara Blu 24<br />

Eva verdi 27<br />

Sara Neri 32<br />

Tabella1 ∪ Tabella2 ???<br />

• PROBLEMA: Attore e Attrice sono nomi differenti, ma<br />

entrambi denotano il fatto di far parte del cast<br />

• SOLUZIONE: rinominare gli attributi<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 11<br />

Ridenominazione<br />

• Operatore unario<br />

• Cambia il NOME degli attributi senza cambiarne il valore<br />

• Consente alcune operazioni di tipo insiemistico<br />

• Notazione:<br />

– ρ Y← X (r)<br />

• esempio:<br />

– ρ Genitore← Padre (Paternità)<br />

• Se sono coinvolti più attributi, l’ordine è importante:<br />

– ρ A,B ← C,D (Impiegati)<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 12


Esempio di ridenominazione<br />

Tabella1<br />

Attore Età<br />

Paolo Rossi 34<br />

Mario Bianchi 35<br />

Carlo Verdi 43<br />

ρ Nome ← Attore (Tabella1)<br />

Nome Età<br />

Paolo Rossi 34<br />

Mario Bianchi 35<br />

Carlo Verdi 43<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 13<br />

Ridenominazione ed Unione<br />

Tabella1 Attore Età<br />

Tabella2 Attrice Età<br />

Paolo Rossi 34<br />

Sara Blu 24<br />

Mario Bianchi 35<br />

Eva verdi 27<br />

Carlo Verdi 43<br />

Sara Neri 32<br />

ρ Nome ← Attore (Tabella1) ∪ ρ Nome ← Attrice. (Tabella2)<br />

Nome Età<br />

Paolo Rossi 34<br />

Mario Bianchi 35<br />

Carlo Verdi 43<br />

Sara Blu 24<br />

Eva Verdi 27<br />

Sara Neri 32<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 14


Ridenominazione ed Unione su più<br />

attributi<br />

Impiegati<br />

Cognome Agenzia Salario<br />

Rossi Roma 45<br />

Neri Milano 53<br />

Operai<br />

Cognome Fabbrica Stipendio<br />

Bianchi Roma 45<br />

Verdi Firenze 53<br />

ρ Sede,Paga ← Agenzia,Salario (Impiegati) ∪<br />

ρ Sede,Paga ← Fabbrica,Stipendio (Operai)<br />

Cognome Sede Paga<br />

Rossi Roma 45<br />

Neri Milano 53<br />

Bianchi Roma 45<br />

Verdi Firenze 53<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 15<br />

Selezione e Proiezione<br />

• Due operatori unari “ortogonali”<br />

– Selezione: decomposizione orizzontale<br />

– Proiezione: decomposizione verticale<br />

A B C<br />

Selezione<br />

A B C<br />

A B C<br />

Proiezione<br />

A B<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 16


Selezione<br />

• Produce relazioni<br />

– con lo stesso schema di quelle cui è applicata<br />

– con un sottoinsieme di tuple (QUELLE CHE<br />

SODDISFANO UNA CONDIZIONE)<br />

σNome=‘Paolo’ (r)<br />

• Notazione:<br />

– σ F (r)<br />

r<br />

Matricola Nome<br />

40445 Paolo<br />

43555 Piero<br />

43566 Piero<br />

• Semantica:<br />

– σ F (r) = { t | t ∈ r e t soddisfa F}<br />

Matricola<br />

Nome<br />

40445 Paolo<br />

σ Nome=‘Paolo’ (r)<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 17<br />

Selezione, esempio<br />

Studenti<br />

Matricola Nome Cognome CdL<br />

40445 Paolo Rossi Fisica<br />

43555 Piero Bianchi Matematica<br />

43566 Piero Verdi Informatica<br />

55655 Marco Rossi Lettere<br />

σ Nome = ‘Piero’ or CdL = ‘Fisica’ (Studenti)<br />

Matricola Nome Cognome CdL<br />

40445 Paolo Rossi Fisica<br />

43555 Piero Bianchi Matematica<br />

43566 Piero Verdi Informatica<br />

Studenti che hanno Nome Piero<br />

OPPURE<br />

frequentano il CdL di Fisica<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 18


Selezione, un altro esempio<br />

Studenti<br />

Matricola Nome Cognome CdL<br />

40445 Paolo Rossi Fisica<br />

43555 Piero Bianchi Matematica<br />

43566 Piero Verdi Informatica<br />

55655 Marco Rossi Lettere<br />

Studenti che se ferquentano matematica NON si chiamano ‘Piero’<br />

σ CdL = ‘Matematica’ ⇒ Nome ’Piero’ (Studenti)<br />

Studenti<br />

not(Nome = ‘Piero’ and CdL = ‘Matematica’)<br />

Nome ‘Piero’ or CdL ‘Matematica’<br />

Matricola Nome Cognome CdL<br />

40445 Paolo Rossi Fisica<br />

43566 Piero Verdi Informatica<br />

55655 Marco Rossi Lettere<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 19<br />

Proiezione<br />

• Produce relazioni<br />

– su un SOTTOINSIEME degli attributi della relazione<br />

cui è applicata<br />

– tuple ristrette al sottoinsieme<br />

• Notazione: sia una relazione r(X) e Y ⊆ X:<br />

– π Y (r)<br />

r Matricola Nome<br />

• Semantica:<br />

– π Y (r) = { t [Y] | t ∈ r }<br />

40445 Paolo<br />

43555 Piero<br />

43566 Piero<br />

π Matricola (r)<br />

Matricola<br />

40445<br />

43555<br />

π 43566<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> Matricola (r)<br />

20


Proiezione, esempio<br />

Studenti<br />

Cognome Nome CdL Univ<br />

Bianchi Carlo Fisica MI<br />

Rossi Marco Matematica TO<br />

Verdi Silvia Matematica MI<br />

Scuri Giorgio Biologia MI<br />

π Cognome,Nome (Studenti)<br />

Cognome<br />

Bianchi<br />

Rossi<br />

Verdi<br />

Scuri<br />

Nome<br />

Carlo<br />

Marco<br />

Silvia<br />

Giorgio<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 21<br />

Un esempio più difficile<br />

Studenti<br />

Cognome Nome CdL Univ<br />

Bianchi Carlo Fisica MI<br />

Rossi Marco Matematica TO<br />

Verdi Silvia Matematica MI<br />

Scuri Giorgio Biologia MI<br />

Cognome e nome degli Studenti MILANESI<br />

π Cognome,Nome σ Univ=‘MI’ (Studenti)<br />

Cognome Nome CdL Univ<br />

Bianchi Carlo Fisica MI<br />

Verdi Silvia Matematica MI<br />

Scuri Giorgio Biologia MI<br />

π<br />

Cognome<br />

Bianchi<br />

Verdi<br />

Scuri<br />

Nome<br />

Carlo<br />

Silvia<br />

Giorgio<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 22


Proiezione e selezione commutano tra loro ?<br />

Studenti<br />

Cognome Nome CdL Univ<br />

Bianchi Carlo Fisica MI<br />

Rossi Marco Matematica TO<br />

Verdi Silvia Matematica MI<br />

Scuri Giorgio Biologia MI<br />

Che tabella denota la seguente espressione<br />

π Cognome,Nome (Studenti)<br />

σ Univ=‘MI’ π Cognome,Nome (Studenti)<br />

Cognome<br />

Bianchi<br />

Rossi<br />

Verdi<br />

Scuri<br />

Nome<br />

Carlo<br />

Marco<br />

Silvia<br />

Giorgio<br />

σ Univ = ‘MI’<br />

Cognome<br />

Nome<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 23<br />

Studenti<br />

Problema inverso<br />

Cognome Nome CdL Univ<br />

Bianchi Carlo Fisica MI<br />

Rossi Marco Matematica TO<br />

Verdi Silvia Matematica MI<br />

Scuri Giorgio Biologia MI<br />

σ Cognome=‘Bianchi’ π Cognome,Nome,Univ σ CdL=‘Biologia’ or CdL=‘Fisica’ (Studenti) ?<br />

Cognome Nome Univ<br />

Bianchi Carlo MI<br />

Studenti che frequentano Biologia o Fisica, hanno cognome ‘Bianchi’<br />

e relativa Università d’appartenenza<br />

equivalentemente<br />

π Cognome,Nome,Univ σ (CdL=‘Biologia’ or CdL=‘Fisica’) and Cognome=‘Bianchi’ (Studenti)<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 24


Cardinalità delle Proiezioni<br />

Studenti<br />

Cognome Nome CdL Univ<br />

Rossi Marco Fisica MI<br />

Neri Massimo Fisica FI<br />

Viola Mary Matematica TO<br />

Blu Sara Matematica TO<br />

π Cognome, Nome (Studenti)<br />

Cognome<br />

Rossi<br />

Neri<br />

Viola<br />

Blu<br />

Nome<br />

Marco<br />

Massimo<br />

Mary<br />

Sara<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 25<br />

Cardinalità delle Proiezioni<br />

Studenti<br />

Cognome Nome CdL Univ<br />

Rossi Marco Fisica MI<br />

Neri Massimo Fisica FI<br />

Viola Mary Matematica TO<br />

Blu Sara Matematica TO<br />

π CdL, Univ (Studenti)<br />

CdL<br />

Fisica<br />

Fisica<br />

Matematica<br />

Univ<br />

MI<br />

FI<br />

TO<br />

Unione delle<br />

due tuple<br />

uguali<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 26


Cardinalità delle Proiezioni<br />

• Il risultato di una proiezione contiene AL PIÙ lo stesso<br />

numero di tuple di partenza<br />

• Alcune tuple, diventando uguali dopo la proiezione,<br />

collassano<br />

• π Y (r) contiene lo stesso numero di tuple di r se e solo se Y<br />

è una SUPERCHIAVE di r.<br />

– Ciò è vero anche quando Y è casualmente una<br />

superchiave per l’istanza r.<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 27<br />

Cardinalità delle Proiezioni, esempio<br />

Studenti<br />

Cognome Nome CdL Matricola<br />

Rossi Marco Fisica 305011<br />

Neri Massimo Fisica 345526<br />

Viola Mary Matematica 554363<br />

Blu Sara Matematica 565544<br />

π Cognome, Matricola π CdL π Cognome, Nome<br />

Cognome Matricola<br />

Rossi 305011<br />

Neri 345526<br />

Viola 554363<br />

Blu 565544<br />

| π | = | Studenti |<br />

CdL<br />

Fisica<br />

Matematica<br />

| π | < | Studenti |<br />

Cognome<br />

Rossi<br />

Neri<br />

Viola<br />

Blu<br />

Nome<br />

Marco<br />

Massimo<br />

Mary<br />

Sara<br />

| π | = | Studenti |<br />

casualmente<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 28


SQL si comporta diversamente sulle proiezioni !<br />

Diversamente dall’algebra relazionale, in SQL le proiezioni<br />

non collassano<br />

Studenti<br />

Cognome Nome CdL Matricola<br />

Rossi Marco Fisica 305011<br />

Neri Massimo Fisica 345526<br />

Viola Mary Matematica 554363<br />

Blu Sara Matematica 565544<br />

<strong>Algebra</strong> relazionale<br />

π CdL Studenti<br />

CdL<br />

Fisica<br />

Matematica<br />

Proiezione di CdL<br />

SQL<br />

Select CdL<br />

from Studenti<br />

CdL<br />

Fisica<br />

Fisica<br />

Matematica<br />

Matematica<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 29<br />

Join<br />

• Principale operatore dell’algebra relazionale<br />

• Consente di stabilire connessioni tra dati in tabelle<br />

differenti grazie al fatto che il modello relazionale è un<br />

modello “per valori”<br />

• Due forme principali di join:<br />

– join NATURALE: è importante il nome degli attributi<br />

– THETA join<br />

• Entrambi i tipi di join sono denotati dal simbolo<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 30


Un esempio di join NATURALE<br />

Studenti<br />

Nome Cognome Matricola<br />

Paolo Rossi 40445<br />

Piero Bianchi 43555<br />

Piero Verdi 43566<br />

Marco Rossi 55655<br />

Esami<br />

Matricola Materia Voto<br />

40445 Informatica 18<br />

55655 Fisica 24<br />

40445 Matematica 30<br />

43555 Algoritmi 27<br />

40445 Fisica 23<br />

Studenti<br />

Esami<br />

Nome Cognome Matricola Materia Voto<br />

Paolo Rossi 40445 Informatica 18<br />

Paolo Rossi 40445 Matematica 30<br />

Paolo Rossi 40445 Fisica 23<br />

Piero Bianchi 43555 Algoritmi 27<br />

Marco Rossi 55655 Fisica 24<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 31<br />

Join naturale: definizione<br />

• Due relazioni r 1 (X 1 ) e r 2 (X 2 )<br />

• r 1 r 2 (join naturale di r 1 e r 2 ) è una relazione su X 1 ∪ X 2 avente come<br />

tuple l’insieme<br />

{ t su X 1 ∪ X 2 | t [X 1 ] ∈ r 1 e t [X 2 ] ∈ r 2 }<br />

o, equivalentemente<br />

{ t su X 1 ∪ X 2 | esiste t 1 ∈ r 1 e t 2 ∈ r 2 con<br />

t [X 1 ] = t 1 e t [X 2 ] = t 2 }<br />

Le tuple del join si ottengono come concatenazione di tuple che<br />

CONCORDANO SUI CAMPI COMUNI<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 32


Join naturale: esempio<br />

Studenti ⇐ r 1<br />

Nome Cognome Matricola<br />

Paolo Rossi 40445<br />

Piero Bianchi 43555<br />

Piero Verdi 43566<br />

Marco Rossi 55655<br />

Esami ⇐ r 2<br />

Matricola Materia Voto<br />

40445 Informatica 18<br />

55655 Fisica 24<br />

40445 Matematica 30<br />

43555 Algoritmi 27<br />

40445 Fisica 23<br />

Studenti Esami= { tsu X 1 ∪ X 2 | t [X 1 ] ∈ r 1 e t [X 2 ] ∈ r 2 }<br />

{ t su X 1 ∪ X 2 | esiste t 1 ∈ r 1 e t 2 ∈ r 2 con t [X 1 ] = t 1 e t [X 2 ] = t 2 }<br />

t<br />

Nome Cognome Matricola Materia Voto<br />

Paolo Rossi 40445 Informatica 18<br />

Paolo Rossi 40445 Matematica 30<br />

Paolo Rossi 40445 Fisica 23<br />

Piero Bianchi 43555 Algoritmi 27<br />

Marco Rossi 55655 Fisica 24<br />

X 1 X 2<br />

X1 ∩ X 2<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 33<br />

Join naturale: osservazioni<br />

• Le tuple nel join sono ottenute combinando tuple<br />

dalle relazioni di partenza che concordano sugli<br />

attributi comuni<br />

• Gli attributi comuni tipicamente formano una<br />

chiave per una delle due relazioni coinvolte<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 34


Join naturale su più attributi<br />

Studenti<br />

Nome Cognome Matr Univ<br />

Paolo Rossi 40445 MI<br />

Piero Bianchi 43555 MI<br />

Marco Verdi 43566 TO<br />

Paolo Rossi 40445 FI<br />

Esami<br />

Materia Voto Univ Matr<br />

Informatica 18 TO 43566<br />

Fisica 24 MI 40445<br />

Matematica 30 MI 43555<br />

Algoritmi 27 MI 43555<br />

Fisica 23 FI 40445<br />

Studenti<br />

Esami<br />

Nome Cognome Matr Univ Materia Voto<br />

Paolo Rossi 40445 MI Fisica 24<br />

Piero Bianchi 43555 MI Matematica 30<br />

Piero Bianchi 43555 MI Algoritmi 27<br />

Marco Verdi 43566 TO Informatica 18<br />

Paolo Rossi 40445 FI Fisica 23<br />

•Quali chiavi?<br />

•Quali vincoli<br />

d’integrità?<br />

•Join naturale?<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 35<br />

I join possono essere “incompleti”<br />

Se una tupla in una relazione non ha una “controparte” nell’altra<br />

allora essa non partecipa al join (tupla “pendente”)<br />

Professori<br />

Dipartimenti<br />

Professore<br />

Rossi<br />

Bianchi<br />

Verdi<br />

Dipartimento<br />

Informatica<br />

Fisica<br />

Fisica<br />

Dipartimento<br />

Fisica<br />

Matematica<br />

Direttore<br />

Blu<br />

Neri<br />

Professori<br />

Dipartimenti<br />

Professore Dipartimento Direttore<br />

Bianchi Fisica Blu<br />

Verdi Fisica Blu<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 36


I join possono essere vuoti<br />

Se nessuna tupla in una relazione ha una “controparte” nell’altra,<br />

cioè, se ogni tupla è “pendente”<br />

Professori<br />

Dipartimenti<br />

Professore<br />

Rossi<br />

Bianchi<br />

Verdi<br />

Dipartimento<br />

Informatica<br />

Fisica<br />

Fisica<br />

Dipartimento<br />

Biologia<br />

Matematica<br />

Direttore<br />

Blu<br />

Neri<br />

Professori<br />

Dipartimenti<br />

Professore Dipartimento Direttore<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 37<br />

Professore<br />

Rossi<br />

Bianchi<br />

Verdi<br />

I join possono essere “pieni”<br />

Se ogni tupla in una relazione ha una “controparte” nell’altra abbiamo<br />

un join di massima cardinalità pari al prodotto delle cardinalità<br />

Professori<br />

Dipartimento<br />

Fisica<br />

Fisica<br />

Fisica<br />

Professori<br />

Università<br />

Università<br />

Dipartimento<br />

Fisica<br />

Fisica<br />

Professore Dipartimento Città<br />

Rossi Fisica MI<br />

Rossi Fisica TO<br />

Bianchi Fisica MI<br />

Bianchi Fisica TO<br />

Verdi Fisica MI<br />

Verdi Fisica TO<br />

Città<br />

MI<br />

TO<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 38


Cardinalità di un join<br />

Siano r 1 (X 1 ) e r 2 (X 2 ) due relazioni. In generale, vale che<br />

0 ≤ | r 1 r 2 | ≤ | r 1 | . | r 2 |<br />

( Notazione: | r | è la cardinalità dell’istanza r ). Inoltre:<br />

• Se il join è completo, allora<br />

| r 1 r 2 | ≥ max{| r 1 | , | r 2 |}<br />

• Se X 1 ∩ X 2 contiene una chiave per r 2 , allora<br />

| r 1 r 2 | ≤ | r 1 |<br />

• Se X 1 ∩ X 2 è una chiave primaria per r 2 ed esiste un vincolo<br />

di integrità referenziale tra X 1 ∩ X 2 in r 1 e tale chiave, allora<br />

| r 1 r 2 | = | r 1 |<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 39<br />

Join esterni (outer joins)<br />

• Variante del join che permette di mantenere informazioni<br />

da OGNI tupla<br />

• Le tuple che non hanno controparte vengono completate<br />

con dei NULL<br />

• Tre tipi di join esterno<br />

– Destro (right): sono completate solo le tuple della prima<br />

relazione<br />

– Sinistro (left): sono completate solo le tuple della<br />

seconda relazione<br />

– Pieno (full): sono completate le tuple di entrambe<br />

relazione<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 40


Join esterni (outer joins)<br />

Esame<br />

Corsi<br />

Studente<br />

Rossi<br />

Verdi<br />

Bianchi<br />

Materia<br />

Fisica<br />

Fisica<br />

Informatica<br />

Professore<br />

Neri<br />

Scuri<br />

Materia<br />

Matematica<br />

Informatica<br />

Esame<br />

Esame<br />

LEFT Corsi<br />

RIGHT Corsi<br />

Studente Materia Professore<br />

Rossi Fisica NULL<br />

Verdi Fisica NULL<br />

Bianchi Informatica Scuri<br />

Studente Materia Professore<br />

NULL Matematica Neri<br />

Bianchi Informatica Scuri<br />

Esame<br />

FULL Corsi<br />

Studente Materia Professore<br />

Rossi Fisica NULL<br />

Verdi Fisica NULL<br />

Bianchi Informatica Scuri<br />

NULL Matematica Neri<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 41<br />

Il join naturale è<br />

Join n-ario<br />

• commutativo: r 1 r 2 = r 2 r 1<br />

• associativo: (r 1 r 2 ) r 3 = r 1 (r 2 r 3 )<br />

Possiamo definire un join n-ario come:<br />

n<br />

r i<br />

i = 1<br />

Abbreviazione<br />

= r 1 r 2 … r n<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 42


Cliente<br />

Cognome<br />

ID_Cliente<br />

Rossi 10<br />

Bianchi 11<br />

Verdi 9<br />

Join n-ario: esempio<br />

Noleggio<br />

ID_Cliente<br />

ID_CD<br />

10 1<br />

9 1<br />

10 2<br />

CD<br />

ID_CD<br />

Artista<br />

1 REM<br />

2 U2<br />

Cliente Noleggio CD<br />

Cognome ID_Cliente ID_CD Artista<br />

Rossi 10 1 REM<br />

Rossi 10 2 U2<br />

Verdi 9 1 REM<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 43<br />

Prodotto cartesiano di tabelle<br />

• Il join naturale è definito anche su tabelle che non<br />

hanno attributi comuni<br />

• In tal caso non imponiamo alcuna condizione sulle<br />

concatenazioni. Il join conterrà tutte le possibili<br />

concatenazioni ⇒ prodotto cartesiano<br />

• A volte il prodotto cartesiano viene indicato con<br />

r 1 ×r 2<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 44


Prodotto cartesiano: esempio<br />

Studenti<br />

Cognome<br />

Corso<br />

CdL<br />

Nome<br />

Materia<br />

Rossi<br />

Bianchi<br />

Neri<br />

Fisica<br />

Fisica<br />

Matematica<br />

Fisica<br />

Matematica<br />

Meccanica<br />

<strong>Algebra</strong><br />

Studenti<br />

CdL<br />

Cognome Corso Nome Materia<br />

Rossi Fisica Fisica Meccanica<br />

Rossi Fisica Matematica <strong>Algebra</strong><br />

Bianchi Fisica Fisica Meccanica<br />

Bianchi Fisica Matematica <strong>Algebra</strong><br />

Neri Matematica Fisica Meccanica<br />

Neri Matematica Matematica <strong>Algebra</strong><br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 45<br />

Join n-ario: esempio<br />

Cliente<br />

Cognome<br />

ID_Cliente<br />

Rossi 10<br />

Bianchi 11<br />

Verdi 9<br />

Noleggio<br />

ID_Cliente<br />

ID_CD<br />

10 1<br />

9 1<br />

10 2<br />

CD<br />

ID_CD<br />

Artista<br />

1 REM<br />

2 U2<br />

Cliente Noleggio CD<br />

Cognome ID_Cliente ID_CD Artista<br />

Rossi 10 1 REM<br />

Rossi 10 2 U2<br />

Bianchi 11 1 REM<br />

Bianchi 11 2 U2<br />

Verdi 9 1 REM<br />

Verdi 9 2 U2<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 46


Theta join<br />

A volte, vedi l’esempio precedente, il prodotto cartesiano non<br />

è molto significativo:<br />

Theta join: join + selezione<br />

r 1 ϑ r 2 = σ ϑ (r 1 r 2 )<br />

ϑ congiunzione di uguaglianze ⇒ equi-join<br />

es: ϑ = (ID = Matr) and (Ditta = Sede) and (Paga = Stipendio)<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 47<br />

Equi join: esempio<br />

Studenti<br />

Cognome<br />

Corso<br />

CdL<br />

Nome<br />

Materia<br />

Rossi<br />

Bianchi<br />

Neri<br />

Fisica<br />

Fisica<br />

Matematica<br />

Fisica<br />

Matematica<br />

Meccanica<br />

<strong>Algebra</strong><br />

σ Corso = Nome (Studenti CdL) = Studenti Corso = Nome CdL<br />

Cognome Corso Nome Materia<br />

Rossi Fisica Fisica Meccanica<br />

Rossi Fisica Matematica <strong>Algebra</strong><br />

Bianchi Fisica Fisica Meccanica<br />

Bianchi Fisica Matematica <strong>Algebra</strong><br />

Neri Matematica Fisica Meccanica<br />

Neri Matematica Matematica <strong>Algebra</strong><br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 48


Join naturale via equi join<br />

Di fatto, il join naturale viene realizzato mediante equi join.<br />

In che modo???<br />

X ,Y campi comuni<br />

•INPUT: r(W,X,Y), s(X,Y,Z)<br />

•OUTPUT: r(W,X,Y) s(X,Y,Z)<br />

senza utilizzare il join naturale<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 49<br />

Join naturale via equi join<br />

I step<br />

Ridenominazione dei campi comuni, così applico tranquillamente<br />

join naturali ottenendo prodotti cartesiani<br />

s(X,Y,Z) ⇒ ρ X’,Y’ ← X,Y (s)<br />

relazione su (X’,Y’,Z)<br />

II step<br />

Equi join sui campi ridenominati<br />

r(W,X,Y) X=X’ and Y=Y’ ρ X’,Y’ ← X,Y s(X,Y,Z) relazione su (W,X,Y,X’,Y’,Z)<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 50


Join naturale via equi join<br />

III step<br />

Proiezione degli attributi che effettivamente intervengono in<br />

r(W,X,Y)<br />

s(X,Y,Z)<br />

π W,X,Y,Z<br />

r(W,X,Y)<br />

X=X’ and Y=Y’ ρ X’,Y’ ← X,Y s(X,Y,Z)<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 51<br />

Query<br />

• Una query è una funzione da istanze di database a<br />

relazioni<br />

• Le query sono formulate in algebra relazionale<br />

mediante espressioni su relazioni<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 52


Esempi di query: Esercizio 1<br />

Si assuma il seguente schema di data base per la gestione di una biblioteca:<br />

LIBRO(codice_libro, autore, titolo)<br />

LETTORE(codice_lettore, nome, cognome)<br />

PRESTITO(codice_lettore, codice_libro, data_prestito)<br />

Si esprima, nell’algebra relazionale, ciascuna delle seguenti affermazioni:<br />

a) Titoli dei libri presi a prestito il giorno 12/5/99;<br />

b) Autori dei libri presi a prestito dai signori Paolo Rossi;<br />

c) Codici dei lettori che hanno preso a prestito libri scritti da Gibson<br />

oppure da Sterling.<br />

a) a) π titolo titolo<br />

σ data_prestito=12/5/99 data_prestito=12/5/99<br />

PRESTITO LIBRO<br />

b) b) π autore autore<br />

σ nome=‘Paolo’ nome=‘Paolo’ and and cognome=‘Rossi’ cognome=‘Rossi’<br />

LETTORE PRESTITO LIBRO<br />

c) c) π codice_lettore σ codice_lettore autore=‘Gibson’ autore=‘Gibson’ or or autore=‘Stirling’ LIBRO autore=‘Stirling’ PRESTITO<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 53<br />

Ulteriori aspetti dell’algebra relazionale<br />

<br />

<br />

<br />

Valori nulli nelle espressioni algebriche<br />

Viste<br />

Equivalenza di espressioni algebriche<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 54


Come gestire NULL nelle espressioni<br />

condizionali?<br />

Esame<br />

Matricola Cognome Voto<br />

305011 Bianchi 23<br />

324511 Verdi 21<br />

308666 Neri NULL<br />

• σ Voto>22 (Esame)<br />

• Quali ennuple compaiono nel risultato?<br />

• La prima sì, la seconda no; e la terza?<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 55<br />

Una logica a tre valori<br />

• Vero (V) , Falso (F), Sconosciuto (U, unknown)<br />

• Tabelle di verità:<br />

not<br />

F<br />

U<br />

V<br />

V<br />

U<br />

F<br />

or F U V<br />

F F U V<br />

U U U V<br />

V V V V<br />

and F U V<br />

F F F F<br />

U F U U<br />

V F U V<br />

• Una selezione produce come risultato le ennuple per cui il<br />

predicato di selezione è VERO<br />

• In molti casi la logica a tre valori produce un risultato<br />

“sensato,“ in altri no<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 56


Esame<br />

Qualche problema col NULL<br />

Matricola Cognome Voto<br />

305011 Bianchi 23<br />

324511 Verdi 21<br />

308666 Neri NULL<br />

Che tabella denota la seguente espressione?<br />

σ Voto > 22 (Esame) ∪ σ Voto ≤ 22 (Esame)<br />

• Intuitivamente:<br />

• Di fatto:<br />

Esame<br />

Esame - σ Matricola = 308666 (Esame)<br />

Cio` perche’ le le selezioni vengono valutate<br />

SEPARATAMENTE<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 57<br />

Esame<br />

Qualche problema col NULL<br />

Matricola Cognome Voto<br />

305011 Bianchi 23<br />

324511 Verdi 21<br />

308666 Neri NULL<br />

Che tabella denota la seguente espressione?<br />

σ Voto > 22 or Voto ≤ 22 (Esame)<br />

• Intuitivamente:<br />

• Di fatto:<br />

Esame<br />

Esame - σ Matricola = 308666 (Esame)<br />

Cio` perche’ anche le le condizioni atomiche vengono valutate<br />

SEPARATAMENTE<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 58


Come ottenere risultati sempre sensati?<br />

Trattare il valore nullo "sintatticamente," con<br />

condizioni atomiche specifiche:<br />

A is NULL<br />

A is not NULL<br />

Anche in in SQL<br />

Vero quando A contiene NULL<br />

Vero quando A non contiene NULL<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 59<br />

Come ottenere Esami con la selezione su Voto?<br />

Esame<br />

Matricola Cognome Voto<br />

305011 Bianchi 23<br />

324511 Verdi 21<br />

308666 Neri NULL<br />

σ Voto > 22 (Esame) ∪ σ Voto ≤ 22 (Esame) ∪ σ Voto is NULL (Esame)<br />

σ Voto > 22 or Voto ≤ 22 or Voto is NULL (Esame)<br />

La presenza di NULL va gestita esplicitamente<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 60


Viste e Architettura ANSI/SPARC per DBMS<br />

utenti<br />

Schema esterno<br />

Schema esterno<br />

utenti<br />

Schema esterno<br />

Schema esterno<br />

utenti<br />

Schema esterno<br />

Schema esterno<br />

Schema logico<br />

Schema logico<br />

Schema interno (fisico)<br />

Schema interno (fisico)<br />

Possono essere<br />

realizzate<br />

tramite VISTE<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 61<br />

Afferenza<br />

Impiegato<br />

Rossi<br />

Neri<br />

Bruni<br />

Mori<br />

Viste, esempio<br />

Direzione<br />

Reparto<br />

Reparto<br />

Vendite<br />

Acquisti<br />

Acquisti<br />

Vendite<br />

Vendite<br />

Personale<br />

Personale<br />

Direttore<br />

Leoni<br />

Falchi<br />

Leoni<br />

Supervisione<br />

Impiegato Reparto Direttore<br />

Rossi Vendite Falchi<br />

Neri Acquisti Leoni<br />

Bruni Vendite Falchi<br />

Mori Personale Leoni<br />

Relazioni base base<br />

Vista = Relazione derivata da da quelle base<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 62


Viste (relazioni derivate)<br />

• Possono esistere rappresentazioni diverse per gli stessi dati<br />

(cfr. architettura ANSI/SPARC a tre livelli)<br />

• In una base dei dati relazionale, relazioni derivate:<br />

– relazioni il cui contenuto è funzione del contenuto di<br />

altre relazioni (definito per mezzo di interrogazioni)<br />

• In contrasto, le relazioni di base hanno un contenuto<br />

autonomo<br />

• Le relazioni derivate possono essere definite su altre<br />

derivate, a patto che non esistano definizioni circolari<br />

• Viste = Relazioni derivate<br />

• Anche in SQL<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 63<br />

Viste virtuali e materializzate<br />

• Due tipi di relazioni derivate:<br />

– viste materializzate: relazioni derivate memorizzate<br />

nella base di dati;<br />

VANTAGGI: immediatamente disponibili per le<br />

interrogazioni<br />

SVANTAGGI: appesantiscono gli aggiornamenti;<br />

non sono supportate dai DBMS<br />

– relazioni virtuali (o viste): sono supportate dai DBMS;<br />

una interrogazione su una vista viene eseguita<br />

"ricalcolando" la vista<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 64


Viste, motivazioni<br />

• Schema esterno o vista d'utente:<br />

– ogni utente vede solo cio' che gli interessa e nel modo<br />

in cui gli interessa, senza essere distratto dal resto<br />

– ogni utente vede solo cio' che e' autorizzato a vedere<br />

(autorizzazioni sulle viste)<br />

• Strumento di programmazione: con le viste si puo'<br />

semplificare la scrittura di interrogazioni; molto utile per<br />

espressioni complesse e/o con sottoespressioni ripetute<br />

Invece:<br />

• L'utilizzo di viste non influisce sull'efficienza delle<br />

interrogazioni (salvo aspetti trascurabili)<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 65<br />

Afferenza<br />

Impiegato<br />

Rossi<br />

Neri<br />

Bruni<br />

Mori<br />

Viste, esempio<br />

Direzione<br />

Reparto<br />

Reparto<br />

Vendite<br />

Acquisti<br />

Acquisti<br />

Vendite<br />

Vendite<br />

Personale<br />

Personale<br />

Direttore<br />

Leoni<br />

Falchi<br />

Leoni<br />

Definizione della vista Supervisione<br />

Supervisione = Afferenza Direzione<br />

Operatore di creazione di una vista. Analogo all’assegnamento<br />

σ Direttore='Leoni' (Supervisione) eseguita come σ Direttore='Leoni' (Afferenza<br />

Direzione)<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 66


Viste e aggiornamenti, attenzione<br />

Afferenza<br />

Impiegato Reparto<br />

Direzione<br />

Reparto Direttore<br />

Rossi Vendite<br />

Acquisti Leoni<br />

Neri Acquisti<br />

Vendite Falchi<br />

Supervisione<br />

Impiegato Direttore<br />

Rossi Falchi<br />

Neri Leoni<br />

Vista:<br />

Supervisione =<br />

π Impiegato, Direttore (Afferenza<br />

Direzione)<br />

• Vogliamo inserire, nella vista, il fatto che Mori ha come<br />

direttore Lupi; come facciamo?<br />

• Gli aggiornamenti possibili sulle viste sono limitati<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 67<br />

Viste come strumento di programmazione,<br />

per semplificare la stesura di query<br />

Afferenza<br />

Impiegato<br />

Rossi<br />

Neri<br />

Reparto<br />

Vendite<br />

Acquisti<br />

Direzione<br />

Reparto<br />

Acquisti<br />

Vendite<br />

Direttore<br />

Leoni<br />

Falchi<br />

Vista<br />

Supervisione = (Afferenza<br />

Direzione)<br />

Trovare gli impiegati che hanno lo stesso direttore di Rossi<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 68


Trovare gli impiegati che hanno lo stesso direttore di Rossi<br />

AFFERENZA(Impiegato, Reparto)<br />

DIREZIONE(Reparto, Direttore)<br />

0 Passo<br />

Vista<br />

Supervisione = (Afferenza<br />

Direzione)<br />

I Passo<br />

Trovare il direttore di Rossi<br />

π Direttore (σ Impiegato=‘Rossi' (Afferenza<br />

Direzione))<br />

II Passo Usare I Passo nella tabella Afferenza Direzione<br />

π Impiegato (π Direttore (σ Impiegato=‘Rossi' (Afferenza Direzione)) (Afferenza Direzione))<br />

Con vista π Impiegato (π Direttore (σ Impiegato=‘Rossi‘ Supervisione) Supervisione)<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 69<br />

Equivalenza di espressioni algebriche<br />

Esempio dall’aritmetica<br />

Equivalente a<br />

x + y(z + x) x + yz + yx x(1 + y) + yz<br />

Applicazione di di proprietà dell’algebra<br />

Anche nell’algebra relazionale viene studiata l’equivalenza<br />

tra espressioni<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 70


Equivalenze assolute e “in casi particolari”<br />

Esempio dall’aritmetica<br />

x + x = x. x non e` vera in generale ma in certi casi<br />

x ∈ {0,2}<br />

Esempio dall’algebra relazionale<br />

π A σ A > 0 (R) ≡ σ A > 0 π A (R) e` vera in generale (per ogni schema)<br />

π C (R S) ≡ R π C R π C S e` vera sse R ed S hanno in comune {C}<br />

Dipende dallo schema<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 71<br />

Equivalenza nell’algebra relazionale<br />

Due tipi di equivalenze<br />

Relativa: E 1 ≡ R E 2 se E 1 (r) = E 2 (r) per ogni istanza r di R<br />

Assoluta: E 1 ≡ E 2 se E 1 ≡ R E 2 per ogni R<br />

π A σ A > 0 (R) ≡ σ A > 0 π A (R) e` vera in generale (per ogni schema)<br />

π C (R S) ≡ R π C R π C S<br />

e` vera sse R ed S hanno in comune {C}<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 72


Importanza di stabilire equivalenze<br />

Esecuzione di una query in un DBMS<br />

Query SQL<br />

Trasformazione in in<br />

espressioni algebriche<br />

Ottimizzatore di di<br />

query<br />

Esecuzione<br />

della query<br />

Scelta dell’espressione<br />

di di “minor costo”<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 73<br />

Come eseguire una query<br />

STUDENTI(Nome, Cognome, Indirizzo, Matr)<br />

ESAMI(Matr, Materia, Voto, Data)<br />

Esami di Paolo Rossi<br />

1. 1. σ Nome=‘Paolo’ Nome=‘Paolo’ and and Cognome=‘Rossi’ (STUDENTI Cognome=‘Rossi’ ESAMI)<br />

2. 2. σ Nome=‘Paolo’ Nome=‘Paolo’ and andCognome=‘Rossi’ (STUDENTI) ESAMI<br />

Quale la più vantaggiosa in termini operativi?<br />

La seconda opera con tabelle più succinte<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 74


Alcune equivalenze dell’algebra relazionale<br />

• σ P and Q R ≡ σ P (σ Q R)<br />

• π A (E) ≡ π A (π A,B (E))<br />

Atomizzazione delle selezioni<br />

preparatoria<br />

Idempotenza delle proiezioni<br />

preparatoria<br />

• σ F (E 1 E 2 ) ≡ E 1 σ F (E 2 ) Pushing selections down<br />

se la condizione F fa riferimento<br />

unicamente ad attributi in E 2<br />

• σ F (E 1 E 2 ) ≡ E 1 F E 2 Selezione + Prod. cart. = theta join<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 75<br />

Anticipazione della proiezione rispetto al join<br />

Espressioni<br />

E 1 E 2<br />

Attributi<br />

X 1 X 1 ∩ X 2<br />

X 2<br />

E 2<br />

π X1 ,Y 2<br />

( E 1<br />

) ≡ E 1 π Y2 E 2<br />

Y 2<br />

Su cui viene fatto il join<br />

Non partecipano al join<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 76


Esempio di query “inefficiente”<br />

STUDENTI(Nome, Cognome, Indirizzo, Matr)<br />

ESAMI(Stud, Materia, Voto, Data)<br />

Nome e cognome degli studenti che hanno sostenuto l’esame di Fisica<br />

π Nome, Nome, Cognome (σ Cognome (σ Matr=Stud Matr=Stud and and Materia=‘Fisica’ (ESAMI Materia=‘Fisica’ STUDENTI))<br />

Operativamente inefficiente: devo calcolare il prodotto cartesiano<br />

di due “grandi” tabelle per estrarre un numero ristretto di tuple<br />

Provo a trasformarla<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 77<br />

Trasformazione in query “efficiente”<br />

STUDENTI(Nome, Cognome, Indirizzo, Matr)<br />

ESAMI(Stud, Materia, Voto, Data)<br />

π Nome, Nome, Cognome (σ Cognome (σ Matr=Stud Matr=Stud and and Materia=‘Fisica’ (ESAMI<br />

Materia=‘Fisica’ STUDENTI))<br />

1° passo) π Nome, Cognome (σ Matr=Stud ( σ Materia=‘Fisica’ (ESAMI STUDENTI)))<br />

2° passo) π Nome, Cognome (σ Matr=Stud ( σ Materia=‘Fisica’ ESAMI) STUDENTI))<br />

3° passo) π Nome, Cognome (( σ Materia=‘Fisica’ ESAMI) Matr=Stud STUDENTI)<br />

4° passo) π Nome, Cognome (π Matr ( σ Materia=‘Fisica’ ESAMI) Matr=Stud STUDENTI)<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 78


Alcune equivalenze che coinvolgono<br />

operazioni insiemistiche<br />

• σ F (E 1 ∪ E 2 ) ≡ σ F (E 1 ) ∪ σ F (E 2 )<br />

Distributività di σ su ∪<br />

• σ F (E 1 -E 2 ) ≡ σ F (E 1 ) - σ F (E 2 ) Distributività di σ su -<br />

• π X (E 1 ∪ E 2 ) ≡ π X (E 1 ) ∪ π X (E 2 )<br />

Distributività di π su ∪<br />

Attenzione!<br />

π X (R (R 11 -R 22 )) ≠ π X (R (R 11 ))--π X (R (R 22 ))<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 79<br />

Studente1<br />

Matricola Cognome<br />

304 Rossi<br />

305 Blu<br />

Studente2<br />

Matricola Cognome<br />

304 Rossi<br />

305 Verdi<br />

π X (R 1 -R 2 )<br />

Studente1 - Studente2<br />

Matricola Cognome<br />

305 Blu<br />

π X (R 1 ) - π X (R 2 )<br />

π Matricola<br />

(Studente1) π Matricola<br />

(Studente2)<br />

Matricola<br />

304<br />

305<br />

Matricola<br />

304<br />

305<br />

π Matricola (Studente1 - Studente2)<br />

π Matricola<br />

(Studente1) - π Matricola<br />

(Studente2)<br />

Matricola<br />

305<br />

≠<br />

Matricola<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 80


Alcune equivalenze che coinvolgono<br />

operazioni insiemistiche<br />

• σ Por Q R ≡ σ P (R) ∪ σ Q (R)<br />

or = ∪<br />

• σ P and Q R ≡ σ P (R) ∩ σ Q (R)<br />

and = ∩<br />

•E (E 1 ∪ E 2 ) ≡ (E E 1 ) ∪ (E E 2 ) Distributività<br />

di su ∪<br />

(c) Carlo Mereghetti <strong>Algebra</strong> <strong>Relazionale</strong> 81

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!