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 7432 9824 Età 54 45 Nome Neri Verdi 727442Rossi Quadri Matricola 7432 9824 9297 Età 54 45 33 Nome Neri Verdi Neri Laureati  Quadri MatricolaEtàNome 743254Neri 982445Verdi 929733Neri 727442Rossi 743254Neri 982445Verdi 727442Rossi 743254Neri 982445Verdi 929733Neri 743254Neri 982445Verdi 929733Neri 727442Rossi Unione

10 Algebra Relazionale10 Laureati Matricola 7432 9824 Età 54 45 Nome Neri Verdi 727442Rossi Quadri Matricola 7432 9824 9297 Età 54 45 33 Nome Neri Verdi Neri Laureati  Quadri MatricolaEtàNome 743254Neri 982445Verdi 743254Neri 982445Verdi 743254Neri 982445Verdi 743254Neri 982445Verdi Intersezione

11 Algebra Relazionale11 Laureati MatricolaEtàNome 743254Neri 982445Verdi 727442Rossi Quadri Matricola 7432 9824 9297 Età 54 45 33 Nome Neri Verdi Neri Laureati – Quadri MatricolaEtàNome 743254Neri 982445Verdi 727442Rossi 743254Neri 982445Verdi 727442Rossi 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 64 55 Operai Cognome Verdi Bruni Fabbrica Latina Monza Salario 55 45 CognomeRetribuzioneSede Neri Rossi 64 55 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 NeriMilano645998 RossiRoma557309 NeriNapoli645698 Milano 449553  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 NeriMilano645998 RossiRoma557309 NeriNapoli645698 Milano 449553 Impiegati Milano 449553NeriNapoli645698 impiegati che guadagnano più di 50  Stipendio > 50 (Impiegati)

26 Algebra Relazionale26 Impiegati CognomeFilialeStipendioMatricola NeriMilano645998 RossiRoma557309 NeriNapoli645698 Milano 449553 impiegati che guadagnano più di 50 e lavorano a Milano  Stipendio > 50 AND Filiale = 'Milano' (Impiegati) RossiRoma557309 NeriNapoli645698 Milano 449553 NeriMilano645998

27 Algebra Relazionale27 Impiegati CognomeFilialeStipendioMatricola NeriMilano645998 RossiRoma557309 NeriNapoli645698 Milano 449553 impiegati che hanno lo stesso nome della filiale presso cui lavorano  Cognome = Filiale (Impiegati) NeriMilano645998 RossiRoma557309 NeriNapoli645698 Milano 449553

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 NeriMilano455998 RossiRoma327309 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 NeriMilano455998 RossiRoma327309 BruniMilano NULL 9553 Impiegati NeriMilano455998 BruniMilano NULL 9553  (Età > 40) OR (Età IS NULL) (Impiegati) NeriMilano455998 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 NeriMilano645998 NeriNapoli557309 RossiRoma645698 RossiRoma449553 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 NeriMilano645998 NeriNapoli557309 RossiRoma645698 RossiRoma449553 matricola e cognome di tutti gli impiegati  Matricola, Cognome (Impiegati)

