ALGEBRA RELAZIONALE Le basi di dati rappresentano le informazioni di interesse per applicazioni che gestiscono i dati E’ importante considerare linguaggi per la specifica di operazioni sui dati stessi, che siano legati al modello dei dati scelto (modello relazionale) Algebra Relazionale 2 Linguaggi per basi di dati operazioni sullo schema DDL: data definition language per definire lo schema VDL: view definition language per definire le viste d’utente operazioni sui dati DML: data manipulation language interrogazione ("query") inserimento, cancellazione e aggiornamento dei dati Algebra Relazionale 3 Linguaggi per l’interrogazione Una base di dati richiede un insieme di operazioni che consentano all’utente di specificare le richieste di recupero fondamentali Le operazioni di questo tipo producono nuove relazioni, sulle quali è ulteriormente possibile applicare operazioni Algebra Relazionale 4 Linguaggi di interrogazione per basi di dati relazionali Dichiarativi (di alto livello) le espressioni specificano le proprietà del risultato ("che cosa") Procedurali (di basso livello) specificano le modalità di generazione del risultato ("come") Algebra Relazionale 5 Linguaggi di interrogazione Algebra relazionale: procedurale (teorico) Calcolo relazionale: dichiarativo (teorico) SQL (Structured Query Language): combina gli aspetti dichiarativi del calcolo e quelli procedurali dell’algebra (linguaggio reale) Algebra Relazionale 6 Algebra relazionale Insieme di operatori, definiti su relazioni, che producono ancora relazioni come risultati insiemistici: unione, intersezione, differenza specifici: ridenominazione, selezione, proiezione join: join naturale, prodotto cartesiano, theta-join raggruppamento: divisione Algebra Relazionale 7 Operatori insiemistici le relazioni sono insiemi i risultati debbono essere relazioni - è sensato applicare le operazioni insiemistiche classiche di unione,intersezione, differenza - è possibile applicare solo a relazioni definite sugli stessi attributi Algebra Relazionale 8 Unione Laureati Quadri Matricola Nome 7274 Rossi 7432 Neri 9824 Verdi Età 42 54 45 Matricola Nome 9297 Neri 7432 Neri 9824 Verdi Età 33 54 45 Laureati Quadri Matricola Nome 7274 Rossi 7432 Neri 9824 Verdi 9297 Neri Algebra Relazionale Età 42 54 45 33 9 Intersezione Laureati Quadri Matricola Nome 7274 Rossi 7432 Neri 9824 Verdi Età 42 54 45 Matricola Nome 9297 Neri 7432 Neri 9824 Verdi Età 33 54 45 Laureati Quadri Matricola Nome 7432 Neri 9824 Verdi Algebra Relazionale Età 54 45 10 Differenza Laureati Quadri Matricola Nome 7274 Rossi 7432 Neri 9824 Verdi Età 42 54 45 Matricola Nome 9297 Neri 7432 Neri 9824 Verdi Età 33 54 45 Matricola Nome Età Laureati 7274 – Quadri Rossi 42 7432 Neri 54 9824 Verdi 45 Algebra Relazionale 11 Una unione sensata ma impossibile Paternità Maternità Padre Adamo Adamo Abramo Figlio Abele Caino Isacco Madre Eva Eva Sara Figlio Abele Set Isacco Paternità Maternità ?? Algebra Relazionale 12 Ridenominazione operatore unario "modifica lo schema" lasciando inalterata l'istanza dell'operando, cambia solo il nome degli attributi Algebra Relazionale 13 Ridenominazione: definizione formale Siano R una relazione su X, e Y un altro insieme di attributi con la stessa cardinalità X = {A1,……. Ak} Y = {B1,……. Bk} La ridenominazione A1,……. Ak B1,……. Bk (R) contiene una ennupla t’ per ogni ennupla t in R tale che: t’ è una ennupla su Y t’[Bi]=t[Ai], per ogni i=1,…,k Algebra Relazionale 14 Paternità Padre Adamo Adamo Abramo Figlio Abele Caino Isacco Genitore Padre (Paternità) Genitore Padre Figlio Adamo Abele Adamo Caino Abramo Isacco Algebra Relazionale 15 Genitore Padre (Paternità) Paternità Padre Adamo Adamo Abramo Figlio Abele Caino Isacco Genitore Madre (Maternità) Maternità Madre Eva Eva Sara Genitore Figlio Adamo Abele Adamo Caino Abramo Isacco Figlio Abele Set Isacco Genitore Figlio Eva Abele Eva Set Sara Isacco Algebra Relazionale 16 Genitore Padre (Paternità) (Paternità) Genitore Padre Genitore Figlio Adamo Adamo Abramo Abele Caino Isacco Genitore Madre (Maternità) Genitore Madre (Maternità) Genitore Figlio Eva Abele Eva Set Sara Isacco Algebra Relazionale Genitore Figlio Adamo Abele Adamo Caino Abramo Isacco Eva Abele Eva Set Sara Isacco 17 Impiegati Cognome Ufficio Stipendio Rossi Neri Operai Roma Milano 55 64 Cognome Fabbrica Salario Bruni Monza 45 Verdi Latina 55 Sede, Retribuzione Ufficio, Stipendio (Impiegati) Sede, Retribuzione Fabbrica, Salario (Operai) Cognome Rossi Neri Bruni Verdi Sede Retribuzione Roma 55 Milano 64 Monza 45 Latina 55 Selezione operatore unario su una tabella produce un risultato che ha lo stesso schema della relazione di partenza (colonne della tabella) contiene un sottoinsieme delle ennuple dell'operando (righe della tabella), quelle che soddisfano una condizione Algebra Relazionale 19 Selezione A B C A Algebra Relazionale B C 20 Impiegati Matricola Cognome Filiale Stipendio 7309 Rossi Roma 55 5998 Neri Milano 64 9553 Milano Milano 44 5698 Neri Napoli 64 impiegati che: guadagnano più di 50 guadagnano più di 50 e lavorano a Milano hanno lo stesso nome della filiale presso cui lavorano Algebra Relazionale 21 Selezione, sintassi e semantica sintassi Condizione (Operando) Condizione: espressione booleana Operando: una espressione dell’algebra relazionale semantica il risultato è una relazione sugli stessi attributi che contiene le ennuple dell'operando che soddisfano la condizione Algebra Relazionale 22 Condizione di selezione F formula proposizionale formata da • operatori booleani: (AND), (OR), ¬ (NOT) • condizioni atomiche: termini che possono contenere confronti fra attributi, o fra attributi e costanti. Hanno forma: AJB oppure AJc dove – Joperatore di confronto (=, , >, <, , ) – A, B attributi in X – c costante compatibile con dominio di attributo (A) con cui c viene confrontata Algebra Relazionale 23 Condizioni di selezione, esempi Esempi: (Stipendio > 50) Filiale='Milano' Cognome = Filiale (Stipendio > 50) AND (Filiale='Milano') NOT (Cognome='Neri') Algebra Relazionale 24 impiegati che guadagnano più di 50 Impiegati Matricola Cognome Filiale Stipendio 7309 Rossi Roma 55 5998 Neri Milano 64 9553 5698 Milano Neri Milano Napoli 44 64 5698 Neri Napoli 64 Stipendio > 50 (Impiegati) Algebra Relazionale 25 impiegati che guadagnano più di 50 e lavorano a Milano Impiegati Matricola Cognome Filiale Stipendio 7309 5998 Rossi Neri Milano Roma 55 64 5998 Neri Milano 64 9553 Milano Milano 44 5698 Neri Napoli 64 Stipendio > 50 AND Filiale = 'Milano' Algebra Relazionale (Impiegati) 26 impiegati che hanno lo stesso nome della filiale presso cui lavorano Impiegati Matricola Cognome Filiale Stipendio 7309 9553 Milano Rossi Milano Roma 55 44 5998 Neri Milano 64 9553 Milano Milano 44 5698 Neri Napoli 64 Cognome = Filiale(Impiegati) Algebra Relazionale 27 Osservazioni l’operazione di selezione è commutativa <Cond1> ( <Cond2> (R)) = <Cond2> ( <Cond1> (R)) = <Cond1> AND <Cond2> (R) il numero delle t-uple della relazione R dopo l’applicazione di una selezione è minore o uguale al numero delle t-uple di R | <Cond> (R) | | R | Algebra Relazionale 28 Selezione con valori nulli Impiegati Matricola Cognome Filiale 7309 Rossi Roma 9553 Bruni Milano 5998 Neri Milano Età 32 NULL 45 Età > 40 (Impiegati) • la condizione atomica è vera solo per valori non nulli Algebra Relazionale 29 Un risultato non desiderabile Età>30 (Persone) Età30 (Persone) Persone Perché? Perché le selezioni vengono valutate separatamente! Ma anche Età>30 Età30 (Persone) Persone Perché? Perché anche le condizioni atomiche vengono valutate separatamente! Algebra Relazionale 30 Età > 40 (Impiegati) la condizione atomica è vera solo per valori non nulli per riferirsi ai valori nulli esiste la apposita di condizione: IS NULL Algebra Relazionale 31 A questo punto: Età>30 (Persone) Età30 (Persone) Età IS NULL (Persone) = Età>30 Età30 (Età IS NULL) (Persone) = Persone Algebra Relazionale 32 Logica con il valore NULL Oltre ai valori di verità Vero (V) e Falso (F), si introduce NULL (?) NOT ( A IS NULL) si scrive anche A IS NOT NULL Algebra Relazionale 33 Impiegati Matricola Cognome Filiale 7309 5998 Rossi Neri Milano Roma 5998 9553 Bruni Neri Milano 9553 Bruni Milano Età 32 45 NULL 45 NULL (Età > 40) OR (Età IS NULL) (Impiegati) Algebra Relazionale 35 Selezione e proiezione operatori "ortogonali" selezione: decomposizione orizzontale proiezione: decomposizione verticale Algebra Relazionale 36 selezione proiezione Proiezione operatore unario su una tabella produce un risultato che ha parte degli attributi della tabella contiene ennuple (righe) cui contribuiscono tutte le ennuple della tabella iniziale Algebra Relazionale 38 Impiegati Matricola Cognome Filiale Stipendio 7309 Neri Napoli 55 5998 Neri Milano 64 9553 Rossi Roma 44 5698 Rossi Roma 64 per tutti gli impiegati: matricola e cognome cognome e filiale Algebra Relazionale 39 Proiezione, sintassi e semantica sintassi <ListaAttributi> (Operando) <ListaAttributi> è un elenco di attributi di Operando Operando è una espressione nell’algebra relazionale semantica il risultato contiene le ennuple ottenute da tutte le ennuple dell'operando ristrette agli attributi nella lista Algebra Relazionale 40 matricola e cognome di tutti gli impiegati Matricola Cognome Filiale Stipendio 7309 Neri Napoli 55 5998 Neri Milano 64 9553 Rossi Roma 44 5698 Rossi Roma 64 Matricola, Cognome (Impiegati) Algebra Relazionale 41 cognome e filiale di tutti gli impiegati Matricola Cognome Filiale Stipendio 7309 Neri Napoli 55 5998 Neri Milano 64 9553 Rossi Roma 44 5698 Rossi Roma 64 Cognome, Filiale (Impiegati) Algebra Relazionale 42 Cardinalità delle proiezioni una proiezione contiene al più tante ennuple quante l'operando può contenerne di meno se X è una superchiave di R, allora X(R) contiene esattamente tante ennuple quante R Algebra Relazionale 43 Selezione e proiezione Combinando selezione e proiezione, possiamo estrarre interessanti informazioni da una relazione Cond ( A,B,C (R) ) = ( A,B,C Cond (R) ) ? Sono commutative a certe condizioni ! Algebra Relazionale 44 matricola e cognome degli impiegati che guadagnano più di 50 Matricola Cognome Filiale Stipendio 7309 Rossi Roma 55 5998 Neri Milano 64 9553 5698 Milano Neri Milano Napoli 44 64 5698 Neri Napoli 64 Matricola,Cognome ( Stipendio > 50 (Impiegati) ) Algebra Relazionale 45 combinando selezione e proiezione, possiamo estrarre informazioni da una relazione non possiamo però correlare informazioni presenti in relazioni diverse Algebra Relazionale 46 Join il join è l'operatore più interessante dell'algebra relazionale permette di correlare dati in relazioni diverse sfrutta la caratteristica fondamentale del modello relazionale, che è quella di essere basato su valori Algebra Relazionale 47 Idea del join naturale matricola cognome data_nasc matricola corso voto 2021 Rossi 1-3-1975 2021 Basi dati 28 2424 Bianchi 23-3-1974 2021 Calcolo 25 3445 Neri 2-2-1975 3445 3445 Algebra Algebra 30 30 matricola cognome data_nasc corso voto 2021 Rossi Rossi 1-3-1975 1-3-1975 Basi dati 28 2021 Rossi 1-3-1975 Calcolo 25 3545 3445 Neri Neri 2-2-1975 2-2-1975 Algebra Algebra 30 30 Join naturale operatore binario (generalizzabile a più relazioni) produce un risultato sull'unione degli attributi degli operandi (schema) con ennuple costruite ciascuna a partire da una ennupla di ognuno degli operandi (istanza) Algebra Relazionale 49 Join, sintassi e semantica R1(X1), R2(X2) R1 R2 è una relazione su X1X2 { t su X1 X2 : esistono t1R1e t2R2 con t[X1] =t1 [X1] e t[X2] =t2 [X2] } Algebra Relazionale 50 Join, proprietà Il join naturale è commutativo: R1 R2 = R2 R1 Il join naturale è associativo: ( R1 R2 ) R3 = R1 ( R2 R3 ) Algebra Relazionale 51 studenti Matricola Cognome 6554 Rossi 8765 Neri 9283 Verdi 3456 Rossi esami Matricola 3456 3456 9283 6554 corsi Corso 01 02 04 (studenti esami) ((studenti esami) corsi ) Voto 30 24 28 26 Nome Mario Paolo Luisa Maria Corso 04 02 01 01 Titolo Docente Analisi Mario Chimica Bruni Chimica Verdi Impiegato Reparto Rossi A Neri B Bianchi B Reparto A B Impiegato Reparto Rossi A Neri B Bianchi B Capo Mori Bruni Capo Mori Bruni Bruni ogni ennupla contribuisce al risultato: join completo Un join non completo Impiegato Reparto Rossi A Neri B Bianchi B Reparto B C Impiegato Reparto Neri B Bianchi B Algebra Relazionale Capo Mori Bruni Capo Mori Mori 54 Un join vuoto Impiegato Reparto Rossi A Neri B Bianchi B Reparto D C Impiegato Reparto Algebra Relazionale Capo Mori Bruni Capo 55 Un join completo, con n x m ennuple Ogni n-upla di ciascuna tabella è combinabile con tutte le n-uple dell’altro Impiegato Reparto Rossi A B Neri B Reparto A B B Impiegato Reparto Rossi B Rossi B Neri B Bianchi Algebra Relazionale B Capo Mori Bruni Capo Mori Bruni Mori Bruni 56 Cardinalità del join Il join di R1(A) e R2(B) contiene un numero di ennuple compreso fra zero e il prodotto di |R1| e |R2| Algebra Relazionale 57 se il join coinvolge una chiave di R1 allora il numero di ennuple è compreso tra zero e |R2| Impiegato Reparto Rossi A Neri B Bianchi B Impiegato Capo Rossi Mori Neri Bruni Neri Bianchi Verdi Bianchi Impiegato Reparto Capo A Mori Rossi B Bruni Neri B Bianchi Neri se il join coinvolge una chiave di R1 e c’è un vincolo di integrità allora il numero di ennuple è compreso uguale a |R2| Impiegato Reparto Rossi A Neri B Bianchi B Impiegato Capo Rossi Mori Neri Bruni Neri Bianchi Impiegato Reparto Capo A Mori Rossi B Bruni Neri B Bianchi Neri Cardinalità del join, riepilogo R1(A,B) , R2 (B,C) in generale: 0 |R1 R2| |R1| · |R2| se B è chiave in R1 0 |R1 R2| |R2| se B è chiave in R1 ed esiste vincolo di integrità referenziale fra B (in R2) e R1 |R1 R2| = |R2| Algebra Relazionale 60 Join naturale e valori nulli Algebra Relazionale 61 Join, una difficoltà Impiegato Reparto Rossi A Neri B Bianchi B Reparto B C Capo Mori Bruni Impiegato Reparto Capo Neri B Mori Bianchi B Mori alcune ennuple non contribuiscono al risultato: vengono "tagliate fuori'': si possono omettere informazioni importanti Algebra Relazionale 62 Join esterno Il join esterno estende, con valori nulli, le ennuple che verrebbero tagliate fuori da un join (naturale) esiste in tre versioni: sinistro, destro, completo Algebra Relazionale 63 Join esterno sinistro: prevede che tutte le ennuple del primo operando, estendendole con valori nulli, se necessario, diano un contributo al join destro: ... del secondo operando ... completo: … di entrambi gli operandi … OSSERVAZIONE: il Join esterno non è commutativo Algebra Relazionale 64 Impiegati Impiegato Reparto Rossi A Neri B Bianchi B Reparti Reparto B C Impiegati LEFT Reparti Impiegato Reparto Neri B Bianchi B Rossi A Capo Mori Mori NULL Capo Mori Bruni Impiegati Impiegato Reparto Rossi A Neri B Bianchi B Reparti Reparto B C Impiegati RIGHT Reparti Impiegato Reparto Neri B Bianchi B NULL C Capo Mori Mori Bruni Capo Mori Bruni Impiegati Impiegato Reparto Rossi A Neri B Bianchi B Reparti Reparto B C Impiegati FULL Reparti Impiegato Reparto Neri B Bianchi B Rossi A NULL C Capo Mori Mori NULL Bruni Capo Mori Bruni studenti esami Matr 6554 4678 9283 3456 Cognome Rossi Neri Verdi Rossi Matr Voto Codice 3456 esami 3456 Corso 9283 04 6554 30 04 24 02 30 01 26 01 Nome Mario Paolo Luisa Maria corsi Codice 01 02 04 Data di nascita 05/12/1978 03/11/1976 12/11/1979 01/02/1978 Titolo Analisi Chimica Chimica Esercizio 1 Determinare i corsi tenuti dal Prof. Mari Titolo ( Docente=‘Mari’(corsi) ) Docente Mari Mari Verdi studenti esami Matr 6554 4678 9283 3456 Cognome Rossi Neri Verdi Rossi Matr Voto Codice 3456 esami 3456 Corso 9283 04 6554 30 04 24 02 30 01 26 01 Nome Mario Paolo Luisa Maria corsi Codice 01 02 04 Data di nascita 05/12/1978 03/11/1976 12/11/1979 01/02/1978 Titolo Analisi Chimica Chimica Docente Mari Mari Verdi Esercizio 2 Determinare nome, cognome e numero di matricola degli studenti che hanno ricevuto la votazione di 30 Nome, Cognome, Matr ( Voto=30( esami studenti )) studenti esami Matr 6554 4678 9283 3456 Cognome Rossi Neri Verdi Rossi Matr Voto Codice 3456 esami 3456 Corso 9283 04 6554 30 04 24 02 30 01 26 01 Nome Mario Paolo Luisa Maria Data di nascita 05/12/1978 03/11/1976 12/11/1979 01/02/1978 corsi Codice 01 02 04 Titolo Analisi Chimica Chimica Docente Mari Mari Verdi Esercizio 3 Determinare il nome e il cognome degli studenti che hanno sostenuto l'esame di Analisi studenti esami Matr 6554 4678 9283 3456 Cognome Rossi Neri Verdi Rossi Matr Voto Codice 3456 esami 3456 Corso 9283 04 6554 30 04 24 01 30 01 26 01 Nome Mario Paolo Luisa Maria Data di nascita 05/12/1978 03/11/1982 12/11/1979 01/02/1983 corsi Codice 01 02 04 Titolo Analisi Chimica Chimica Docente Mari Mari Verdi Esercizio 4 Determinare nome, cognome ed eventuali esami sostenuti da tutti gli studenti del corso di laurea che hanno più di 25 anni. Algebra Relazionale 71 studenti esami Matr 6554 4678 9283 3456 Cognome Rossi Neri Verdi Rossi Matr Voto Codice 3456 esami 3456 Corso 9283 04 6554 30 04 24 01 30 01 26 01 Nome Mario Paolo Luisa Maria Data di nascita 05/12/1978 03/11/1982 12/11/1979 01/02/1983 corsi Codice 01 02 04 Titolo Analisi Chimica Chimica Docente Mari Mari Verdi Esercizio 5 Determinare nome, cognome degli studenti del corso di laurea che non hanno sostenuto alcun esame. Algebra Relazionale 72 Join e proiezioni Impiegato Reparto Rossi A Neri B Bianchi B Reparto B C Impiegato Reparto Neri B Bianchi B Impiegato Reparto Neri B Bianchi B Capo Mori Bruni Capo Mori Mori Reparto B Capo Mori Proiezioni e join Impiegato Neri Bianchi Verdi Impiegato Neri Bianchi Verdi Reparto B B A Impiegato Neri Bianchi Neri Bianchi Verdi Reparto B B A Capo Mori Bruni Bini Reparto B B A Reparto B B B B A Capo Mori Bruni Bini Capo Mori Bruni Bruni Mori Bini Join e proiezioni R 1(X1), R 2(X2) X1 (R 1 R2 ) R 1 R(X), X = X1 X2 ( X1 (R)) ( X2 (R)) R Algebra Relazionale 75 Prodotto cartesiano Che cosa accade se si effettua un join naturale su relazioni senza attributi in comune? Prodotto cartesiano tra le due relazioni contiene sempre un numero di ennuple pari al prodotto delle cardinalità degli operandi (le ennuple sono tutte combinabili ) Algebra Relazionale 76 Impiegati Impiegato Reparto Rossi A Neri B Bianchi B Reparti Codice A B Impiegati Reparti Impiegato Reparto Codice Rossi A A Rossi A B Neri B A Neri B B Bianchi B A Bianchi B B Capo Mori Bruni Capo Mori Bruni Mori Bruni Mori Bruni Il prodotto cartesiano, in pratica, ha senso solo se seguito da selezione: Condizione (R1 R2) L'operazione viene chiamata theta-join e indicata con: R1 Cond R2 Algebra Relazionale 78 Perché "theta-join"? La condizione C è spesso una congiunzione (AND) di atomi di confronto A1J A2 dove J è uno degli operatori di confronto (=, >, <, …) se l'operatore è sempre l'uguaglianza (=) allora si parla di equi-join Algebra Relazionale 79 Impiegati Impiegato Reparto Rossi A Neri B Bianchi B Reparti Codice A B Impiegati Reparto=Codice Reparti Impiegato Reparto Codice Rossi A A Rossi A A Rossi A B Neri B B Neri B A Bianchi B B Neri B B Bianchi BEqui-join A Bianchi B B Capo Mori Bruni Capo Mori Mori Bruni Bruni Mori Bruni Bruni Mori Bruni Impiegati Impiegato Reparto Rossi A Neri B Bianchi B Reparti Reparto A B Capo Mori Bruni Impiegati Reparti Algebra Relazionale 81 Join naturale ed equi-join Impiegati Reparti Impiegato Reparto Reparto Capo Impiegati Reparti Impiegato,Reparto,Capo ( Reparto=Codice ( Impiegati Codice Reparto (Reparti) ) )) Producono lo stesso risultato ! Algebra Relazionale 82 prodotto cartesiano o join naturale? Prodotto cartesiano e Join naturale possono essere ottenuti l’uno a partire dall’altro R(A,B), S(B,C) Prodotto cartesiano : R S = A,B,C (R.B=S.B (R S) ) Join naturale : R S = ( BB’ (R) S) Algebra Relazionale 83 Operatore di divisione studenti esami Matr 6554 4678 9283 3456 Cognome Rossi Neri Verdi Rossi Matr Voto Codice 3456 esami 3456 Corso 9283 04 6554 30 04 24 01 30 01 26 01 6554 28 30 02 04 6554 Nome Mario Paolo Luisa Maria Data di nascita 05/12/1978 03/11/1982 12/11/1979 01/02/1983 corsi Codice 01 02 04 Titolo Analisi Chimica Fisica Docente Mari Mari Verdi trovare gli studenti che hanno sostenuto tutti gli esami del Algebra Relazionale corso di laurea 84 Matr,Codice(esami) Matr Codice 3456 esami 3456 Corso 9283 04 6554 04 6554 02 04 6554 Codice(corsi) 01 Codice 01 02 04 01 01 Si considerano solo Matr,Codice(esami) Codice(corsi) le righe della prima tabella che si Matr combinano con 6554 tutte le righe della seconda tabella R(XY) / S(X) è una relazione su T(Y) tale che tT(Y) se e solo se esistono n-uple tR in R tali che: -tR [Y]=t -tR [X]=l per ogni n-unpla l di S Algebra Relazionale 85 Un insieme completo di operazioni Teorema: L’insieme delle operazioni { , , , , - } è un insieme completo. ESEMPIO R S=(R S) - (( R-S) ( S- R )) Join naturale = Prod. Cartesiano + Selezione + Proiezione Divisione= Prodotto Cartesiano + Differenza + Algebra Relazionale Proiezione 86 Alcune operazioni in algebra relazionale Esempio: qual è la squadra prima in classifica? Classifica Squadra Siena Inter Juve Punti 40 36 34 Algebra Relazionale 87 Ridenominazione + Join Squadra1 Punti1 Squadra2 Punti2 Siena 40 Siena 40 Inter 36 Siena 40 Siena 40 Juve 34 Inter 36 Juve 34 …. … …. … Algebra Relazionale 88 Selezione sulla condizione: (Punti1 Punti2) AND (Squadra1 Squadra2) Squadra1 Punti1 Squadra2 Punti2 Juve 34 Siena 40 Inter 36 Siena 40 Juve 34 Inter 36 Proiezione su Squadre che hanno Squadra1, Punti1 meno punti di almeno un’altra squadra Squadra1 Punti1 Juve Inter Algebra Relazionale Classifica 2 Squadre che hanno più 34 punti di almeno 36 un’altra squadra 89 Classifica Squadra Siena Inter Juve Classifica 2 Punti 40 36 34 Squadra1 Punti1 Juve Inter Differenza tra la tabella Classifica e Classifica 2 (dopo opportuna ridenominazione) Algebra Relazionale 34 36 Squadra Punti Siena 40 90 Chiusura transitiva Supervisione(Impiegato, Capo) Per ogni impiegato, trovare tutti i superiori (cioè il capo, il capo del capo, e cosi' via) Impiegato Rossi Neri Lupi Capo Mori Lupi Bruni Falchi Impiegato Rossi Neri Lupi Rossi Algebra Relazionale Superiore Mori Lupi Bruni Falchi Falchi 91 Chiusura transitiva, come si fa? Nell'esempio, basterebbe il join della relazione con se stessa, previa opportuna ridenominazione Ma: Impiegato Rossi Neri Lupi Falchi Capo Mori Lupi Bruni Falchi Leoni Impiegato Rossi Neri Lupi Rossi Lupi Rossi Algebra Relazionale Superiore Mori Lupi Bruni Falchi Falchi Leoni Leoni 92 Chiusura transitiva, impossibile! Per ogni specifico livello è possibile determinare tutti gli impiegati sorvegliati da un impegato a un certo livello, ma non quelli sorvegliati a tutti i livelli Non esiste in algebra la possibilità di esprimere l'interrogazione che, per ogni relazione binaria, ne calcoli la chiusura transitiva Per ciascuna istanza relazione, è possibile calcolare la chiusura transitiva, ma con un'espressione ogni volta diversa: dipende dall’istanza e non dallo schema! Immaginate una istanza di migliaia di tuple: quanti join servono? Algebra Relazionale 93 Interrogazioni in algebra relazionale Una interrogazione su una base di dati è una funzione che restituisce una relazione R su un insieme di attributi X. Algebra Relazionale 94 Esempi Impiegati Matricola Nome Età Stipendio 7309 Rossi 34 45 5998 Bianchi 37 38 9553 Neri 42 35 5698 Bruni 43 42 4076 Mori 45 50 8123 Lupi 46 60 Supervisione Impiegato Capo 7309 5698 5998 5698 9553 4076 5698 4076 4076 8123 Trovare matricola, nome, età e stipendio degli impiegati che guadagnano più di 40 milioni Stipendio>40 (Impiegati) Algebra Relazionale 96 Matricola Nome Età Stipendio 7309 Rossi 34 45 5998 5698 Bianchi Bruni 37 43 38 42 9553 4076 Mori Neri 42 45 35 50 5698 8123 Bruni Lupi 43 46 42 60 4076 Mori 45 50 8123 Lupi 46 60 Stipendio>40(Impiegati) Algebra Relazionale 97 Trovare matricola, nome ed età degli impiegati che guadagnano più di 40 milioni Matricola, Nome, Età (Stipendio>40(Impiegati)) Matricola Nome Età Stipendio 7309 Rossi 34 45 5998 5698 Bianchi Bruni 37 43 38 42 9553 4076 Mori Neri 42 45 35 50 5698 8123 Bruni Lupi 43 46 42 60 4076 Mori 45 50 8123 Lupi 46 60 Algebra Relazionale 98 Trovare le matricole dei capi degli impiegati che guadagnano più di 40 milioni Capo (Supervisione Impiegato=Matricola ( Stipendio>40(Impiegati))) Algebra Relazionale 99 Trovare nome e stipendio dei capi degli impiegati che guadagnano più di 40 milioni Nome,Stipendio (Impiegati Matricola=Capo Capo(Supervisione Impiegato=Matricola ( Stipendio>40(Impiegati)))) Algebra Relazionale 100 Capo 5698 4076 8123 Capo (Supervisione Impiegato=Matricola(Stipendio>40(Impiegati))) Matricola Nome Età Stipendio 7309 Rossi 34 45 5998 Bianchi 37 38 9553 Neri 42 35 5698 Bruni 43 42 4076 Mori 45 50 8123 Lupi 46 60 Impiegati Impiegati Matricola=Capo Capo(Supervisione Impiegato=Matricola ( Stipendio>40(Impiegati)))) Capo Matricola Nome Età Stipendio 5698 5698 Bianchi 37 38 4076 4076 Mori 45 50 8123 8123 Lupi 46 60 Algebra Relazionale 102 Nome,Stipendio (Impiegati Matricola=Capo Capo(Supervisione Impiegato=Matricola (Stipendio>40(Impiegati)))) Nome Stipendio Bianchi 38 Mori 50 Lupi 60 Nome e stipendio dei capi di impiegati che guadagnano più di 40 milioni Algebra Relazionale 103 Trovare gli impiegati che guadagnano più del proprio capo, mostrando matricola, nome e stipendio dell'impiegato e del capo Matr,Nome,Stip,MatrC,NomeC,StipC ( Stipendio>StipC( MatrC,NomeC,StipC,EtàC Matr,Nome,Stip,Età(Impiegati) MatrC=Capo (Supervisione Impiegato=Matricola Impiegati))) Algebra Relazionale 104 Equivalenza di espressioni algebriche Espressioni E1 e E2 sono equivalenti per lo schema R, E1RE2 se E1(r) = E2(r) per ogni istanza r di R. Le due espressioni sono assolutamente equivalenti, E1E2 se E1 R E2 per ogni schema R. Algebra Relazionale 105 equivalenza assoluta: A,B( A>0(R)) A>0 ( A , B(R)) equivalenza: A,B(R1) A ,C(R2) R A ,B,C(R1 R2) vale solo per gli schemi R per cui l’intersezione tra gli attributi di R1 e R2 è uguale ad A ESERCIZIO: trovare un controesempio Algebra Relazionale 106 Trasformazioni di equivalenza Due espressioni E1 ed E2 equivalenti garantiscono lo stesso risultato, ma questo non significa che la scelta sia indifferente in termini di “risorse” necessarie Scopi: 1. 2. trasformare le espressioni in modo semplice, affinchè sia ridotto il numero delle operazioni da eseguire il costo di una interrogazione viene valutato in termini di dimensione dei risultati intermedi: in presenza di alternative si sceglie quella col costo minore. Algebra Relazionale 107 Trasformazioni di equivalenza (2) 1. 2. 3. Operazioni che sostituiscono una espressione con un’altra ad essa equivalente Atomizzazione delle selezioni F1F2(E) F1(F2(E))) Idempotenza delle proiezioni X (E) X ( X Y (E)) Anticipazione della selezione rispetto al join F (E1 E2) E1 F (E2) se la condizione F fa riferimento solo ad attributi nella sottoespressione E2 Algebra Relazionale 108 4. Inglobamento di una selezione in un prodotto cartesiano F (E1 E2) E1 F E2 5. Distributività della selezione rispetto all'unione F (E1 E2) F (E1) F (E2) 6. Distributività della proiezione rispetto all'unione X (E1 E2) X(E1) X (E2) 7. Distributività della selezione rispetto alla differenza F (E1 - E2) F (E1) - F (E2) Algebra Relazionale 109 Impiegati Matricola Nome 7309 5998 9553 5698 4076 8123 Età Stipendio Rossi 34 45 Bianchi 28 38 Neri 42 35 Bruni 23 42 Mori 45 50 Lupi 46 60 Supervisione Impiegato 7309 5998 9553 5698 4076 Capo 5698 5698 4076 4076 8123 Esercizio: Utilizzando le regole di trasformazione dimostrare che le due espressioni sono equivalenti Capo ( Matr=Imp Età < 30 (IMPIEGATI SUPERVISIONE)) Capo (SUPERVISIONE Matr=Imp ( Età < 30 (IMPIEGATI)) Algebra Relazionale 111 Trovare i numeri di matricola dei capi di impiegati con meno di 30 anni Capo ( Matr=Imp Età < 30 (IMPIEGATI SUPERVISIONE)) Per calcolare pochi valori effettua un prodotto cartesiano (molto costoso) REGOLA 1: Capo ( Età < 30 ( Matr=Imp (IMPIEGATI SUPERVISIONE))) REGOLA 4: Capo ( Età<30 (IMPIEGATI Matr=Imp SUPERVISIONE)) Algebra Relazionale 112 REGOLA 3 Capo ( Età<30 (IMPIEGATI) Matr=Imp SUPERVISIONE) Algebra Relazionale 113 Viste (relazioni derivate) Spesso è utile mettere a disposizione degli utenti rappresentazioni diverse per gli stessi dati (schema esterno) Relazioni derivate: relazioni il cui contenuto è funzione del contenuto di altre relazioni (definito per mezzo di interrogazioni) Relazioni di base: contenuto autonomo (quelle che costituiscono effettivamente la base di dati) Algebra Relazionale 114 Architettura standard (ANSI/SPARC) a tre livelli per DBMS utente utente Schema esterno utente Schema esterno Schema logico Schema interno BD utente Schema esterno utente Viste virtuali e materializzate Due tipi di relazioni derivate: viste materializzate relazioni virtuali (o viste) Algebra Relazionale 116 Viste materializzate relazioni derivate effettivamente memorizzate nella base di dati vantaggi: immediatamente disponibili per le interrogazioni svantaggi: ridondanti appesantiscono gli aggiornamenti (il loro contenuto deve essere mantenuto allineato con quello delle relazioni da cui derivano) non sono supportate dai DBMS commerciali Algebra Relazionale 117 Viste relazioni virtuali (o viste): non sono memorizzate nella base di dati sono supportate dai DBMS commerciali una interrogazione su una vista viene eseguita "ricalcolando" la vista (o quasi) vengono definite nei sistemi relazionali per mezzo di espressioni nel linguaggio di interrogazione Algebra Relazionale 118 Viste, esempio Afferenza Impiegato Reparto Rossi A Neri B Verdi B Bianchi B Direzione Reparto A B B Capo Mori Leoni Bruni Una vista: Supervisione = Impiegato,Capo (Afferenza Direzione) Algebra Relazionale 119 Interrogazioni sulle viste Sono eseguite sostituendo alla vista la sua definizione: Capo='Leoni' (Supervisione) viene eseguita come Capo='Leoni'( Impiegato,Capo (Afferenza Direzione)) Algebra Relazionale 120 Viste, motivazioni Schema esterno: ogni utente vede solo ciò che gli interessa e nel modo in cui gli interessa, senza essere distratto dal resto ciò che e' autorizzato a vedere (autorizzazioni) Strumento di programmazione: si può semplificare la scrittura di interrogazioni: espressioni complesse e sottoespressioni ripetute Utilizzo di programmi esistenti su schemi ristrutturati. Invece: L'utilizzo di viste non influisce sull'efficienza delle interrogazioni Algebra Relazionale 121 Viste come strumento di programmazione Trovare gli impiegati che hanno lo stesso capo di Rossi Senza vista: Impiegato (Afferenza Direzione) ImpR,RepR Imp,Reparto ( Impiegato='Rossi' (Afferenza Direzione)) Con la vista: Impiegato (Supervisione) ImpR,RepR Imp,Reparto (Impiegato='Rossi' (Supervisione)) Algebra Relazionale 122