Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

60
Corso di Basi di Dati L’Algebra Relazionale Home page del corso: http://www.cs.unibo.it/~difelice/dbsi/

Transcript of Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Page 1: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Corso di Basi di Dati

L’Algebra RelazionaleHome page del corso:

http://www.cs.unibo.it/~difelice/dbsi/

Page 2: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Altri linguaggi DML di interrogazione:

SQL2/SQL3 (standard de facto, gia’ visto ..)

Calcolo relazionale (linguaggio dichiarativo)

Datalog (basato su Prolog)

L’algebra relazionale e’ un linguaggio (procedurale) di interrogazione per basi di dati relazionali.

Page 3: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

All’interno di un DBMS, le query SQL sono controllate ed eseguite da un interprete SQL.

L’interprete spesso traduce l’SQL in un altro linguaggio procedurale (~algebra relazionale) per motivi di:

Facilita’ d’esecuzione e’ possibile scomporre query complesse in una sequenza di procedure da eseguire.

Ottimizzazione e’ possibile riscrivere (automaticamente) le query procedurali in modo da consumare meno memoria o tempo di esecuzione.

Page 4: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Il linguaggio dell’algebra relazionale e’ costituito da una serie di operatori (algebrici) che:

si applicano ad una relazione (definizione di relazione nel modello relazionale).

producono in output una relazione.

sono componibili, ossia e’ possibile utilizzarli in cascata per creare interrogazioni complesse.

Gli operatori possono essere unari o binari.

Page 5: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Interrogazione SQL

Interrogazione linguaggio procedurale

Interrogazione ottimizzata

DB

Traduttore SQL Linguaggio Procedurale

Ottimizzatore di query

Esecuzione

INTERPRETE SQL DEL DBMS

Generata dall’utente/applicazione

Page 6: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Il linguaggio dell’algebra relazionale e’ costituito da una serie di operatori (algebrici):

Operatori su insiemi: unione, intersezione, differenza.

Operatori su attributi: ridenominazione, selezione, proiezioni.

Operatori intra-relazionali: join naturale, theta-join, equi-join, etc.

Page 7: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Le relazioni sono insiemi e’ possibile definire operatori insiemistici su di esse:

Unione di r1(X) ed r2(X):

Intersezione di r1(X) ed r2(X):

Differenza di r1(X) ed r2(X):

Le relazioni r1 ed r2 devono avere lo stesso schema!

Page 8: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Nome Cognome Nascita

Giuseppe Rossi 10/03/19769

Roberto Bianchi 14/06/1982

Michele Verdi 17/08/1983

Nome Cognome Nascita

Giovanni Bianchi 10/06/1980

Roberto Bianchi 14/06/1982

Michele Verdi 17/08/1983

CALCIATORI ALLENATORI

Algebra Relazionale

Nome Cognome Nascita

Giuseppe Rossi 10/03/19769

Roberto Bianchi 14/06/1982

Michele Verdi 17/08/1983

Giovanni Bianchi 10/06/1980

Nome Cognome Nascita

Roberto Bianchi 14/06/1982

Michele Verdi 17/08/1983

Page 9: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Nome Cognome Nascita

Giuseppe Rossi 10/03/19769

Roberto Bianchi 14/06/1982

Michele Verdi 17/08/1983

Nome Cognome Data

Giovanni Bianchi 10/06/1980

Roberto Bianchi 14/06/1982

Michele Verdi 17/08/1983

CALCIATORI ALLENATORI

Algebra Relazionale

Nome Cognome ??? Nome Cognome ???

Q. Cosa accade se le relazioni non hanno esattamente lo stesso schema, ma dispongono di attributi con nomi diversi?

Page 10: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

L’operatore di ridenominazione rconsente di modificare i nomi degli attributi di una relazione.

rB1,B2, … BM A1, A2, .. AM (r)

SEMANTICA: Modifica lo schema della relazione, ridenominando gli attributi A1, A2, …AM in B1, B2, BM senza alterare i dati della relazione. A1 A

2

… AMB1 B

2

… BM

Page 11: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Nome Cognome Nascita

Giuseppe Rossi 10/03/19769

Roberto Bianchi 14/06/1982

