Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB,...

35
Algebra relazionale (III)

Transcript of Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB,...

Page 1: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Algebra relazionale (III)

Page 2: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Interrogazioni con Algebra Relazionale

Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di R(Y), produce una relazione su un dato insieme di attributi XLe espressioni di un linguaggio di interrogazione (per esempio, algebra relazionale), permettono di realizzare interrogazioni a un DBE(r): risultato dell’applicazione dell’espressione E al DB rE(r) è una relazione

Page 3: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Esempi di Interrogazioni: 1

Matr

Nome Età

Stip

101 Mario Rossi 34 2.000

103 Mario Bianchi

23 1.750

104 Luigi Neri 38 3.050

105 Nico Bini 44 1.700

210 Marco Celli 49 3.000

231 Siro Bisi 50 3.000

252 Nico Bini 44 3.500

301 Sergio Rossi

34 3.500

375 Mario Rossi 50 3.250

Capo

Impiegato

210 101

210 103

210 104

231 105

301 210

301 231

375 252

Impiegati Supervisione

Page 4: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Esempi di Interrogazioni: 1

Trovare matricola, nome ed età degli impiegati che guadagnano più di 2.000

Matr,Nome,Età(Stip>2.000(Impiegati))

Page 5: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Esempi di Interrogazioni: 1

Trovare matricola, nome ed età degli impiegati che guadagnano più di 2.000

Matr

Nome Età

101 Mario Rossi 34

104 Luigi Neri 38

210 Marco Celli 49

231 Siro Bisi 50

252 Nico Bini 44

301 Sergio Rossi

34

375 Mario Rossi 50

Page 6: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Esempi di Interrogazioni: 2

Trovare gli impiegati che guadagnano più del loro capo, mostrando matricola, nome e stipendio di ciascuno di essi e del capo

1. Definire relazione R che lega (join) descrizione di impiegati a descrizione di capo

Per non confondere gli attributi dell’impiegato e del capo bisogna ridenominare una delle due relazioni

Page 7: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Esempi di Interrogazioni: 2

Trovare gli impiegati che guadagnano più del loro capo, mostrando matricola, nome e stipendio di ciascuno di essi e del capo

2. Selezionare le tuple di R tali nelle quali lo stipendio dell’impiegato è superiore a quello del capo

Page 8: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Esempi di Interrogazioni: 2

Trovare gli impiegati che guadagnano più del loro capo, mostrando matricola, nome e stipendio di ciascuno di essi e del capo

3. Proiettare risultato su attributo Matr, Nome e Stip di impiegato e sui corrispettivi (ridenominati) di capo

Page 9: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Esempi di Interrogazioni: 2

1. Definire relazione R che lega descrizione di impiegati a descrizione di capo

a) Definire relazione R1 che descrive gli impiegati di ciascun capo

Schema: R1(Matr,Nome,Età,Stip,Capo,Impiegato)

R1 = Impiegati Matr=Impiegato Supervisione

Page 10: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Esempi di Interrogazioni: 2

R1 = Impiegati Matr=Impiegato Supervisione

Matr

Nome Età

Stip Capo

Impiegato

101 Mario Rossi 34 2.000

210 101

103 Mario Bianchi

23 1.750

210 103

104 Luigi Neri 38 3.050

210 104

105 Nico Bini 44 1.700

231 105

210 Marco Celli 49 3.000

301 210

231 Siro Bisi 50 3.000

301 231

252 Nico Bini 44 3.500

375 252

R1

Page 11: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Esempi di Interrogazioni: 2

1. b) Definire relazione R che descrive

impiegati e capo: per non confondere gli attributi dell’impiegato e del capo ridenominare impiegati

R2=MatrC,NomeC,EtàC,StipCMatr,Nome,Età,Stip(Impiegati)

R = R1 Capo=MatrC R2

Page 12: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Esempi di Interrogazioni: 2

R2=MatrC,NomeC,EtàC,StipCMatr,Nome,Età,Stip(Impiegati)

MatrC

NomeC EtàC

StipC

101 Mario Rossi 34 2.000

103 Mario Bianchi

23 1.750

104 Luigi Neri 38 3.050

105 Nico Bini 44 1.700

210 Marco Celli 49 3.000

231 Siro Bisi 50 3.000

252 Nico Bini 44 3.500

301 Sergio Rossi

34 3.500

375 Mario Rossi 50 3.250

R2

Page 13: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Esempi di Interrogazioni: 2

R = R1 Capo=MatrC R2

Matr

Nome Età

