La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

ALGEBRA RELAZIONALE. Algebra Relazionale2  Le basi di dati rappresentano le informazioni di interesse per applicazioni che gestiscono i dati  E’ importante.

Presentazioni simili


Presentazione sul tema: "ALGEBRA RELAZIONALE. Algebra Relazionale2  Le basi di dati rappresentano le informazioni di interesse per applicazioni che gestiscono i dati  E’ importante."— Transcript della presentazione:

1 ALGEBRA RELAZIONALE

2 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)

3 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

4 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

5 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")

6 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)

7 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

8 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

9 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

10 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

11 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

12 Algebra Relazionale12 Paternità PadreFiglio AdamoCaino AbramoIsacco AdamoAbele Maternità MadreFiglio EvaSet SaraIsacco EvaAbele Paternità  Maternità ?? Una unione sensata ma impossibile

13 Algebra Relazionale13 Ridenominazione  operatore unario  "modifica lo schema" lasciando inalterata l'istanza dell'operando, cambia solo il nome degli attributi

14 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

15 Algebra Relazionale15 Paternità PadreFiglio AdamoCaino AbramoIsacco AdamoAbele  Genitore  Padre (Paternità) PadreFiglio AdamoCaino AbramoIsacco AdamoAbele Genitore

16 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

17 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à) 

18  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

19 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

20 Algebra Relazionale20 Selezione ABC ABC

21 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

22 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

23 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

24 Algebra Relazionale24 Condizioni di selezione, esempi  Esempi: (Stipendio > 50) Filiale='Milano' Cognome = Filiale (Stipendio > 50) AND (Filiale='Milano') NOT (Cognome='Neri')

25 Algebra Relazionale25 CognomeFilialeStipendioMatricola NeriMilano RossiRoma NeriNapoli Milano Impiegati Milano NeriNapoli impiegati che guadagnano più di 50  Stipendio > 50 (Impiegati)

26 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

27 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

28 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 |

29 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

30 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!

31 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

32 Algebra Relazionale32  A questo punto:  Età>30 (Persone)   Età  30 (Persone)   Età IS NULL (Persone) =  Età>30  Età  30  (Età IS NULL) (Persone) = Persone

33 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

34

35 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

36 Algebra Relazionale36 Selezione e proiezione  operatori "ortogonali"  selezione: decomposizione orizzontale  proiezione: decomposizione verticale

37 selezione proiezione

38 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

39 Algebra Relazionale39 Impiegati CognomeFilialeStipendioMatricola NeriMilano NeriNapoli RossiRoma RossiRoma per tutti gli impiegati: matricola e cognome cognome e filiale

40 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

41 Algebra Relazionale41 CognomeFilialeStipendioMatricola NeriMilano NeriNapoli RossiRoma RossiRoma matricola e cognome di tutti gli impiegati  Matricola, Cognome (Impiegati)

42 Algebra Relazionale42 CognomeFilialeStipendioMatricola NeriMilano NeriNapoli RossiRoma RossiRoma cognome e filiale di tutti gli impiegati  Cognome, Filiale (Impiegati)

43 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

44 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 !

45 Algebra Relazionale45 CognomeFilialeStipendioMatricola NeriMilano RossiRoma NeriNapoli Milano Milano NeriNapoli matricola e cognome degli impiegati che guadagnano più di 50  Stipendio > 50 (Impiegati)  Matricola,Cognome ( )

46 Algebra Relazionale46 combinando selezione e proiezione, possiamo estrarre informazioni da una relazione non possiamo però correlare informazioni presenti in relazioni diverse

47 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

48 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

49 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)

50 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 ] }

51 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 )

52 MatricolaCognomeNome 6554RossiMario 8765NeriPaolo 3456RossiMaria 9283VerdiLuisa studentiCorsoTitoloDocente 01AnalisiMario 02ChimicaBruni 04ChimicaVerdi corsi MatricolaVotoCorso esami (studenti  esami) ((studenti  esami)  corsi )

53 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

54 Algebra Relazionale54 NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni A C Un join non completo

55 Algebra Relazionale55 ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo DMori CBruni ImpiegatoRepartoCapo Un join vuoto

56 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

57 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 |

58 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

59 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

60 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 |

61 Algebra Relazionale61 Join naturale e valori nulli

62 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

63 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

64 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

65 ImpiegatoReparto RossiA NeriB BianchiB Impiegati RepartoCapo BMori CBruni Reparti NeriBMori ImpiegatoRepartoCapo BianchiBMori Impiegati  LEFT Reparti C RossiA NULL ARossi