Michele Verdi 17/08/1983

Nome Cognome Data

Giovanni Bianchi 10/06/1980

Roberto Bianchi 14/06/1982

Michele Verdi 17/08/1983

CALCIATORI ALLENATORI

Algebra Relazionale

Nome Cognome Nascita

Giuseppe Rossi 10/03/19769

Roberto Bianchi 14/06/1982

Michele Verdi 17/08/1983

Giovanni Bianchi 10/06/1980

Nome Cognome Nascita

Roberto Bianchi 14/06/1982

Michele Verdi 17/08/1983

Page 12: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

L’operatore di selezione sF(r) consente di selezionare un sottoinsieme delle tuple della relazione r, in base alla condizione specificata da F.

A1 A2 … A5M

A1 A2 … A5M

Relazione r

sF(r)

Relazione r’

Insieme delle righe di r che soddisfano la condizione F

Page 13: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

L’operatore di selezione sF(r) consente di selezionare un sottoinsieme delle tuple della relazione r, in base alla condizione specificata da F.

La condizione F e’ definita come insieme di predicati connessi da operatori logici.

F= P1 Op P2 Op … PN

Op e’ un operatore booleano (AND, OR, NOT)

Page 14: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

La condizione F e’ definita come insieme di predicati connessi da operatori logici.

F= P1 Op P2 Op … PN

Ogni predicato e’ del tipo AqB oppure Aqc, dove:

q e’ un operatore di confronto (<,>,=,<>,<=,>=).

A e B sono attributi di r, su cui ha senso l’operatore

contiene una valore compatibile con il dominio di A.

Page 15: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

CALCIATORI

Algebra Relazionale

Nome Cognome

Nascita Anni Societa’

Giuseppe Rossi 10/03/19769

32 Dinamo

Roberto Bianchini

14/06/1982 33 Polisportiva

Michele Verdi 17/08/1983 27 Polisportiva

Giovanni Bianchi 10/06/1980 29 Dinamo

Nome Cognome

Nascita Anni Societa’

Giuseppe Rossi 10/03/19769

32 Dinamo

Page 16: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

CALCIATORI

Algebra Relazionale

Nome Cognome

Nascita Anni Societa’

Giuseppe Rossi 10/03/19769

32 Dinamo

Roberto Bianchini

14/06/1982 33 Polisportiva

Michele Verdi 17/08/1983 27 Polisportiva

Giovanni Bianchi 10/06/1980 29 Dinamo

Nome Cognome

Nascita Anni Societa’

Giuseppe Rossi 10/03/19769

32 Dinamo

Giovanni Bianchi 10/06/1980 29 Dinamo

Page 17: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

CALCIATORI

Algebra Relazionale

Nome Cognome

Nascita Anni Societa’

Giuseppe Rossi 10/03/19769

32 Dinamo

Roberto Bianchini

14/06/1982 NULL Polisportiva

Michele Verdi 17/08/1983 27 NULL

Giovanni Bianchi 10/06/1980 29 Dinamo

Q. Cosa accade in presenza di valori nulli?

Page 18: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

A. Come in SQL, si utilizza una logica a 3 valori: True (T), False (F), Unknown (U).

OR T F U

T T T T

F T F U

U T U U

AND T F U

T T F U

F F F F

U U F U

NOT

T F

F T

U U

Si utilizzano gli operatori IS NULL e IS NOT NULL per verificare se un certo attributo ha valore uguale a NULL o meno.

Page 19: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

CALCIATORI

Algebra Relazionale

Nome Cognome

Nascita Anni Societa’

Giuseppe Rossi 10/03/19769

NULL Dinamo

Roberto Bianchi 14/06/1982 33 Polisportiva

Michele Verdi 17/08/1983 27 Polisportiva

Giovanni Bianchi 10/06/1980 35 NULL

Nome Cognome

Nascita Anni Societa’

Page 20: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

CALCIATORI

Algebra Relazionale

Nome Cognome

Nascita Anni Societa’

Giuseppe Rossi 10/03/19769

NULL Dinamo

Roberto Bianchi 14/06/1982 33 Polisportiva

Michele Verdi 17/08/1983 27 Polisportiva

