Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB,...
-
Upload
gerardo-amore -
Category
Documents
-
view
215 -
download
0
Transcript of Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB,...
Algebra relazionale (III)
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
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
Esempi di Interrogazioni: 1
Trovare matricola, nome ed età degli impiegati che guadagnano più di 2.000
Matr,Nome,Età(Stip>2.000(Impiegati))
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
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
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
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
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
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
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
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
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
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)
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
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))
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
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)))
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
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)))
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)))
Esempi di Interrogazioni: 3
2. Sottrarre tali capi all’insieme di tutti i capi
Capo(Supervisione) –
Capo(Supervisione Matr=Impiegato(Stip<2.000(Impiegati)))
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
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)))))
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
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
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
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
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
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
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)
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)
Viste
DBMS offrono solo relazioni virtuali (no ridondanza dati)Interrogazioni che utilizzano viste sono risolte sostituendo la definizione delle viste alle loro occorrenze
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)
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