66 ImpiegatoReparto RossiA NeriB BianchiB Impiegati RepartoCapo BMori CBruni Reparti NeriBMori ImpiegatoRepartoCapo BianchiBMori Impiegati  RIGHT Reparti A NULL CBruni C

67 ImpiegatoReparto RossiA NeriB BianchiB Impiegati RepartoCapo BMori CBruni Reparti NeriBMori ImpiegatoRepartoCapo BianchiBMori Impiegati  FULL Reparti NULL CBruni C ARossi A NULL

68 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) )

69 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 ))

70 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

71 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.

72 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.

73 Join e proiezioni ImpiegatoReparto RossiA NeriB BianchiBRepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto NeriB BianchiB RepartoCapo BMori

74 Proiezioni e join NeriBMori ImpiegatoRepartoCapo BianchiBBruni VerdiABini NeriB ImpiegatoReparto BianchiB VerdiA BMori RepartoCapo BBruni ABini VerdiABini NeriBMori ImpiegatoRepartoCapo BianchiBBruni NeriBBruni BianchiBMori

75 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

76 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 )

77 RossiA NeriB BianchiB ImpiegatoReparto Impiegati AMori BBruniB B CodiceCapo Reparti Impiegati  Reparti ImpiegatoRepartoCapoCodice RossiAMoriAAA RossiABBruni NeriBMoriA NeriBBBruni BianchiBMoriA BianchiBBBruni

78 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

79 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

80 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

81 Algebra Relazionale81 RossiA NeriB BianchiB ImpiegatoReparto Impiegati AMori BBruniB B RepartoCapo Reparti Impiegati  Reparti

82 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 !

83 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)

84 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

85 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

86 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

87 Algebra Relazionale87 Alcune operazioni in algebra relazionale  Esempio: qual è la squadra prima in classifica? Classifica SquadraPunti Inter36 Juve34 Siena40

88 Algebra Relazionale88  Ridenominazione + Join Squadra1Punti1Squadra2Punti2 Siena40Siena40 Inter36Siena40 Siena40Juve34 Inter36Juve34 ….… …

89 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

90 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

91 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

92 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

93 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?

94 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.

95 Esempi Impiegati NomeEtàStipendioMatricola Bianchi Rossi Bruni Neri Mori Lupi Supervisione ImpiegatoCapo

96 Algebra Relazionale96  Trovare matricola, nome, età e stipendio degli impiegati che guadagnano più di 40 milioni  Stipendio>40 (Impiegati)

97 Algebra Relazionale97 NomeEtàStipendioMatricola Bianchi Rossi Bruni Neri Mori Lupi  Stipendio>40 (Impiegati) Bianchi Neri Rossi Bruni Mori Lupi Rossi Bruni Mori Lupi

98 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

99 Algebra Relazionale99  Trovare le matricole dei capi degli impiegati che guadagnano più di 40 milioni  Capo (Supervisione  Impiegato=Matricola (  Stipendio>40 (Impiegati)))

100 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))))

101 Capo  Capo (Supervisione  Impiegato=Matricola (  Stipendio>40 (Impiegati))) Bianchi Rossi Bruni Neri Mori Lupi NomeEtàStipendioMatricola Impiegati

102 Algebra Relazionale102 Impiegati  Matricola=Capo  Capo (Supervisione  Impiegato=Matricola (  Stipendio>40 (Impiegati)))) CapoMatricolaNomeEtàStipendio 5698 Bianchi Mori Lupi4660

103 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

104 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)))

105 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.

106 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

107 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.

108 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

109 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)

110 Impiegati NomeEtàStipendioMatricola Bianchi Rossi Bruni Neri Mori Lupi Supervisione ImpiegatoCapo

111 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))

112 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:

113 Algebra Relazionale113  Capo (  Età<30 (IMPIEGATI)  Matr=Imp SUPERVISIONE) REGOLA 3

114 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)

115 Architettura standard (ANSI/SPARC) a tre livelli per DBMS BD Schema logico Schema esterno Schema interno Schema esterno Schema esterno utente

116 Algebra Relazionale116 Viste virtuali e materializzate  Due tipi di relazioni derivate: viste materializzate relazioni virtuali (o viste) relazioni virtuali

117 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

118 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

119 Algebra Relazionale119 Viste, esempio Una vista: Supervisione =  Impiegato,Capo (Afferenza  Direzione) AMori BLeoni RepartoCapoRossiA NeriB VerdiB ImpiegatoReparto BianchiBBBruni AfferenzaDirezione

120 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))

121 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

122 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))


Scaricare ppt "ALGEBRA RELAZIONALE. Algebra Relazionale2  Le basi di dati rappresentano le informazioni di interesse per applicazioni che gestiscono i dati  E’ importante."

Presentazioni simili


Annunci Google