Giovanni Bianchi 10/06/1980 35 NULL

Nome Cognome

Nascita Anni Societa’

Giovanni Bianchi 10/06/1980 35 NULL

Page 21: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

L’operatore di proiezione pY(r) consente di selezionare un sottoinsieme degli attributi di r.

A1 A2 A3 … A5

A1 A5

Y=(A1,A5)

Page 22: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

L’operatore di proiezione pY(r) consente di selezionare un sottoinsieme degli attributi di r.

Qual e’ la cardinalita’ di pY(r)?

Nel caso generale, |pY(r)| <= |r|

Se Y e’ superchiave di R, allora |pY(r)|= |r|

Q. Vale anche il viceversa? (Se |pY(r)|= |r| allora Y e’ una superchiave di R?)

Page 23: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

CALCIATORI

Algebra Relazionale

Nome Cognome

Nascita Anni Societa’

Giuseppe Rossi 10/03/19769

32 Dinamo

Roberto Bianchi 14/06/1982 33 Polisportiva

Michele Verdi 17/08/1983 27 Polisportiva

Giovanni Bianchi 10/06/1980 27 Dinamo

Nome Cognome

Giuseppe Rossi

Roberto Bianchi

Michele Verdi

Giovanni Bianchi

Anni

32

33

27

Page 24: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

E’ possibile scrivere espressioni complesse componendo gli operatori algebrici …

Nome Cognome Squadra

Giuseppe Rossi Dinamo

Roberto Bianchi Dinamo

Michele Verdi Polisportiva

CALCIATORI

Nome Cognome Squadra

Luciano Rossi Dinamo

Michele Rosati Polisportiva

PRESIDENTI

Nome Cognome Squadra

Luciano Rossi Dinamo

Giuseppe Rossi Dinamo

Roberto Bianchi Dinamo

Page 25: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

E’ possibile scrivere espressioni complesse componendo gli operatori algebrici …

Nome Cognome Squadra

Giuseppe Rossi Dinamo

Roberto Bianchi Dinamo

Michele Verdi Polisportiva

CALCIATORI

Nome Cognome Squadra

Luciano Rossi Dinamo

Michele Rosati Polisportiva

PRESIDENTI

Cognome

Rossi

Bianchi

Page 26: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

L’operatore di join naturale consente di correlare dati tra relazioni diverse, sulla base di valori comuni in attributi comuni.

Nome Cognome Squadra

Giuseppe Rossi Dinamo

Roberto Bianchi Dinamo

Michele Verdi Polisportiva

CALCIATORI

SQUADRE

Squadra Punti

Dinamo 12

Polisportiva 14

Nome Cognome Squadra Punti

Giuseppe Rossi Dinamo 12

Roberto Bianchi Dinamo 12

Michele Verdi Polisportiva

14

Page 27: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

L’operatore di join naturale consente di correlare dati tra relazioni diverse, sulla base di valori comuni in attributi comuni.

Data una relazione r1 su attributi X1, ed una relazione r2 su attributi X2:

La cardinalita’ del join e’ compresa tra 0 e |r1|*|r2|.

Page 28: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Se le due relazioni r1 ed r2 hanno lo stesso schema la cardinalita’ del join e’ pari a quella dell’interserzione tra r1 ed r2 .

Codice Nome Ufficio

123 Rossi A

345 Bianchi A

167 Verdi B

IMPIEGATI

RESPONSABILI_UFFICIO

Codice

Nome Ufficio

123 Rossi A

Codice Nome Ufficio

123 Rossi A

345 Michele C CASO SPECIALE 1

Page 29: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Sia X l’attributo in comune tra X1 ed X2. Se X contiene una chiave di r2 il join ha cardinalita’ massima pari alla cardinalita’ di r1 (|r1|).Codice Nome Sede

123 Rossi Bologna

345 Bianchi Milano

167 Verdi Milano

IMPIEGATI

Sede Mansione

Bologna Sviluppo

Milano Testing

SEDI

Id Nome Sede Mansione

123 Rossi Bologna Sviluppo

345 Bianchi Milano Testing

167 Verdi Milano TestingCASO SPECIALE 2

