Basi di dati Esercizi su ALGEBRA RELAZIONALE 16102014
Basi di dati Esercizi su ALGEBRA RELAZIONALE 16/10/2014 Paolo Atzeni 1
Impiegati Matricola Nome 7309 Rossi 5998 Bianchi 9553 Neri 5698 Bruni 4076 Mori 8123 Lupi Supervisione 16/10/2014 Età 34 37 42 43 45 46 Impiegato 7309 5998 9553 5698 4076 Paolo Atzeni Stipendio 45 38 35 42 50 60 Capo 5698 4076 8123 2
• Trovare matricola, nome, età e stipendio degli impiegati che guadagnano più di 40 SELStipendio>40(Impiegati) 16/10/2014 Paolo Atzeni 3
• Trovare matricola, nome ed età degli impiegati che guadagnano più di 40 PROJMatricola, Nome, Età (SELStipendio>40(Impiegati)) 16/10/2014 Paolo Atzeni 4
• Trovare le matricole dei capi degli impiegati che guadagnano più di 40 PROJCapo (Supervisione JOIN Impiegato=Matricola (SELStipendio>40(Impiegati))) 16/10/2014 Paolo Atzeni 5
• Trovare nome e stipendio dei capi degli impiegati che guadagnano più di 40 PROJNome, Stipendio ( Impiegati JOIN Matricola=Capo PROJCapo(Supervisione JOIN Impiegato=Matricola (SELStipendio>40(Impiegati)))) 16/10/2014 Paolo Atzeni 6
• Trovare gli impiegati che guadagnano più del proprio capo, mostrando matricola, nome e stipendio dell'impiegato e del capo PROJMatr, Nome, Stip, Matr. C, Nome. C, Stip. C (SELStipendio>Stip. C( RENMatr. C, Nome. C, Stip. C, EtàC Matr, Nome, Stip, Età(Impiegati) JOIN Matr. C=Capo (Supervisione JOIN Impiegato=Matricola Impiegati))) 16/10/2014 Paolo Atzeni 7
• Trovare le matricole dei capi i cui impiegati guadagnano tutti più di 40 PROJCapo (Supervisione) PROJCapo (Supervisione JOIN Impiegato=Matricola (SELStipendio 40(Impiegati))) 16/10/2014 Paolo Atzeni 8
Una convenzione e notazione alternativa per i join • Nota: è sostanzialmente l'approccio usato in SQL • Ignoriamo il join naturale (cioè non consideriamo implicitamente condizioni su attributi con nomi uguali) • Per "riconoscere" attributi con lo stesso nome gli premettiamo il nome della relazione • Usiamo "assegnazioni" (viste) per ridenominare le relazioni (e gli attributi solo quando serve per l'unione) 16/10/2014 Paolo Atzeni 9
• Trovare gli impiegati che guadagnano più del proprio capo, mostrando matricola, nome e stipendio dell'impiegato e del capo PROJMatr, Nome, Stip, Matr. C, Nome. C, Stip. C (SELStipendio>Stip. C( RENMatr. C, Nome. C, Stip. C, EtàC Matr, Nome, Stip, Età(Impiegati) JOIN Matr. C=Capo (Supervisione JOIN Impiegato=Matricola Impiegati))) 16/10/2014 Paolo Atzeni 10
PROJMatr, Nome, Stip, Matr. C, Nome. C, Stip. C (SELStip>Stip. C( RENMatr. C, Nome. C, Stip. C, EtàC Matr, Nome, Stip, Età(Imp) JOIN Matr. C=Capo (Sup JOIN Imp=Matr Imp))) Capi : = Imp PROJImp. Matr, Imp. Nome, Imp. Stip, Capi. Matr, Capi. Nome, Capi. Stip (SELImp. Stip>Capi. Stip( Capi JOIN Capi. Matr=Capo (Sup JOIN Imp=Imp. Matr Imp))) 16/10/2014 Paolo Atzeni 11
- Slides: 11