Stip Capo

Impiegato

MatrC

NomeC EtàC

StipC

101 Mario Rossi 34 2.000

210 101 210 Marco Celli

49 3.000

103 Mario Bianchi

23 1.750

210 103 210 Marco Celli

49 3.000

104 Luigi Neri 38 3.050

210 104 210 Marco Celli

49 3.000

105 Nico Bini 44 1.700

231 105 231 Siro Bisi 50 3.000

210 Marco Celli 49 3.000

301 210 301 Sergio Rossi

34 3.500

231 Siro Bisi 50 3.000

301 231 301 Sergio Rossi

34 3.500

252 Nico Bini 44 3.500

375 252 375 Mario Rossi

50 3.250

R

Page 14: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Esempi di Interrogazioni: 2

1. b) Definire relazione R che descrive

impiegati e capo: per non confondere gli attributi dell’impiegato e del capo ridenominare impiegati

R2=MatrC,NomeC,EtàC,StipCMatr,Nome,Età,Stip(Impiegati)

R = R1 Capo=MatrC R2

(Impiegati Matr=Impiegato Supervisione) Capo=MatrC

MatrC,NomeC,EtàC,StipCMatr,Nome,Età,Stip(Impiegati)

Page 15: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Esempi di Interrogazioni: 2

2. Selezionare tuple in R in cui lo stipendio dell’impiegato è superiore a quello del capo:

Stip>StipC(R)

Matr

Nome Età

Stip Capo

Impiegato

MatrC

NomeC EtàC

StipC

104 Luigi Neri 38 3.050

210 104 210 Marco Celli

49 3.000

252 Nico Bini 44 3.500

375 252 375 Mario Rossi

50 3.250

Page 16: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Esempi di Interrogazioni: 2

2. Selezionare tuple in R in cui lo stipendio dell’impiegato è superiore a quello del capo:

Stip>StipC(R)

Stip>StipC((Impiegati Matr=ImpiegatoSupervisione)

Capo=MatrC

MatrC,NomeC,EtàC,StipCMatr,Nome,Età,Stip(Impiegati))

Page 17: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Esempi di Interrogazioni: 2

3. Proiettare Stip>StipC(R) su attributi richiesti:Matr,Nome,Stip,MatrC,NomeC,StipC(Stip>StipC(R))

Matr

Nome Stip MatrC

NomeC StipC

104 Luigi Neri 3.050

210 Marco Celli

3.000

252 Nico Bini 3.500

375 Mario Rossi

3.250

Page 18: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Esempi di Interrogazioni: 2

3. Proiettare Stip>StipC(R) su attributi richiesti:Matr,Nome,Stip,MatrC,NomeC,StipC(Stip>StipC(R))

Matr,Nome,Stip,MatrC,NomeC,StipC(Stip>StipC((Impiegati

Matr=ImpiegatoSupervisione) Capo=MatrC

MatrC,NomeC,EtàC,StipCMatr,Nome,Età,Stip(Impiegati)))

Page 19: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Esempi di Interrogazioni: 2

Matr,Nome,Stip,MatrC,NomeC,StipC(Stip>StipC((Impiegati

Matr=ImpiegatoSupervisione) Capo=MatrC

MatrC,NomeC,EtàC,StipCMatr,Nome,Età,Stip(Impiegati)))

Trovare gli impiegati che guadagnano più del loro capo, mostrando matricola, nome e stipendio di ciascuno di essi e del capo

Page 20: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Esempi di Interrogazioni: 3

Trovare matricola e nome dei capi i cui impiegati guadagnano tutti più di 2.000

1. Tutti gli impiegati? Selezionare capi che hanno impiegati con stipendio < 2.000

Capo(Supervisione Matr=Impiegato(Stip<2.000(Impiegati)))

Page 21: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Esempi di Interrogazioni: 3

Capo(Supervisione Matr=Impiegato(Stip<2.000(Impiegati)))

Matr

Nome Età

Stip

103 Mario Bianchi

23 1.750

105 Nico Bini 44 1.700

Matr

Nome Età

Stip Capo

Impiegato

103 Mario Bianchi

23 1.750

210 103

105 Nico Bini 44 1.700

231 105

Capo

210

231

Stip<2.000(Impiegati)

Supervisione Matr=Impiegato(Stip<2.000(Impiegati))

Capo(Supervisione Matr=Impiegato

(Stip<2.000(Impiegati)))

Page 22: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Esempi di Interrogazioni: 3

2. Sottrarre tali capi all’insieme di tutti i capi