Page 30: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra RelazionaleSia X l’attributo in comune tra X1 ed X2. Se esiste un vincolo di integrita’ referenziale tra l’attributo X in r1 e la relazione r2 il join ha cardinalita’ pari alla cardinalita’ di r1 (|r1|).

Id Nome CodiceRep

123 Rossi A3

345 Bianchi A3

167 Verdi B1

PAZIENTI CodiceRep

NrLetti Primario

A3 20 Alberti

B1 10 Gigli

REPARTI

Id Nome CodiceRep

NrLetti Primario

123 Rossi A3 20 Alberti

345 Bianchi A3 20 Alberti

167 Verdi B1 10 Gigli

CASO SPECIALE 3

Page 31: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Se le due relazioni r1 ed r2 non hanno attributi in comune la cardinalita’ del join e’ pari a quella del prodotto cartesiano tra r1 ed r2 (|r1| *|r2|).Id Nome Ufficio

123 Rossi A

345 Bianchi A

167 Verdi B

IMPIEGATI

Codice Telefono

A 20-21-216

C 20-21-218

UFFICI

Id Nome Ufficio Codice Telefono

123 Rossi A A 20-21-216

123 Rossi A C 20-21-218

345 Bianchi A A 20-21-216

345 Bianchi A C 20-21-218

167 Verdi B A 20-21-216

167 Verdi B C 20-21-218

CASO SPECIALE 4

Page 32: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Il join naturale dispone di alcune proprieta’ algebriche interessanti:

Il join e’ commutativo:

Il join e’ associativo:

Nel caso di join n-ari:

Q. Dimostrazione?

Page 33: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

E’ possibile stabilire una corrispondenza tra query SQL ed espressioni in algebra relazionale…

Schema generale (tralasciando le ridenominazioni)

SELECT A1, A2, … An

FROM T1, T2, … Tm

WHERE Condizione

Page 34: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Dato il seguente schema:

IMPIEGATI(Codice, Nome, Cognome, Livello)STIPENDI (LivelloQualifica, Retribuzione)

determinare la retribuzione degli impiegati che si chiamano “Mario”.

SELECT RETRIBUZIONEFROM IMPIEGATI, STIPENDIWHERE ((NOME=“MARIO”) AND (LIVELLO=LIVELLOQUALIFICA))

Page 35: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Dato il seguente schema:

IMPIEGATI(Codice, Nome, Cognome, Livello)STIPENDI (LivelloQualifica, Retribuzione)

determinare la retribuzione MEDIA degli impiegati che si chiamano “Mario”.

SELECT AVG(RETRIBUZIONE)FROM IMPIEGATI, STIPENDIWHERE ((NOME=“MARIO”) AND (LIVELLO=LIVELLOQUALIFICA))

In algebra relazionale? Non si puo’ esprimere …

Page 36: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Il theta-join e’ un operatore derivato, espresso come un join naturale seguito da un operatore di selezione.

Theta-join:

F e’ una condizione utilizzabile in una selezione.

r1 ed r2 devono avere schemi diversi, ossia non devono avere attributi in comune.

Page 37: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Codice Partenza Arrivo

AZ123 Roma Parigi

AF345 Milano Boston

AF167 Parigi Londra

VOLI

Modello NrPosti Smoking

B747 250 NO

MD80 120 NO

AEREI

Codice Partenza

Arrivo Modello

NrPosti

Smoking

AZ123 Roma Parigi B747 250 NO

AF345 Milano Boston B747 250 NO

AF167 Parigi Londra B747 250 NO

Un esempio di theta-join con condizione di selezione (NrPosti>150).

Page 38: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Codice Partenza

Arrivo Modello

AZ123 Roma Parigi B747

AF345 Milano Boston MD80

AF167 Parigi Londra B737

VOLI

Modello NrPosti Smoking

B747 250 NO

MD80 120 NO

AEREI

Un esempio di theta-join con condizione di selezione (NrPosti>150).

???, Errore, il theta-join assume che le tue relazioni coinvolte

abbiano schemi distinti

Page 39: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

L’ equi-join e’ un theta-join, in cui la condizione di selezione e’ una congiunzione di atomi di uguaglianza.

Equi-join:

F e’ una congiunzione di atomi.

