12.07.2015 Views

Basi di dati

Basi di dati

Basi di dati

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Basi</strong> <strong>di</strong> <strong>dati</strong> - Modelli e linguaggi <strong>di</strong> interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo TorloneCapitolo 3Atzeni, Ceri, Paraboschi, Torlone<strong>Basi</strong> <strong>di</strong> <strong>dati</strong>McGraw-Hill, 1996-2002Capitolo 3:ALGEBRA E CALCOLORELAZIONALE24/09/2002Copyright © 2002 - The McGraw-Hill Companies, srl


<strong>Basi</strong> <strong>di</strong> <strong>dati</strong> - Modelli e linguaggi <strong>di</strong> interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo TorloneCapitolo 3Matricola73095998 56989553 40765698 812340768123Nome Età Stipen<strong>di</strong>oRossi 34 45Bianchi Bruni 37 43 38 42Mori Neri 42 45 35 50Bruni Lupi 43 46 42 60Mori 45 50Lupi 46 60SEL Stipen<strong>di</strong>o>40 (Impiegati)24/09/2002Copyright © 2002 - The McGraw-Hill Companies, srl


<strong>Basi</strong> <strong>di</strong> <strong>dati</strong> - Modelli e linguaggi <strong>di</strong> interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo TorloneCapitolo 3• Trovare matricola, nome ed età degliimpiegati che guadagnano più <strong>di</strong> 40milioniPROJ Matricola, Nome, Età(SEL Stipen<strong>di</strong>o>40 (Impiegati))24/09/2002Copyright © 2002 - The McGraw-Hill Companies, srl


<strong>Basi</strong> <strong>di</strong> <strong>dati</strong> - Modelli e linguaggi <strong>di</strong> interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo TorloneCapitolo 3Matricola73095998 56989553 40765698 812340768123Nome Età Stipen<strong>di</strong>oRossi 34 45Bianchi Bruni 37 43 38 42Mori Neri 42 45 35 50Bruni Lupi 43 46 42 60Mori 45 50Lupi 46 60PROJ Matricola, Nome, Età( SEL Stipen<strong>di</strong>o>40 (Impiegati) )24/09/2002Copyright © 2002 - The McGraw-Hill Companies, srl


<strong>Basi</strong> <strong>di</strong> <strong>dati</strong> - Modelli e linguaggi <strong>di</strong> interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo TorloneCapitolo 3• Trovare le matricole dei capi degliimpiegati che guadagnano più <strong>di</strong> 40milioniPROJ Capo (SupervisioneJOIN Impiegato=Matricola(SEL Stipen<strong>di</strong>o>40 (Impiegati)))24/09/2002Copyright © 2002 - The McGraw-Hill Companies, srl


<strong>Basi</strong> <strong>di</strong> <strong>dati</strong> - Modelli e linguaggi <strong>di</strong> interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo TorloneCapitolo 3• Trovare nome e stipen<strong>di</strong>o dei capi degliimpiegati che guadagnano più <strong>di</strong> 40milioniPROJ Nome,Stipen<strong>di</strong>o (Impiegati JOIN Matricola=CapoPROJ Capo (SupervisioneJOIN Impiegato=Matricola (SEL Stipen<strong>di</strong>o>40 (Impiegati))))24/09/2002Copyright © 2002 - The McGraw-Hill Companies, srl


<strong>Basi</strong> <strong>di</strong> <strong>dati</strong> - Modelli e linguaggi <strong>di</strong> interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo TorloneCapitolo 3• Trovare gli impiegati che guadagnano piùdel proprio capo, mostrando matricola,nome e stipen<strong>di</strong>o dell'impiegato e delcapoPROJ Matr,Nome,Stip,MatrC,NomeC,StipC(SEL Stipen<strong>di</strong>o>StipC (REN MatrC,NomeC,StipC,EtàC ← Matr,Nome,Stip,Età (Impiegati)JOIN MatrC=Capo(Supervisione JOIN Impiegato=Matricola Impiegati)))24/09/2002Copyright © 2002 - The McGraw-Hill Companies, srl


