ALGEBRA RELAZIONALE
Algebra Relazionale2 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 Relazionale3 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 Relazionale4 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 Relazionale5 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 Relazionale6 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 Relazionale7 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 Relazionale8 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 Relazionale9 Laureati Matricola Età Nome Neri Verdi Rossi Quadri Matricola Età Nome Neri Verdi Neri Laureati Quadri MatricolaEtàNome Neri Verdi Neri Rossi Neri Verdi Rossi Neri Verdi Neri Neri Verdi Neri Rossi Unione
Algebra Relazionale10 Laureati Matricola Età Nome Neri Verdi Rossi Quadri Matricola Età Nome Neri Verdi Neri Laureati Quadri MatricolaEtàNome Neri Verdi Neri Verdi Neri Verdi Neri Verdi Intersezione
Algebra Relazionale11 Laureati MatricolaEtàNome Neri Verdi Rossi Quadri Matricola Età Nome Neri Verdi Neri Laureati – Quadri MatricolaEtàNome Neri Verdi Rossi Neri Verdi Rossi Differenza
Algebra Relazionale12 Paternità PadreFiglio AdamoCaino AbramoIsacco AdamoAbele Maternità MadreFiglio EvaSet SaraIsacco EvaAbele Paternità Maternità ?? Una unione sensata ma impossibile
Algebra Relazionale13 Ridenominazione operatore unario "modifica lo schema" lasciando inalterata l'istanza dell'operando, cambia solo il nome degli attributi
Algebra Relazionale14 Ridenominazione: definizione formale Siano R una relazione su X, e Y un altro insieme di attributi con la stessa cardinalità X = {A 1,……. A k } Y = {B 1,……. B k } 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’[B i ]=t[A i ], per ogni i=1,…,k
Algebra Relazionale15 Paternità PadreFiglio AdamoCaino AbramoIsacco AdamoAbele Genitore Padre (Paternità) PadreFiglio AdamoCaino AbramoIsacco AdamoAbele Genitore
Algebra Relazionale16 Paternità PadreFiglio AdamoCaino AbramoIsacco AdamoAbele Maternità MadreFiglio EvaSet SaraIsacco EvaAbele Genitore Padre (Paternità) Genitore Madre (Maternità) GenitoreFiglio AdamoCaino AbramoIsacco AdamoAbele GenitoreFiglio EvaSet SaraIsacco EvaAbele
Algebra Relazionale17 Genitore Padre (Paternità) Genitore Madre (Maternità) GenitoreFiglio AdamoCaino AbramoIsacco AdamoAbele GenitoreFiglio EvaSet SaraIsacco EvaAbele GenitoreFiglio AdamoCaino AbramoIsacco AdamoAbeleEvaSet SaraIsacco EvaAbele Genitore Padre (Paternità) Genitore Madre (Maternità)
Sede, Retribuzione Ufficio, Stipendio (Impiegati) Sede, Retribuzione Fabbrica, Salario (Operai) Impiegati Cognome Neri Rossi Ufficio Milano Roma Stipendio Operai Cognome Verdi Bruni Fabbrica Latina Monza Salario CognomeRetribuzioneSede Neri Rossi Milano Roma Verdi Bruni Latina Monza 55 45
Algebra Relazionale19 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 Relazionale20 Selezione ABC ABC
Algebra Relazionale21 Impiegati CognomeFilialeStipendioMatricola NeriMilano RossiRoma NeriNapoli Milano impiegati che: guadagnano più di 50 guadagnano più di 50 e lavorano a Milano hanno lo stesso nome della filiale presso cui lavorano
Algebra Relazionale22 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 Relazionale23 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: A B oppure A c dove – operatore di confronto (=, , >, <, , ) – A, B attributi in X – c costante compatibile con dominio di attributo (A) con cui c viene confrontata
Algebra Relazionale24 Condizioni di selezione, esempi Esempi: (Stipendio > 50) Filiale='Milano' Cognome = Filiale (Stipendio > 50) AND (Filiale='Milano') NOT (Cognome='Neri')
Algebra Relazionale25 CognomeFilialeStipendioMatricola NeriMilano RossiRoma NeriNapoli Milano Impiegati Milano NeriNapoli impiegati che guadagnano più di 50 Stipendio > 50 (Impiegati)
Algebra Relazionale26 Impiegati CognomeFilialeStipendioMatricola NeriMilano RossiRoma NeriNapoli Milano impiegati che guadagnano più di 50 e lavorano a Milano Stipendio > 50 AND Filiale = 'Milano' (Impiegati) RossiRoma NeriNapoli Milano NeriMilano645998
Algebra Relazionale27 Impiegati CognomeFilialeStipendioMatricola NeriMilano RossiRoma NeriNapoli Milano impiegati che hanno lo stesso nome della filiale presso cui lavorano Cognome = Filiale (Impiegati) NeriMilano RossiRoma NeriNapoli Milano
Algebra Relazionale28 Osservazioni l’operazione di selezione è commutativa ( (R)) = AND (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 | (R) | | R |
Algebra Relazionale29 Selezione con valori nulli CognomeFilialeEtàMatricola NeriMilano RossiRoma BruniMilano NULL 9553 Impiegati Età > 40 (Impiegati) la condizione atomica è vera solo per valori non nulli
Algebra Relazionale30 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 Relazionale31 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 Relazionale32 A questo punto: Età>30 (Persone) Età 30 (Persone) Età IS NULL (Persone) = Età>30 Età 30 (Età IS NULL) (Persone) = Persone
Algebra Relazionale33 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 Relazionale35 CognomeFilialeEtàMatricola NeriMilano RossiRoma BruniMilano NULL 9553 Impiegati NeriMilano BruniMilano NULL 9553 (Età > 40) OR (Età IS NULL) (Impiegati) NeriMilano BruniMilano NULL 9553
Algebra Relazionale36 Selezione e proiezione operatori "ortogonali" selezione: decomposizione orizzontale proiezione: decomposizione verticale
selezione proiezione
Algebra Relazionale38 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 Relazionale39 Impiegati CognomeFilialeStipendioMatricola NeriMilano NeriNapoli RossiRoma RossiRoma per tutti gli impiegati: matricola e cognome cognome e filiale
Algebra Relazionale40 Proiezione, sintassi e semantica sintassi (Operando) è 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 Relazionale41 CognomeFilialeStipendioMatricola NeriMilano NeriNapoli RossiRoma RossiRoma matricola e cognome di tutti gli impiegati Matricola, Cognome (Impiegati)
Algebra Relazionale42 CognomeFilialeStipendioMatricola NeriMilano NeriNapoli RossiRoma RossiRoma cognome e filiale di tutti gli impiegati Cognome, Filiale (Impiegati)
Algebra Relazionale43 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 Relazionale44 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 Relazionale45 CognomeFilialeStipendioMatricola NeriMilano RossiRoma NeriNapoli Milano Milano NeriNapoli matricola e cognome degli impiegati che guadagnano più di 50 Stipendio > 50 (Impiegati) Matricola,Cognome ( )
Algebra Relazionale46 combinando selezione e proiezione, possiamo estrarre informazioni da una relazione non possiamo però correlare informazioni presenti in relazioni diverse
Algebra Relazionale47 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
Idea del join naturale matricolacognomedata_nasc 2021Rossi Bianchi Neri matricolacorsovoto 2021Basi dati Calcolo Algebra30 matricolacognomedata_nasccorsovoto 2021Rossi Basi dati Rossi Calcolo Neri Algebra Rossi Basi dati Rossi Basi dati Rossi Calcolo Rossi Calcolo Neri Algebra Neri Algebra30
Algebra Relazionale49 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 Relazionale50 Join, sintassi e semantica R 1 (X 1 ), R 2 (X 2 ) R 1 R 2 è una relazione su X 1 X 2 { t su X 1 X 2 : esistono t 1 R 1 e t 2 R 2 con t[X 1 ] =t 1 [X 1 ] e t[X 2 ] =t 2 [X 2 ] }
Algebra Relazionale51 Join, proprietà Il join naturale è commutativo: R 1 R 2 = R 2 R 1 Il join naturale è associativo: ( R 1 R 2 ) R 3 = R 1 ( R 2 R 3 )
MatricolaCognomeNome 6554RossiMario 8765NeriPaolo 3456RossiMaria 9283VerdiLuisa studentiCorsoTitoloDocente 01AnalisiMario 02ChimicaBruni 04ChimicaVerdi corsi MatricolaVotoCorso esami (studenti esami) ((studenti esami) corsi )
AMori BBruni RepartoCapo RossiA NeriB BianchiB ImpiegatoReparto RossiAMori NeriBBruni ImpiegatoRepartoCapo BianchiBBruni RossiA NeriB BianchiB RossiA NeriB BianchiB AMori BBruni AMori BBruniB B ogni ennupla contribuisce al risultato: join completo
Algebra Relazionale54 NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni A C Un join non completo
Algebra Relazionale55 ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo DMori CBruni ImpiegatoRepartoCapo Un join vuoto
Algebra Relazionale56 RossiBMori NeriBMori ImpiegatoRepartoCapo BianchiBBruni RossiA NeriB ImpiegatoReparto RossiA NeriB RossiB NeriB AMori BBruni RepartoCapo AMori BBruni BMori BBruniB B RossiBBruni Un join completo, con n x m ennuple Ogni n-upla di ciascuna tabella è combinabile con tutte le n-uple dell’altro
Algebra Relazionale57 Cardinalità del join Il join di R 1 (A) e R 2 (B) contiene un numero di ennuple compreso fra zero e il prodotto di |R 1 | e |R 2 |
Algebra Relazionale58 ImpiegatoReparto RossiA NeriB BianchiB Rossi AMori ImpiegatoRepartoCapo Neri BBruni ImpiegatoCapo RossiMori NeriBruni Neri Bianchi se il join coinvolge una chiave di R 1 allora il numero di ennuple è compreso tra zero e |R 2 | Neri B Bianchi VerdiBianchi
Algebra Relazionale59 ImpiegatoReparto RossiA NeriB BianchiB Rossi AMori ImpiegatoRepartoCapo Neri BBruni ImpiegatoCapo RossiMori NeriBruni Neri Bianchi se il join coinvolge una chiave di R 1 e c’è un vincolo di integrità allora il numero di ennuple è compreso uguale a |R 2 | Neri B Bianchi
Algebra Relazionale60 Cardinalità del join, riepilogo R 1 (A,B), R 2 (B,C) in generale: 0 |R 1 R 2 | |R 1 | · |R 2 | se B è chiave in R 1 0 |R 1 R 2 | |R 2 | se B è chiave in R 1 ed esiste vincolo di integrità referenziale fra B (in R 2 ) e R 1 |R 1 R 2 | = |R 2 |
Algebra Relazionale61 Join naturale e valori nulli
Algebra Relazionale62 ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori A C Join, una difficoltà alcune ennuple non contribuiscono al risultato: vengono "tagliate fuori'': si possono omettere informazioni importanti
Algebra Relazionale63 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 Relazionale64 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
ImpiegatoReparto RossiA NeriB BianchiB Impiegati RepartoCapo BMori CBruni Reparti NeriBMori ImpiegatoRepartoCapo BianchiBMori Impiegati LEFT Reparti C RossiA NULL ARossi
ImpiegatoReparto RossiA NeriB BianchiB Impiegati RepartoCapo BMori CBruni Reparti NeriBMori ImpiegatoRepartoCapo BianchiBMori Impiegati RIGHT Reparti A NULL CBruni C
ImpiegatoReparto RossiA NeriB BianchiB Impiegati RepartoCapo BMori CBruni Reparti NeriBMori ImpiegatoRepartoCapo BianchiBMori Impiegati FULL Reparti NULL CBruni C ARossi A NULL
MatrCognomeNomeData di nascita 6554RossiMario05/12/ NeriPaolo03/11/ RossiMaria01/02/ VerdiLuisa12/11/1979 studenti CodiceTitoloDocente 01AnalisiMari 02ChimicaMari 04ChimicaVerdi corsi Corso 04 esami MatrVotoCodice esami Esercizio 1 Determinare i corsi tenuti dal Prof. Mari Titolo ( Docente=‘Mari’ (corsi) )
MatrCognomeNomeData di nascita 6554RossiMario05/12/ NeriPaolo03/11/ RossiMaria01/02/ VerdiLuisa12/11/1979 studenti CodiceTitoloDocente 01AnalisiMari 02ChimicaMari 04ChimicaVerdi corsi Corso 04 esami MatrVotoCodice esami 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 ))
MatrCognomeNomeData di nascita 6554RossiMario05/12/ NeriPaolo03/11/ RossiMaria01/02/ VerdiLuisa12/11/1979 studenti CodiceTitoloDocente 01AnalisiMari 02ChimicaMari 04ChimicaVerdi corsi Corso 04 esami MatrVotoCodice esami Esercizio 3 Determinare il nome e il cognome degli studenti che hanno sostenuto l'esame di Analisi
Algebra Relazionale71 MatrCognomeNomeData di nascita 6554RossiMario05/12/ NeriPaolo03/11/ RossiMaria01/02/ VerdiLuisa12/11/1979 studenti CodiceTitoloDocente 01AnalisiMari 02ChimicaMari 04ChimicaVerdi corsi Corso 04 esami MatrVotoCodice esami Esercizio 4 Determinare nome, cognome ed eventuali esami sostenuti da tutti gli studenti del corso di laurea che hanno più di 25 anni.
Algebra Relazionale72 MatrCognomeNomeData di nascita 6554RossiMario05/12/ NeriPaolo03/11/ RossiMaria01/02/ VerdiLuisa12/11/1979 studenti CodiceTitoloDocente 01AnalisiMari 02ChimicaMari 04ChimicaVerdi corsi Corso 04 esami MatrVotoCodice esami Esercizio 5 Determinare nome, cognome degli studenti del corso di laurea che non hanno sostenuto alcun esame.
Join e proiezioni ImpiegatoReparto RossiA NeriB BianchiBRepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto NeriB BianchiB RepartoCapo BMori
Proiezioni e join NeriBMori ImpiegatoRepartoCapo BianchiBBruni VerdiABini NeriB ImpiegatoReparto BianchiB VerdiA BMori RepartoCapo BBruni ABini VerdiABini NeriBMori ImpiegatoRepartoCapo BianchiBBruni NeriBBruni BianchiBMori
Algebra Relazionale75 Join e proiezioni R 1 (X 1 ), R 2 (X 2 ) X 1 (R 1 R 2 ) R 1 R(X), X = X 1 X 2 ( X 1 (R)) ( X 2 (R)) R
Algebra Relazionale76 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 )
RossiA NeriB BianchiB ImpiegatoReparto Impiegati AMori BBruniB B CodiceCapo Reparti Impiegati Reparti ImpiegatoRepartoCapoCodice RossiAMoriAAA RossiABBruni NeriBMoriA NeriBBBruni BianchiBMoriA BianchiBBBruni
Algebra Relazionale78 Il prodotto cartesiano, in pratica, ha senso solo se seguito da selezione: Condizione (R 1 R 2 ) L'operazione viene chiamata theta-join e indicata con: R 1 Cond R 2
Algebra Relazionale79 Perché "theta-join"? La condizione C è spesso una congiunzione (AND) di atomi di confronto A 1 A 2 dove è uno degli operatori di confronto (=, >, <, …) se l'operatore è sempre l'uguaglianza (=) allora si parla di equi-join
RossiA NeriB BianchiB ImpiegatoReparto Impiegati AMori BBruniB B CodiceCapo Reparti Impiegati Reparto=Codice Reparti ImpiegatoRepartoCapoCodice RossiAMoriAAA RossiABBruni NeriBMoriA NeriBBBruni BianchiBMoriA BianchiBBBruni RossiAMoriAAA NeriBBBruni BianchiBBBruni Equi-join
Algebra Relazionale81 RossiA NeriB BianchiB ImpiegatoReparto Impiegati AMori BBruniB B RepartoCapo Reparti Impiegati Reparti
Algebra Relazionale82 Join naturale ed equi-join ImpiegatoReparto Impiegati RepartoCapo Reparti Impiegati Reparti Impiegato,Reparto,Capo ( ) Codice Reparto (Reparti) Impiegati Reparto=Codice ( ) ) Producono lo stesso risultato !
Algebra Relazionale83 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 = ( B B’ (R) S)
Operatore di divisione trovare gli studenti che hanno sostenuto tutti gli esami del corso di laurea Algebra Relazionale84 MatrCognomeNomeData di nascita 6554RossiMario05/12/ NeriPaolo03/11/ RossiMaria01/02/ VerdiLuisa12/11/1979 studenti CodiceTitoloDocente 01AnalisiMari 02ChimicaMari 04FisicaVerdi corsi Corso 04 esami MatrVotoCodice esami
Algebra Relazionale85 Corso 04 esami MatrCodice Matr,Codice (esami) Codice Codice (corsi) Matr,Codice (esami) Codice (corsi) Matr 6554 R(X Y) / S(X) è una relazione su T(Y) tale che t T(Y) se e solo se esistono n-uple t R in R tali che: -t R [Y]=t -t R [X]=l per ogni n-unpla l di S Si considerano solo le righe della prima tabella che si combinano con tutte le righe della seconda tabella
Algebra Relazionale86 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 + Proiezione
Algebra Relazionale87 Alcune operazioni in algebra relazionale Esempio: qual è la squadra prima in classifica? Classifica SquadraPunti Inter36 Juve34 Siena40
Algebra Relazionale88 Ridenominazione + Join Squadra1Punti1Squadra2Punti2 Siena40Siena40 Inter36Siena40 Siena40Juve34 Inter36Juve34 ….… …
Algebra Relazionale89 Squadra1Punti1Squadra2Punti2 Juve34Siena40 Inter36Siena40 Juve34Inter36 Selezione sulla condizione: (Punti1 Punti2) AND (Squadra1 Squadra2) Proiezione su Squadra1, Punti1 Squadra1Punti1 Juve34 Inter36 Classifica 2 Squadre che hanno meno punti di almeno un’altra squadra Squadre che hanno più punti di almeno un’altra squadra
Algebra Relazionale90 Differenza tra la tabella Classifica e Classifica 2 (dopo opportuna ridenominazione) SquadraPunti Siena40 Classifica SquadraPunti Inter36 Juve34 Siena 40 Squadra1Punti1 Juve34 Inter36 Classifica 2
Algebra Relazionale91 Chiusura transitiva Supervisione(Impiegato, Capo) Per ogni impiegato, trovare tutti i superiori (cioè il capo, il capo del capo, e cosi' via) Rossi Neri Impiegato Rossi Neri Rossi Neri Lupi Mori Bruni Capo Mori Bruni Lupi Bruni Falchi Rossi Neri Impiegato Rossi Neri Rossi Neri Lupi Mori Bruni Superiore Mori Bruni Lupi Bruni Falchi Rossi Falchi Lupi
Algebra Relazionale92 Chiusura transitiva, come si fa? Nell'esempio, basterebbe il join della relazione con se stessa, previa opportuna ridenominazione Ma: Rossi Neri Impiegato Rossi Neri Rossi Neri Lupi Mori Bruni Superiore Mori Bruni Lupi Bruni Falchi Rossi Falchi Rossi Neri Impiegato Rossi Neri Rossi Neri Lupi Mori Bruni Capo Mori Bruni Lupi Bruni Lupi Leoni Falchi Lupi Leoni Rossi Leoni Falchi
Algebra Relazionale93 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 Relazionale94 Interrogazioni in algebra relazionale Una interrogazione su una base di dati è una funzione che restituisce una relazione R su un insieme di attributi X.
Esempi Impiegati NomeEtàStipendioMatricola Bianchi Rossi Bruni Neri Mori Lupi Supervisione ImpiegatoCapo
Algebra Relazionale96 Trovare matricola, nome, età e stipendio degli impiegati che guadagnano più di 40 milioni Stipendio>40 (Impiegati)
Algebra Relazionale97 NomeEtàStipendioMatricola Bianchi Rossi Bruni Neri Mori Lupi Stipendio>40 (Impiegati) Bianchi Neri Rossi Bruni Mori Lupi Rossi Bruni Mori Lupi
Algebra Relazionale98 Trovare matricola, nome ed età degli impiegati che guadagnano più di 40 milioni Matricola, Nome, Età ( Stipendio>40 (Impiegati)) NomeEtàStipendioMatricola Bianchi Rossi Bruni Neri Mori Lupi Bianchi Neri Rossi Bruni Mori Lupi Rossi Bruni Mori Lupi
Algebra Relazionale99 Trovare le matricole dei capi degli impiegati che guadagnano più di 40 milioni Capo (Supervisione Impiegato=Matricola ( Stipendio>40 (Impiegati)))
Algebra Relazionale100 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))))
Capo Capo (Supervisione Impiegato=Matricola ( Stipendio>40 (Impiegati))) Bianchi Rossi Bruni Neri Mori Lupi NomeEtàStipendioMatricola Impiegati
Algebra Relazionale102 Impiegati Matricola=Capo Capo (Supervisione Impiegato=Matricola ( Stipendio>40 (Impiegati)))) CapoMatricolaNomeEtàStipendio 5698 Bianchi Mori Lupi4660
Algebra Relazionale103 Nome,Stipendio (Impiegati Matricola=Capo Capo (Supervisione Impiegato=Matricola ( Stipendio>40 (Impiegati)))) NomeStipendio Bianchi38 Mori50 Lupi60 Nome e stipendio dei capi di impiegati che guadagnano più di 40 milioni
Algebra Relazionale104 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 Relazionale105 Equivalenza di espressioni algebriche Espressioni E1 e E2 sono equivalenti per lo schema R, E1 R E2 se E1(r) = E2(r) per ogni istanza r di R. Le due espressioni sono assolutamente equivalenti, E1 E2 se E1 R E2 per ogni schema R.
Algebra Relazionale106 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 Relazionale107 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. trasformare le espressioni in modo semplice, affinchè sia ridotto il numero delle operazioni da eseguire 2. 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 Relazionale108 Trasformazioni di equivalenza (2) Operazioni che sostituiscono una espressione con un’altra ad essa equivalente 1.Atomizzazione delle selezioni F1 F2 (E) F1 ( F2 (E))) 2.Idempotenza delle proiezioni X (E) X ( X Y (E)) 3.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 Relazionale109 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)
Impiegati NomeEtàStipendioMatricola Bianchi Rossi Bruni Neri Mori Lupi Supervisione ImpiegatoCapo
Algebra Relazionale111 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 Relazionale112 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) Capo ( Età < 30 ( Matr=Imp (IMPIEGATI SUPERVISIONE))) Capo ( Età<30 (IMPIEGATI Matr=Imp SUPERVISIONE)) REGOLA 1: REGOLA 4:
Algebra Relazionale113 Capo ( Età<30 (IMPIEGATI) Matr=Imp SUPERVISIONE) REGOLA 3
Algebra Relazionale114 Viste (relazioni derivate) Spesso è utile mettere a disposizione degli utenti rappresentazioni diverse per gli stessi dati (schema esterno)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)
Architettura standard (ANSI/SPARC) a tre livelli per DBMS BD Schema logico Schema esterno Schema interno Schema esterno Schema esterno utente
Algebra Relazionale116 Viste virtuali e materializzate Due tipi di relazioni derivate: viste materializzate relazioni virtuali (o viste) relazioni virtuali
Algebra Relazionale117 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 Relazionale118 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 Relazionale119 Viste, esempio Una vista: Supervisione = Impiegato,Capo (Afferenza Direzione) AMori BLeoni RepartoCapoRossiA NeriB VerdiB ImpiegatoReparto BianchiBBBruni AfferenzaDirezione
Algebra Relazionale120 Interrogazioni sulle viste Sono eseguite sostituendo alla vista la sua definizione: Capo='Leoni' (Supervisione) viene eseguita come Capo='Leoni' ( Impiegato,Capo (Afferenza Direzione))
Algebra Relazionale121 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 Relazionale122 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))