Ogni atomo e’ un’uguaglianza, tra due attributi (A,B) oppure tra un attributo ed una costante (d) nel suo dominio.

Page 40: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Esempio di equi-join …

Codice Partenza

Arrivo Modello

AZ123 Roma Parigi B747

AF345 Milano Boston MD80

AF167 Parigi Londra B737

VOLI

Codice NrPosti Smoking

B747 250 NO

MD80 120 NO

AEREI

Codice Partenza

Arrivo Modello

NrPosti

Smoking

AZ123 Roma Parigi B747 250 NO

AF345 Milano Boston MD80 120 NO

Page 41: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Il join naturale di tue relazioni r1 ed r2 puo’ essere espresso mediante gli operatori di selezione, equi-join e ridenominazione.

Es. date 2 relazioni: r1(ABC), r2(BCD)

Step1: Ridenominazione

Step2: Equi-join

Step3: Proiezione

Page 42: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Nel join naturale, non tutte le tuple di una relazione contribuiscono al risultato finale …

Codice Nome Sede

123 Rossi Bologna

345 Bianchi Milano

167 Verdi Parma

189 Rosati Palermo

IMPIEGATI

Sede Mansione

Bologna Sviluppo

Milano Testing

SEDI

Id Nome Sede Mansione

123 Rossi Bologna Sviluppo

345 Bianchi Milano Testing

Queste tuple non appaiono nel risultato finale (dangling values)!!}

Page 43: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Possono esistere casi in cui si vorrebbero includere anche le dangling tuple nel risultato finale…

Codice Nome Cognome

CodiceMedico

123 Rossi Bologna MB124

345 Bianchi Milano VB34

167 Verdi Parma VB34

189 Rosati Palermo MR56

PAZIENTI

CodiceMedico

NomeMedico

CognomeMedico

MB124 Marco Bianchi

VB34 Valerio Bianchi

MEDICI_BOLOGNA

Vorrei includere nel risultato finale tutte le informazioni sui pazienti (e relativi medici) …

Page 44: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Codice Nome Cognome

CodiceMedico

123 Rossi Bologna MB124

345 Bianchi Milano VB34

167 Verdi Parma VB34

189 Rosati Palermo MR56

PAZIENTI

CodiceMedico

NomeMedico

CognomeMedico

MB124 Marco Bianchi

VB34 Valerio Bianchi

MEDICI_BOLOGNA

Codice

Nome Cognome

CodiceMedico

NomeMedico

CognomeMedico

123 Rossi Bologna MB124 Marco Bianchi

345 Bianchi

Milano VB34 Valerio

Bianchi

167 Verdi Parma VB34 Valerio

Bianchi

Questo valore non comparein MEDICI_BOLOGNA

Page 45: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

L’outer-join consente di far apparire le tuple dangling nel risultato finale, completando le informazioni mancanti con valori NULL.

Tre varianti dell’outer-join:

Left join completamento dell’operando sx.

Right join completamento dell’operando dx.

Full Join completamento di entrambi gli operandi.

Page 46: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Esempio1: Left outer-join …

Codice Nome Sede

123 Rossi Bologna

345 Bianchi Milano

167 Verdi Parma

189 Rosati Palermo

IMPIEGATI

Sede Mansione

Bologna Sviluppo

Milano Testing

Venezia Direzione

SEDI

Codice Nome Sede Mansione

123 Rossi Bologna Sviluppo

345 Bianchi Milano Testing

167 Verdi Parma NULL

189 Rosati Palermo NULL

Page 47: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Esempio2: Right outer-join …

Codice Nome Sede

123 Rossi Bologna

345 Bianchi Milano

167 Verdi Parma

189 Rosati Palermo

IMPIEGATI

Sede Mansione

Bologna Sviluppo

Milano Testing

Venezia Direzione

SEDI

Codice Nome Sede Mansione

123 Rossi Bologna Sviluppo

345 Bianchi Milano Testing

NULL NULL Venezia Direzione

Page 48: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Esempio3: Full outer-join …

Codice Nome Sede

123 Rossi Bologna

345 Bianchi Milano

167 Verdi Parma

189 Rosati Palermo

IMPIEGATISede Mansion

e