<strong>Basi</strong> <strong>di</strong> <strong>dati</strong> - Modelli e linguaggi <strong>di</strong> interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo TorloneCapitolo 3• Trovare le matricole dei capi i cuiimpiegati guadagnano tutti più <strong>di</strong> 40milioniPROJ Capo (Supervisione) -PROJ Capo (SupervisioneJOIN Impiegato=Matricola(SEL Stipen<strong>di</strong>o ≤ 40 (Impiegati)))24/09/2002Copyright © 2002 - The McGraw-Hill Companies, srl


<strong>Basi</strong> <strong>di</strong> <strong>dati</strong> - Modelli e linguaggi <strong>di</strong> interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo TorloneCapitolo 3Equivalenza <strong>di</strong> espressioni• Due espressioni sono equivalenti seproducono lo stesso risultatoqualunque sia l'istanza attuale dellabase <strong>di</strong> <strong>dati</strong>• L'equivalenza è importante in praticaperché i DBMS cercano <strong>di</strong> eseguireespressioni equivalenti a quelle date,ma meno "costose"24/09/2002Copyright © 2002 - The McGraw-Hill Companies, srl


<strong>Basi</strong> <strong>di</strong> <strong>dati</strong> - Modelli e linguaggi <strong>di</strong> interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo TorloneCapitolo 3Un 'equivalenza importante• Push selections (se A è attributo <strong>di</strong> R 1 )SEL A=10 (R 1 JOIN R 2 ) = R 1 JOIN SEL A=10 ( R 2 )• Riduce in modo significativo la<strong>di</strong>mensione del risultato interme<strong>di</strong>o (equin<strong>di</strong> il costo dell'operazione)24/09/2002Copyright © 2002 - The McGraw-Hill Companies, srl


<strong>Basi</strong> <strong>di</strong> <strong>dati</strong> - Modelli e linguaggi <strong>di</strong> interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo TorloneCapitolo 3Selezione con valori nulli24/09/2002ImpiegatiMatricola730959989553Cognome Filiale EtàRossi Roma 32Neri Milano 45Bruni Milano NULLSEL Età > 40 (Impiegati)• la con<strong>di</strong>zione atomica è vera solo pervalori non nulliCopyright © 2002 - The McGraw-Hill Companies, srl


<strong>Basi</strong> <strong>di</strong> <strong>dati</strong> - Modelli e linguaggi <strong>di</strong> interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo TorloneCapitolo 3Un risultato non desiderabileSEL Età>30 (Persone) ∪ SEL (Persone) ≠Età≤30Persone• Perché? Perché le selezioni vengonovalutate separatamente!• Ma ancheSEL Età>30 ∨ Età≤30 (Persone) ≠ Persone• Perché? Perché anche le con<strong>di</strong>zioniatomiche vengono valutateseparatamente!24/09/2002Copyright © 2002 - The McGraw-Hill Companies, srl


<strong>Basi</strong> <strong>di</strong> <strong>dati</strong> - Modelli e linguaggi <strong>di</strong> interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo TorloneCapitolo 3Selezione con valori nulli: soluzioneSEL Età > 40 (Impiegati)• la con<strong>di</strong>zione atomica è vera solo per valorinon nulli• per riferirsi ai valori nulli esistono formeapposite <strong>di</strong> con<strong>di</strong>zioni:IS NULLIS NOT NULL• si potrebbe usare (ma non serve) una "logicaa tre valori" (vero, falso, sconosciuto)24/09/2002Copyright © 2002 - The McGraw-Hill Companies, srl


<strong>Basi</strong> <strong>di</strong> <strong>dati</strong> - Modelli e linguaggi <strong>di</strong> interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo TorloneCapitolo 3• Quin<strong>di</strong>:SEL Età>30 (Persone) ∪ SEL Età≤30 (Persone) ∪SEL Età IS NULL (Persone)=SEL Età>30 ∨ Età≤30 ∨ Età IS NULL (Persone)=Persone24/09/2002Copyright © 2002 - The McGraw-Hill Companies, srl


<strong>Basi</strong> <strong>di</strong> <strong>dati</strong> - Modelli e linguaggi <strong>di</strong> interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo TorloneCapitolo 3ImpiegatiMatricola Cognome Filiale Età7309 5998 Rossi Neri Milano Roma 32 455998 9553 Bruni Neri Milano NULL459553Bruni Milano NULLSEL (Età > 40) OR (Età IS NULL) (Impiegati)24/09/2002Copyright © 2002 - The McGraw-Hill Companies, srl