Capo(Supervisione) –

Capo(Supervisione Matr=Impiegato(Stip<2.000(Impiegati)))

Page 23: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Esempi di Interrogazioni: 3

Capo(Supervisione) –

Capo(Supervisione Matr=Impiegato(Stip<2.000(Impiegati)))

Capo

210

231

301

375

Capo(Supervisione) Capo(Supervisione) –

Capo(Supervisione

Matr=Impiegato

(Stip<2.000(Impiegati)))

Capo

301

375

Page 24: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Esempi di Interrogazioni: 3

Trovare matricola e nome dei capi i cui impiegati guadagnano tutti più di 2.000

Matr,Nome(Impiegati Matr=Capo

(Capo(Supervisione) –

Capo(Supervisione Matr=Impiegato(Stip<2.000(Impiegati)))))

Page 25: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Esempi di Interrogazioni: 3

Impiegati Matr=Capo

(Capo(Supervisione) –

Capo(Supervisione Matr=Impiegato(Stip<2.000(Impiegati))))

Matr

Nome Età

Stip Capo

301 Sergio Rossi

34 3.500

301

375 Mario Rossi 50 3.250

375

Page 26: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Esempi di Interrogazioni: 3

Matr,Nome(Impiegati Matr=Capo

(Capo(Supervisione) –

Capo(Supervisione Matr=Impiegato(Stip<2.000(Impiegati)))))

Matr

Nome

301 Sergio Rossi

375 Mario Rossi

Page 27: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Algebra con valori nulli

Come applicare espressioni di algebra relazionale in presenza di tuple con valori nulli?Per esempio: Età>30(Impiegati)

Se in relazione Impiegati non si conosce età di alcune persone: tuple 104 e 219 devono essere selezionate?

Matr

Nome Età Stip

101 Mario Rossi 34 2.000

103 Mario Bianchi

23 1.750

104 Luigi Neri NULL

3.050

105 Nico Bini 44 1.700

210 Marco Celli NULL

3.000

Page 28: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Algebra con valori nulli

Logica a 3 valori per il trattamento di valori veri, falsi, sconosciuti: V, F, U (unknown)Un predicato assume valore U quando uno dei termini del confronto ha valore nulloTabelle di verità dei connettivi: AND, OR, NOT

AND

V U F

V V U F

U U U F

F F F F

OR

V U F

V V V V

U V U U

F V U F

NOT

V F

U U

F V

Page 29: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Algebra con valori nulli

Poiché ragionare su valori nulli è complesso, adottiamo approccio semplificato al trattamento del valore nullo nelle espressioni dell’algebra relazionaleDefiniamo due nuove condizioni atomiche di selezione: dato attributo A A IS NULL: vera su tupla t se il valore di t su A

è nullo; falsa se valore specificato A IS NOT NULL: vera su t se valore di t su A

specificato, falsa altrimenti

Page 30: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Algebra con valori nulli

Interpretiamo le condizioni di selezione in modo restrittivo, escludendo da selezione le tuple con valore U, a meno che non sia espicitamente incluso nella selezione

Page 31: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Algebra con valori nulli

Per esempio: Età>30(Impiegati) – le tuple con Età null

non vengono selezionate (su di esse la condizione Età>30 assume valore U)

Età>30 Età IS NULL(Impiegati) – si includono anche le tuple con Età sconosciuta (104, 210 in relazione Impiegati)

Page 32: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Viste

Relazioni derivate definite su relazioni di schema logico Viste materializzate (con tuple

memorizzate in DB) Relazioni virtuali, o viste

(memorizzate in DB mediante espressioni del linguaggio di interrogazione, senza memorizzazione di tuple)

Page 33: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Viste

DBMS offrono solo relazioni virtuali (no ridondanza dati)Interrogazioni che utilizzano viste sono risolte sostituendo la definizione delle viste alle loro occorrenze

Page 34: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Viste

Per esempio: R1(A,B,C), R2(C,D,E), R3(E,G) Vista: R = A>D(R1 R2) Interrogazione: B=G(R R3) risolta

così:

B=G(A>D(R1 R2) R3)

Page 35: Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.

Viste

Viste utile per: Permettere ad applicazioni di utilizzare

relazioni che contengono solo le informazioni di interesse

Se schema di DB viene ristrutturato, ricreare relazioni eliminate per evitare di modificare le applicazioni che le usavano Per esempio: R(A,B,C) sostituita in DB da

R1(A,B), R2(B,C), e definiamo vista R= R1R2