42 Algebra Relazionale42 CognomeFilialeStipendioMatricola NeriMilano645998 NeriNapoli557309 RossiRoma645698 RossiRoma449553 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 NeriMilano645998 RossiRoma557309 NeriNapoli645698 Milano 449553 Milano 449553NeriNapoli645698 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 2021Rossi1-3-1975 2424Bianchi23-3-1974 3445Neri2-2-1975 matricolacorsovoto 2021Basi dati28 2021Calcolo25 3445Algebra30 matricolacognomedata_nasccorsovoto 2021Rossi1-3-1975Basi dati28 2021Rossi1-3-1975Calcolo25 3545Neri2-2-1975Algebra30 2021Rossi1-3-1975Basi dati28 2021Rossi1-3-19752021Basi dati28 2021Rossi1-3-1975Calcolo25 2021Rossi1-3-1975 2021Calcolo25 3445Neri2-2-1975 3445Algebra30 3445Neri2-2-1975Algebra30

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 34563004 34562402 92832801 esami 65542601 (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/1978 4678NeriPaolo03/11/1976 3456RossiMaria01/02/1978 9283VerdiLuisa12/11/1979 studenti CodiceTitoloDocente 01AnalisiMari 02ChimicaMari 04ChimicaVerdi corsi Corso 04 esami MatrVotoCodice 34563004 34562402 92833001 65542601 esami Esercizio 1 Determinare i corsi tenuti dal Prof. Mari  Titolo (  Docente=‘Mari’ (corsi) )

69 MatrCognomeNomeData di nascita 6554RossiMario05/12/1978 4678NeriPaolo03/11/1976 3456RossiMaria01/02/1978 9283VerdiLuisa12/11/1979 studenti CodiceTitoloDocente 01AnalisiMari 02ChimicaMari 04ChimicaVerdi corsi Corso 04 esami MatrVotoCodice 34563004 34562402 92833001 65542601 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/1978 4678NeriPaolo03/11/1976 3456RossiMaria01/02/1978 9283VerdiLuisa12/11/1979 studenti CodiceTitoloDocente 01AnalisiMari 02ChimicaMari 04ChimicaVerdi corsi Corso 04 esami MatrVotoCodice 34563004 34562402 92833001 65542601 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/1978 4678NeriPaolo03/11/1982 3456RossiMaria01/02/1983 9283VerdiLuisa12/11/1979 studenti CodiceTitoloDocente 01AnalisiMari 02ChimicaMari 04ChimicaVerdi corsi Corso 04 esami MatrVotoCodice 34563004 34562401 92833001 65542601 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/1978 4678NeriPaolo03/11/1982 3456RossiMaria01/02/1983 9283VerdiLuisa12/11/1979 studenti CodiceTitoloDocente 01AnalisiMari 02ChimicaMari 04ChimicaVerdi corsi Corso 04 esami MatrVotoCodice 34563004 34562401 92833001 65542601 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/1978 4678NeriPaolo03/11/1982 3456RossiMaria01/02/1983 9283VerdiLuisa12/11/1979 studenti CodiceTitoloDocente 01AnalisiMari 02ChimicaMari 04FisicaVerdi corsi Corso 04 esami MatrVotoCodice 34563004 3456 2401 9283 3001 6554 2601 esami 6554 28 30 02 04

85 Algebra Relazionale85 Corso 04 esami MatrCodice 345604 3456 01 9283 01 6554 01  Matr,Codice (esami) 6554 02 04 Codice 01 02 04  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 Bianchi37385998 Rossi34457309 Bruni43425698 Neri42359553 Mori45504076 Lupi46608123 Supervisione ImpiegatoCapo 5998 7309 5698 9553 4076 5698 4076 8123

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 Bianchi37385998 Rossi34457309 Bruni43425698 Neri42359553 Mori45504076 Lupi46608123  Stipendio>40 (Impiegati) Bianchi37385998 Neri42359553 Rossi34457309 Bruni43425698 Mori45504076 Lupi46608123 Rossi34457309 Bruni43425698 Mori45504076 Lupi46608123

98 Algebra Relazionale98  Trovare matricola, nome ed età degli impiegati che guadagnano più di 40 milioni  Matricola, Nome, Età (  Stipendio>40 (Impiegati)) NomeEtàStipendioMatricola Bianchi37385998 Rossi34457309 Bruni43425698 Neri42359553 Mori45504076 Lupi46608123 Bianchi37385998 Neri42359553 Rossi34457309 Bruni43425698 Mori45504076 Lupi46608123 Rossi34457309 Bruni43425698 Mori45504076 Lupi46608123

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 5698 4076 8123  Capo (Supervisione  Impiegato=Matricola (  Stipendio>40 (Impiegati))) Bianchi37385998 Rossi34457309 Bruni43425698 Neri42359553 Mori45504076 Lupi46608123 NomeEtàStipendioMatricola Impiegati

102 Algebra Relazionale102 Impiegati  Matricola=Capo  Capo (Supervisione  Impiegato=Matricola (  Stipendio>40 (Impiegati)))) CapoMatricolaNomeEtàStipendio 5698 Bianchi3738 4076 Mori4550 8123 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 Bianchi28385998 Rossi34457309 Bruni23425698 Neri42359553 Mori45504076 Lupi46608123 Supervisione ImpiegatoCapo 5998 7309 5698 9553 4076 5698 4076 8123

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