<strong>Basi</strong> <strong>di</strong> <strong>dati</strong> - Modelli e linguaggi <strong>di</strong> interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo TorloneCapitolo 3Viste (relazioni derivate)• Rappresentazioni <strong>di</strong>verse per gli stessi<strong>dati</strong> (schema esterno)• Relazioni derivate:• relazioni il cui contenuto è funzionedel contenuto <strong>di</strong> altre relazioni(definito per mezzo <strong>di</strong> interrogazioni)• Relazioni <strong>di</strong> base: contenuto autonomo• Le relazioni derivate possono esseredefinite su altre derivate, ma …24/09/2002Copyright © 2002 - The McGraw-Hill Companies, srl


<strong>Basi</strong> <strong>di</strong> <strong>dati</strong> - Modelli e linguaggi <strong>di</strong> interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo TorloneCapitolo 3Architettura standard (ANSI/SPARC)a tre livelli per DBMSutenteutente utenteutenteutenteSchemaesternoSchemaesternoSchemaesternoSchema logicoSchema internoBD24/09/2002Copyright © 2002 - The McGraw-Hill Companies, srl


<strong>Basi</strong> <strong>di</strong> <strong>dati</strong> - Modelli e linguaggi <strong>di</strong> interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo TorloneCapitolo 3Viste virtuali e materializzate• Due tipi <strong>di</strong> relazioni derivate:• viste materializzate• relazioni virtuali (o viste)24/09/2002Copyright © 2002 - The McGraw-Hill Companies, srl


<strong>Basi</strong> <strong>di</strong> <strong>dati</strong> - Modelli e linguaggi <strong>di</strong> interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo TorloneCapitolo 3Viste materializzate• relazioni derivate memorizzate nella base <strong>di</strong><strong>dati</strong>• vantaggi:• imme<strong>di</strong>atamente <strong>di</strong>sponibili per leinterrogazioni• svantaggi:• ridondanti• appesantiscono gli aggiornamenti• sono raramente supportate dai DBMS24/09/2002Copyright © 2002 - The McGraw-Hill Companies, srl


<strong>Basi</strong> <strong>di</strong> <strong>dati</strong> - Modelli e linguaggi <strong>di</strong> interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo TorloneCapitolo 3Viste virtuali• relazioni virtuali (o viste):• sono supportate dai DBMS (tutti)• una interrogazione su una vista vieneeseguita "ricalcolando" la vista (oquasi)24/09/2002Copyright © 2002 - The McGraw-Hill Companies, srl


<strong>Basi</strong> <strong>di</strong> <strong>dati</strong> - Modelli e linguaggi <strong>di</strong> interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo TorloneCapitolo 3AfferenzaViste, esempioImpiegato Reparto DirezioneRossi A Reparto CapoNeri B A MoriBianchi B B BruniBianchi B B Bruni• una vista:Supervisione =PROJ Impiegato, Capo (Afferenza JOIN Direzione)24/09/2002Copyright © 2002 - The McGraw-Hill Companies, srl


<strong>Basi</strong> <strong>di</strong> <strong>dati</strong> - Modelli e linguaggi <strong>di</strong> interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo TorloneCapitolo 3Interrogazioni sulle viste• Sono eseguite sostituendo alla vista lasua definizione:SEL Capo='Leoni' (Supervisione)viene eseguita comeSEL Capo='Leoni' (PROJ Impiegato, Capo (Afferenza JOIN Direzione))24/09/2002Copyright © 2002 - The McGraw-Hill Companies, srl


<strong>Basi</strong> <strong>di</strong> <strong>dati</strong> - Modelli e linguaggi <strong>di</strong> interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo TorloneViste, motivazioniCapitolo 3• Schema esterno: ogni utente vede solo• ciò che gli interessa e nel modo in cui gliinteressa, senza essere <strong>di</strong>stratto dal resto• ciò che e' autorizzato a vedere (autorizzazioni)• Strumento <strong>di</strong> programmazione:• si può semplificare la scrittura <strong>di</strong> interrogazioni:espressioni complesse e sottoespressioni ripetute• Utilizzo <strong>di</strong> programmi esistenti su schemi ristrutturatiInvece:• L'utilizzo <strong>di</strong> viste non influisce sull'efficienza delleinterrogazioni24/09/2002Copyright © 2002 - The McGraw-Hill Companies, srl