Bologna Sviluppo

Milano Testing

Venezia Direzione

SEDI

Codice Nome Sede Mansione

123 Rossi Bologna Sviluppo

345 Bianchi Milano Testing

167 Verdi Parma NULL

189 Rosati Palermo NULL

NULL NULL Venezia Direzione

Page 49: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Come in SQL, e’ possibile definire delle viste, sotto forma di interrogazioni dell’algebra relazionale cui si assegna un nome.

Le viste possono essere usate in altre interrogazioni, per semplificarne la scrittura.

Esempio di vista con nome IMPIEGATI

Page 50: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

L’algebra relazionale consente di creare interrogazioni equivalenti tra loro.

L’equivalenza puo’ essere:

Dipendente dallo schema

Assoluta (per ogni schema)

Se E1=E2 per ogni istanza r dello schema R

Page 51: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

R1=VOLI(Codice, AeroportoArrivo, OraArrivo, OraPartenza, Vettore)

R2=AEREI(Vettore, NumPasseggeri)

… Ma che accade se le due relazioni coinvolte hanno altri attributi in comune oltre a quelli che compaiono in A?

Esempio di uguaglianza dipendente dallo schema!

Es. L’uguaglianza funziona sullo schema seguente:

Page 52: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra RelazionaleSTUDENTI

Matricola

Nome Cognome

CdL

01212 Marco Rossi Fisica

02121 Michele Bianchi Informatica

43242 Giovanna

Verdi Chimica

56776 Daniele Rosati Fisica

ANAGRAFICA

Nome Cognome

CF Data

Michele Rossi MR233G 03/01/1990

Michele Marchi MM768H 06/11/1992

Giovanna

Verdi GV1111J 05/11/1993

Giovanna

Bianchini

GB3133J 23/06/1988

Nome CdL Data

Michele Informatica

03/01/1990

Michele Informatica

06/11/1992

Giovanna Chimica 05/11/1993

Giovanna Fisica 23/06/1988

Nome CdL Data

Giovanna Chimica 05/11/1993

Page 53: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Uguaglianze a livello di schema …

Atomizzazione delle selezioni:

Idempotenza delle proiezioni:

Selezione anticipata:(F fa riferimento solo ad attributi di E2)

Inglobamento di una selezione:

Page 54: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Uguaglianze a livello di schema (continua)…

Commutativita della selezione:(F deve riferirsi solo ad attributi in Y)

Commutatitvita del join:

Associtativita’ del join:

Page 55: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Uguaglianze a livello di schema (continua) …

Proiezione anticipata:(E1 ed E2 definite su X1 ed X2. Y2 deve contenere l’intersezione di X1 ed X2.)

Proprieta’ distributive della selezione e proiezione:

Page 56: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Q. Come si dimostra se un’uguaglianza a livello di schema e’ valida?

Verificare l’opposto e’ facile Basta trovare un esempio (schema/istanza) su cui l’uguaglianza non vale!

Se non ci sono assunzioni sulla struttura di E1, E2, ed A, l’uguaglianza sopra e’ FALSA CONTROESEMPIO:

E1=IMPIEGATI(Codice, Stipendio, Sede) E2=SEDI(Citta, Mansione) A=Stipendio F: (Sede=Citta)

Page 57: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Q. Come si dimostra se un’uguaglianza a livello di schema e’ valida?

Es. Dimostrare che:

1) Occorre dimostrare che:

2) Occorre dimostrare che:

SCHEMA DI DIMOSTRAZIONE

Page 58: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Esempio di ottimizzazione di query

Dato il seguenti schema:

VOLI(Codice, CittaPartenza, CittaArrivo, Vettore)AEREI(Modello, NrPosti, Smoking)

Q. Determinare i modelli degli aerei in partenza da Milano con meno di 100 passeggeri.

Page 59: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Esempio di ottimizzazione di query

1. Atomizzazione delle selezioni.

2. Anticipazione della selezione rispetto al join

3. Inglobamento della selezione nel join

Page 60: Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi

Algebra Relazionale

Esempio di ottimizzazione di query

4. Anticipazione della proiezione.

Q. E’ possibile ottimizzare ulteriormente l’interrogazione?