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 X Le espressioni di un linguaggio di interrogazione (per esempio, algebra relazionale), permettono di realizzare interrogazioni a un DB E(r): risultato dell’applicazione dell’espressione E al DB r E(r) è una relazione Esempi di Interrogazioni: 1 Impiegati 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 301 Sergio Rossi 34 3.500 375 Mario Rossi 50 3.250 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 R1 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 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) R2 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 Esempi di Interrogazioni: 2 R = R1 Capo=MatrC R2 R 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 3.250 50 Esempi di Interrogazioni: 2 1. b) Definire relazione R che descrive impiegati e capo: per non confondereSupervisione) gli attributi (Impiegati Matr=Impiegato dell’impiegato e del capo ridenominare Capo=MatrC impiegati MatrC,NomeC,EtàC,StipCMatr,Nome,Età,Stip(Impiegati) R2=MatrC,NomeC,EtàC,StipCMatr,Nome,Età,Stip(Impiegati) R = R1 Capo=MatrC R2 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 Trovare gli impiegati che guadagnano più del loro capo, mostrando matricola, nome e stipendio di ciascuno di essi e del capo 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: 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))) Stip<2.000(Impiegati) Matr Nome Età Stip 103 Mario Bianchi 23 Nico Bini 44 105 1.750 Capo(Supervisione 1.700 Supervisione Matr=Impiegato(Stip<2.000(Impiegati)) Matr Nome Età Stip 103 Mario Bianchi 23 Nico Bini 44 105 Capo Impiegato 1.750 210 1.700 231 103 105 Matr=Impiegato (Stip<2.000(Impiegati))) Capo 210 231 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 301 375 Capo(Supervisione) – Capo(Supervisione Matr=Impiegato (Stip<2.000(Impiegati))) 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 210 Marco Celli NULL 3.000 1.700 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 nullo Tabelle di verità dei connettivi: AND, OR, NOT AND V U F OR V U F NOT V V U F V V V V V F U U U F U V U U U U F F F F F V U F F V Algebra con valori nulli Poiché ragionare su valori nulli è complesso, adottiamo approccio semplificato al trattamento del valore nullo nelle espressioni dell’algebra relazionale Definiamo 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