<strong>Basi</strong> <strong>di</strong> <strong>dati</strong> - Modelli e linguaggi <strong>di</strong> interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo TorloneViste come strumento <strong>di</strong>programmazioneCapitolo 3• Trovare gli impiegati che hanno lo stessocapo <strong>di</strong> Rossi• Senza vista:PROJ Impiegato (Afferenza JOIN Direzione) JOINREN ImpR,RepR ← Imp,Reparto (SEL Impiegato='Rossi' (Afferenza JOIN Direzione))• Con la vista:PROJ Impiegato (Supervisione) JOINREN ImpR,RepR ← Imp,Reparto (SEL Impiegato='Rossi' (Supervisione))24/09/2002Copyright © 2002 - The McGraw-Hill Companies, srl


Viste e aggiornamenti, attenzione<strong>Basi</strong> <strong>di</strong> <strong>dati</strong> - Modelli e linguaggi <strong>di</strong> interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo TorloneAfferenzaDirezioneImpiegato Reparto Reparto CapoRossi AA MoriNeri B BBruniVer<strong>di</strong> A BCBruniCapitolo 3SupervisioneImpiegatoRossiNeriVer<strong>di</strong>CapoMoriBruniMori• Vogliamo inserire, nella vista, il fatto che Lupiha come capo Bruni; oppure che Belli hacome capo Falchi; come facciamo?24/09/2002Copyright © 2002 - The McGraw-Hill Companies, srl


Viste e aggiornamenti<strong>Basi</strong> <strong>di</strong> <strong>dati</strong> - Modelli e linguaggi <strong>di</strong> interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo TorloneCapitolo 3• "Aggiornare una vista":• mo<strong>di</strong>ficare le relazioni <strong>di</strong> base in modo chela vista, "ricalcolata" rispecchil'aggiornamento• L'aggiornamento sulle relazioni <strong>di</strong> basecorrispondente a quello specificato sulla vistadeve essere univoco• In generale però non è univoco!• Ben pochi aggionamenti sono ammissibilisulle viste24/09/2002Copyright © 2002 - The McGraw-Hill Companies, srl


<strong>Basi</strong> <strong>di</strong> <strong>dati</strong> - Modelli e linguaggi <strong>di</strong> interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo TorloneUna convenzione e notazionealternativa per i joinCapitolo 3• Nota: è sostanzialmente l'approccio usato inSQL• Ignoriamo il join naturale (cioè nonconsideriamo implicitamente con<strong>di</strong>zioni suattributi con nomi uguali)• Per "riconoscere" attributi con lo stessonome gli premettiamo il nome della relazione• Usiamo "assegnazioni" (viste) perridenominare le relazioni (e gli attributi soloquando serve per l'unione)24/09/2002Copyright © 2002 - The McGraw-Hill Companies, srl


<strong>Basi</strong> <strong>di</strong> <strong>dati</strong> - Modelli e linguaggi <strong>di</strong> interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo TorloneCapitolo 3• Trovare gli impiegati che guadagnano piùdel proprio capo, mostrando matricola,nome e stipen<strong>di</strong>o dell'impiegato e delcapoPROJ Matr,Nome,Stip,MatrC,NomeC,StipC(SEL Stipen<strong>di</strong>o>StipC (REN MatrC,NomeC,StipC,EtàC ← Matr,Nome,Stip,Età (Impiegati)JOIN MatrC=Capo(Supervisione JOIN Impiegato=Matricola Impiegati)))24/09/2002Copyright © 2002 - The McGraw-Hill Companies, srl


<strong>Basi</strong> <strong>di</strong> <strong>dati</strong> - Modelli e linguaggi <strong>di</strong> interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo TorloneCapitolo 3PROJ Matr,Nome,Stip,MatrC,NomeC,StipC(SEL Stip>StipC (REN MatrC,NomeC,StipC,EtàC ← Matr,Nome,Stip,Età (Imp)JOIN MatrC=Capo(Sup JOIN Imp=Matr Imp)))Capi := ImpPROJ Imp.Matr, Imp.Nome, Imp.Stip,Capi.Matr,Capi.Nome, Capi.Stip(SEL Imp.Stip>Capi.Stip (Capi JOIN Capi.Matr=Capo (Sup JOIN Imp=Imp.Matr Imp)))24/09/2002Copyright © 2002 - The McGraw-Hill Companies, srl

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!