1 / 123

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999. Capitolo 3: ALGEBRA E CALCOLO RELAZIONALE 0 9 /10/2001. Linguaggi per basi di dati. operazioni sullo schema DDL: data definition language operazioni sui dati DML: data manipulation language interrogazione ("query")

Télécharger la présentation

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Atzeni, Ceri, Paraboschi, TorloneBasi di datiMcGraw-Hill, 1999 Capitolo 3: ALGEBRA E CALCOLO RELAZIONALE 09/10/2001

  2. Linguaggi per basi di dati • operazioni sullo schema • DDL: data definition language • operazioni sui dati • DML: data manipulation language • interrogazione ("query") • aggiornamento Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  3. Linguaggi di interrogazioneper basi di dati relazionali • Dichiarativi • specificano le proprietà del risultato ("che cosa") • Procedurali • specificano le modalità di generazione del risultato ("come") Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  4. Linguaggi di interrogazione • Algebra relazionale: procedurale • Calcolo relazionale: dichiarativo (teorico) • SQL (Structured Query Language): parzialmente dichiarativo (reale) • QBE (Query by Example): dichiarativo (reale) Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  5. Algebra relazionale • Insieme di operatori • su relazioni • che producono relazioni • e possono essere composti Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  6. Operatori dell'algebra relazionale • unione, intersezione, differenza • ridenominazione • selezione • proiezione • join (join naturale, prodotto cartesiano, theta-join) Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  7. Operatori insiemistici • le relazioni sono insiemi • i risultati debbono essere relazioni • è possibile applicare unione, intersezione, differenza solo a relazioni definite sugli stessi attributi Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  8. Laureati Matricola Matricola Nome Nome Età Età 7274 7274 7274 7274 9297 Neri Rossi Rossi Rossi Rossi 42 42 42 42 33 7432 Neri 7432 Neri 54 54 9824 Verdi 9824 Verdi 45 45 Quadri Matricola Nome Età 9297 9297 9297 Neri Neri Neri 33 33 33 7432 7432 7432 7432 Neri Neri Neri Neri 54 54 54 54 9824 9824 9824 9824 Verdi Verdi Verdi Verdi 45 45 45 45 Unione Laureati  Quadri Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  9. Nome Matricola Età 7274 Neri 9297 Rossi 42 33 Neri 7432 54 Verdi 9824 45 Quadri Matricola Nome Età 7432 7432 7432 7432 Neri Neri Neri Neri 54 54 54 54 9824 9824 9824 9824 Verdi Verdi Verdi Verdi 45 45 45 45 Intersezione Laureati Matricola Nome Età 7432 Neri 54 9824 Verdi 45 Laureati  Quadri Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  10. Matricola Nome Matricola Nome Età Età 7274 7274 7274 Neri 9297 Rossi Rossi Rossi 42 42 42 33 7432 7432 7432 7432 Neri Neri Neri Neri 54 54 54 54 9824 9824 9824 9824 Verdi Verdi Verdi Verdi 45 45 45 45 Quadri Matricola Nome Età Differenza Laureati Laureati – Quadri Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  11. Paternità Maternità Padre Madre Figlio Figlio Adamo Eva Abele Abele Eva Adamo Caino Set Sara Abramo Isacco Isacco Una unione sensata ma impossibile Paternità  Maternità ?? Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  12. Ridenominazione • operatore monadico (con un argomento) • "modifica lo schema" lasciando inalterata l'istanza dell'operando Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  13. Padre Figlio Adamo Abele Adamo Caino Abramo Isacco Padre Figlio Adamo Abele Adamo Caino Abramo Isacco Paternità RENGenitore  Padre (Paternità) Genitore Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  14. Paternità Maternità Padre Genitore Madre Genitore Figlio Figlio Figlio Figlio Adamo Adamo Eva Eva Abele Abele Abele Abele Adamo Eva Eva Adamo Set Caino Set Caino Sara Sara Abramo Abramo Isacco Isacco Isacco Isacco RENGenitore  Padre (Paternità) RENGenitore  Madre (Maternità) Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  15. Genitore Genitore Figlio Figlio Adamo Adamo Abele Abele Adamo Adamo Caino Caino Abramo Abramo Isacco Isacco Genitore Figlio Eva Abele Eva Abele Eva Set Eva Set Sara Isacco Sara Isacco RENGenitore  Padre (Paternità) RENGenitore  Padre (Paternità)  RENGenitore  Madre (Maternità) RENGenitore  Madre (Maternità) Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  16. Cognome Ufficio Stipendio Impiegati Rossi Roma 55 Neri Milano 64 Cognome Fabbrica Salario Operai Bruni Monza 45 Verdi Latina 55 Cognome Sede Retribuzione Rossi Roma 55 Neri Milano 64 Bruni Monza 45 Verdi Latina 55 REN Sede, Retribuzione  Ufficio, Stipendio (Impiegati)  REN Sede, Retribuzione  Fabbrica, Salario (Operai) Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  17. Selezione • operatore monadico • produce un risultato che • ha lo stesso schema dell'operando • contiene un sottoinsieme delle ennuple dell'operando, • quelle che soddisfano una condizione Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  18. Matricola Cognome Filiale Stipendio 7309 Rossi Roma 55 5998 9553 5698 Neri Neri Milano Milano Milano Napoli 64 64 44 Impiegati • impiegati che • guadagnano più di 50 • guadagnano più di 50 e lavorano a Milano • hanno lo stesso nome della filiale presso cui lavorano Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  19. Selezione, sintassi e semantica • sintassi SELCondizione (Operando) • Condizione: espressione booleana (come quelle dei vincoli di ennupla) • semantica • il risultato contiene le ennuple dell'operando che soddisfano la condizione Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  20. Impiegati Matricola Cognome Filiale Stipendio 7309 Rossi Roma 55 5698 9553 5698 5998 9553 Milano Milano Neri Neri Neri Napoli Milano Napoli Milano Milano 44 64 64 44 64 • impiegati che guadagnano più di 50 SELStipendio > 50 (Impiegati) Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  21. Impiegati Matricola Cognome Filiale Stipendio 7309 7309 Rossi Rossi Roma Roma 55 55 5698 9553 5698 5998 9553 5998 Neri Neri Neri Neri Milano Milano Napoli Milano Milano Milano Napoli Milano 64 44 64 64 44 64 • impiegati che guadagnano più di 50 e lavorano a Milano SELStipendio > 50 AND Filiale = 'Milano' (Impiegati) Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  22. Impiegati Matricola Cognome Filiale Stipendio 7309 7309 Rossi Rossi Roma Roma 55 55 9553 5698 9553 5998 5698 5998 Neri Neri Milano Neri Milano Neri Napoli Milano Milano Milano Napoli Milano 64 64 64 44 44 64 • impiegati che hanno lo stesso nome della filiale presso cui lavorano SEL Cognome= Filiale(Impiegati) Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  23. Matricola Cognome Filiale Età 7309 Rossi Roma 32 9553 5998 Bruni Neri Milano Milano NULL 45 Selezione con valori nulli Impiegati SEL Età > 40 (Impiegati) • la condizione atomica è vera solo per valori non nulli Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  24. Un risultato non desiderabile SEL Età>30 (Persone)  SEL Età30 (Persone)  Persone • Perché? Perché le selezioni vengono valutate separatamente! • Ma anche SEL Età>30  Età30 (Persone)  Persone • Perché? Perché anche le condizioni atomiche vengono valutate separatamente! Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  25. SEL Età > 40 (Impiegati) • la condizione atomica è vera solo per valori non nulli • per riferirsi ai valori nulli esistono forme apposite di condizioni: IS NULL IS NOT NULL • si potrebbe usare (ma non serve) una "logica a tre valori" (vero, falso, sconosciuto) Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  26. A questo punto: SEL Età>30 (Persone)  SEL Età30 (Persone)  SEL Età IS NULL (Persone) = SEL Età>30  Età30  Età IS NULL(Persone) = Persone Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  27. Matricola Cognome Filiale Età 7309 Rossi Roma 32 9553 5998 5998 9553 5998 9553 Neri Bruni Bruni Neri Bruni Neri Milano Milano Milano Milano Milano Milano 45 45 NULL 45 NULL NULL Impiegati SEL (Età > 40) OR (Età IS NULL) (Impiegati) Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  28. Selezione e proiezione • operatori "ortogonali" • selezione: • decomposizione orizzontale • proiezione: • decomposizione verticale Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  29. selezione proiezione Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  30. Proiezione • operatore monadico • produce un risultato che • ha parte degli attributi dell'operando • contiene ennuple cui contribuiscono tutte le ennuple dell'operando Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  31. Matricola Cognome Filiale Stipendio 7309 Neri Napoli 55 5998 9553 5698 Neri Rossi Rossi Milano Roma Roma 64 64 44 Impiegati • per tutti gli impiegati: • matricola e cognome • cognome e filiale Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  32. Proiezione, sintassi e semantica • sintassi PROJListaAttributi (Operando) • semantica • il risultato contiene le ennuple ottenute da tutte le ennuple dell'operando ristrette agli attributi nella lista Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  33. Matricola Cognome Filiale Stipendio 7309 Neri Napoli 55 5998 5698 9553 Rossi Neri Rossi Milano Roma Roma 44 64 64 • matricola e cognome di tutti gli impiegati PROJ Matricola, Cognome (Impiegati) Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  34. Matricola Cognome Filiale Stipendio 7309 Neri Napoli 55 5998 5698 9553 Rossi Neri Rossi Milano Roma Roma 44 64 64 • cognome e filiale di tutti gli impiegati PROJ Cognome, Filiale (Impiegati) Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  35. Cardinalità delle proiezioni • una proiezione • contiene al più tante ennuple quante l'operando • può contenerne di meno • se X è una superchiave di R, allora PROJX(R) contiene esattamente tante ennuple quante R Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  36. Selezione e proiezione • Combinando selezione e proiezione, possiamo estrarre interessanti informazioni da una relazione Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  37. Matricola Cognome Filiale Stipendio 7309 Rossi Roma 55 5698 9553 5698 5998 9553 Milano Milano Neri Neri Neri Napoli Milano Napoli Milano Milano 44 64 64 44 64 • matricola e cognome degli impiegati che guadagnano più di 50 PROJMatricola,Cognome ( ) SELStipendio > 50 (Impiegati) Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  38. Combinando selezione e proiezione, possiamo estrarre informazioni da una relazione • non possiamo però correlare informazioni presenti in relazioni diverse Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  39. Join • il join è l'operatore più interessante dell'algebra relazionale • permette di correlare dati in relazioni diverse Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  40. Prove scritte in un concorso pubblico • I compiti sono anonimi e ad ognuno è associata una busta chiusa con il nome del candidato • Ciascun compito e la relativa busta vengono contrassegnati con uno stesso numero Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  41. 1 2 3 4 25 13 27 28 1 Mario Rossi 2 Nicola Russo 3 Mario Bianchi 4 Remo Neri Mario Rossi 25 Nicola Russo 13 Mario Bianchi 27 Remo Neri 28 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  42. Numero Voto Numero Candidato 1 25 1 Mario Rossi 2 13 2 Nicola Russo 3 27 3 Mario Bianchi 4 28 4 Remo Neri Numero Mario Rossi Candidato 25 Voto 1 Nicola Russo 13 2 Mario Bianchi 27 3 Remo Neri 28 4 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  43. Join naturale • operatore binario (generalizzabile) • produce un risultato • sull'unione degli attributi degli operandi • con ennuple costruite ciascuna a partire da una ennupla di ognuno degli operandi Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  44. Join, sintassi e semantica • R1(X1), R2(X2) • R1JOIN R2 è una relazione su X1X2 { t su X1X2 | esistono t1R1e t2R2 con t[X1]=t1 e t[X2] =t2 } Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  45. Impiegato Reparto Reparto Capo Rossi Rossi Rossi A A A A A A Mori Mori Mori Neri Neri Neri B B B B B B B B Bruni Bruni Bruni Bruni Bruni Bianchi Bianchi Bianchi B B B Impiegato Reparto Capo Rossi A Mori Neri B Bruni Bianchi B Bruni • ogni ennupla contribuisce al risultato: • join completo Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  46. Impiegato Reparto Reparto Capo Rossi A B Mori Neri B C Bruni Bianchi B Impiegato Reparto Capo Neri B Mori Bianchi B Mori Un join non completo A C Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  47. Impiegato Reparto Reparto Capo Rossi A D Mori Neri B C Bruni Bianchi B Impiegato Reparto Capo Un join vuoto Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  48. Impiegato Reparto Reparto Capo Rossi Rossi Rossi A A B A B A Mori Mori Mori Neri Neri Neri B B B B B B B B Bruni Bruni Bruni Bruni Bruni Impiegato Reparto Capo Rossi Rossi B B Bruni Mori Neri B Mori Bianchi B Bruni Un join completo, con n x m ennuple Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  49. Cardinalità del join • Il join di R1e R2contiene un numero di ennuple compreso fra zero e il prodotto di |R1| e |R2| • se il join coinvolge una chiave di R2, allora il numero di ennuple è compreso fra zero e |R1| • se il join coinvolge una chiave di R2 e un vincolo di integrità referenziale, allora il numero di ennuple è pari a |R1| Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

  50. Cardinalità del join, esempi • R1(A,B) , R2 (B,C) • in generale 0 |R1JOIN R2| |R1|  |R2| • se B è chiave in R2 0 |R1JOIN R2| |R1| • se B è chiave in R2 ed esiste vincolo di integrità referenziale fra B (in R1) e R2: |R1JOIN R2|=|R1| Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

More Related