Join, una difficoltà Impiegato Reparto Rossi A Neri B Bianchi Reparto

Slides:



Advertisements
Presentazioni simili
Algoritmo di Query Optimization
Advertisements

Trovare le matricole dei capi degli impiegati che guadagnano più di 40 milioni PROJCapo (SELStipendio>40 (Supervisione JOIN Impiegato=Matricola Impiegati))
Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.
Join Proprietà Il join di r 1 e r 2 contiene un numero di tuple compreso fra zero e il prodotto di |r 1 | e |r 2 | se il join di r 1 e r 2 è completo allora.
Join Se ciascuna tupla di ciascun operando contribuisce ad almeno una tupla del risultato il join si dice completo. Se per alcune tuple non è verificata.
VETTORI: DEFINIZIONI Se ad una grandezza fisica G si associa una direzione ed un verso si parla di vettori: ✔ Le grandezze fisiche possono essere di due.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Le operazioni relazionali
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
ODMG.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
rielaborato da Atzeni-etal., Basi di dati, Capitolo 4
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning
Interrogazione di una base di dati relazionale
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Rielaborato da Atzeni et al., Basi di dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di Dati 1 in eLearning C
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Le operazioni relazionali (continua)
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Progettazione di una base di dati relazionale
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
A. A – 2008 Basi di dati 1 Corso Prof
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
7. Strutture di controllo Ing. Simona Colucci
Universita’ di Milano Bicocca Corso di Basi di Dati 1 in eLearning C
Definizione e caratteristiche
Progettazione di una base di dati relazionale
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Integrità referenziale
File con indice (sparso)
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Interrogazione di una base di dati relazionale
Corso di Basi di Dati Il Linguaggio SQL
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Interrogazione di una base di dati relazionale
Progettazione di una base di dati relazionale
I vincoli di integrità Alcuni aspetti della realtà NON possono essere modellati solamente con entità, attributi e relazioni, per esempio i vincoli di integrità.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Progettazione logica: Il modello relazionale
Rappresentazione dei Numeri
OBJECT ORIENTED DATABASE
Partizionamento/accorpamento di concetti
SQL per la modifica di basi di dati
Algebra Booleana.
Modello Relazionale Proposto agli inizi degli anni ‘70 da Codd
Definizione di linguaggio di programmazione
Dipendenze funzionali
Condizioni decisionali
Strategie di progetto Si possono utilizzare le strategie tipiche dello sviluppo di un processo di ingegnerizzazione (es. ingegneria del software). Strategie.
Selezione e Proiezione
Definizione e caratteristiche
Vincoli di Integrità Non tutte le combinazioni possibili di valori dei domini su cui è definita una relazione sono accettabili. Alcuni attributi possono.
Transcript della presentazione:

Join, una difficoltà Impiegato Reparto Rossi A Neri B Bianchi Reparto Capo B Mori C Bruni A C Neri B Mori Impiegato Reparto Capo Bianchi alcune tuple non contribuiscono al risultato: vengono "tagliate fuori” (tuple dangling)

Join Join Esterni Il join naturale tralascia le tuple in cui non vi è corrispondenza fra gli attributi legati dal join. Si definiscono allora altri tipi di join, che fanno sì che anche quelle tuple vengano considerate, inserendo valori nulli dove non vi sia corrispondenza. Join sinistro Contribuiscono tutte le tuple del primo operando eventualmente estese con valori nulli Join destro Contribuiscono tutte le tuple del secondo operando eventualmente estese con valori nulli Join completo Contribuiscono tutte le tuple del primo e del secondo operando eventualmente estese con valori nulli

Impiegati JOINLEFT Reparti Impiegato Reparto Rossi A Neri B Bianchi Impiegati Reparto Capo B Mori C Bruni Reparti A Rossi C Impiegati JOINLEFT Reparti Neri B Mori Impiegato Reparto Capo Bianchi Rossi A NULL

Impiegati JOINRIGHT Reparti Impiegato Reparto Rossi A Neri B Bianchi Impiegati Reparto Capo B Mori C Bruni Reparti A C Bruni Impiegati JOINRIGHT Reparti Neri B Mori Impiegato Reparto Capo Bianchi NULL C Bruni

Impiegati JOINFULL Reparti Impiegato Reparto Rossi A Neri B Bianchi Impiegati Reparto Capo B Mori C Bruni Reparti A Rossi C Bruni Impiegati JOINFULL Reparti Neri B Mori Impiegato Reparto Capo Bianchi Rossi A NULL NULL C Bruni

Join e proiezioni: problemi Impiegato Reparto Rossi A Neri B Bianchi Reparto Capo B Mori C Bruni Neri B Mori Impiegato Reparto Capo Bianchi Impiegato Reparto Neri B Bianchi Reparto Capo B Mori

Proiezioni e join: problemi Neri B Mori Impiegato Reparto Capo Bianchi Bruni Verdi A Bini Neri B Impiegato Reparto Bianchi Verdi A B Mori Reparto Capo Bruni A Bini Verdi A Bini Neri B Mori Impiegato Reparto Capo Bianchi Bruni

Join e proiezioni R 1(X1), R 2(X2)  X1 (R 1  R2 )  R 1 R(X), X = X1  X2 ( X1 (R))  ( X2 (R))  R

Interrogazioni (Query) Un’interrogazione è una funzione E(r) che applicata ad istanze di una base di dati r produce una relazione su un dato insieme di attributi X. Le interrogazioni su uno schema di base di dati R in algebra relazionale sono espressioni i cui atomi (le variabili) sono relazioni in R.

Esempi Impiegati Supervisione Nome Età Stipendio Matricola Bianchi 37 38 5998 Rossi 34 45 7309 Bruni 43 42 5698 Neri 35 9553 Mori 50 4076 Lupi 46 60 8123 Supervisione Impiegato Capo 5998 7309 5698 9553 4076 8123

SELStipendio>40(Impiegati) Trovare matricola, nome, età e stipendio degli impiegati che guadagnano più di 40 milioni SELStipendio>40(Impiegati) Nome Età Stipendio Matricola Rossi 34 45 7309 Bruni 43 42 5698 Mori 50 4076 Lupi 46 60 8123 Bianchi 37 38 5998 Rossi 34 45 7309 Bruni 43 42 5698 Neri 35 9553 Mori 50 4076 Lupi 46 60 8123 Bianchi 37 38 5998 Neri 42 35 9553 Rossi 34 45 7309 Bruni 43 5698 Mori 50 4076 Lupi 46 60 8123

PROJMatricola, Nome, Età (SELStipendio>40(Impiegati)) Trovare matricola, nome ed età degli impiegati che guadagnano più di 40 milioni PROJMatricola, Nome, Età (SELStipendio>40(Impiegati)) Nome Età Stipendio Matricola Rossi 34 45 7309 Bruni 43 42 5698 Mori 50 4076 Lupi 46 60 8123 Bianchi 37 38 5998 Rossi 34 45 7309 Bruni 43 42 5698 Neri 35 9553 Mori 50 4076 Lupi 46 60 8123 Bianchi 37 38 5998 Neri 42 35 9553 Rossi 34 45 7309 Bruni 43 5698 Mori 50 4076 Lupi 46 60 8123

Trovare le matricole dei capi degli impiegati che guadagnano più di 40 milioni PROJCapo (Supervisione JOIN Impiegato=Matricola (SELStipendio>40(Impiegati)))

Esercizi Trovare nome e stipendio dei capi degli impiegati che guadagnano più di 40 milioni Trovare gli impiegati che guadagnano più del proprio capo, mostrando matricola, nome e stipendio dell'impiegato e del capo Trovare le matricole dei capi i cui impiegati guadagnano tutti più di 40 milioni

Equivalenza di espressioni Due espressioni sono equivalenti se: E1R E2 se E1(r) = E2(r) per ogni istanza r di R (equivalenza dipendente dallo schema) L’equivalenza è importante in quanto consente di scegliere, a parità di risultato, l’operazione meno costosa. E1 E2 se E1R E2 per ogni schema R (equivalenza assoluta)

Equivalenze Atomizzazione delle selezioni F1  F2 (E)  F1 (F2 (E)) Idempotenza delle proiezioni X (E)  X (XY (E)) Anticipazione della selezione rispetto al join F (E1  E2)  E1  (F (E2) )

Equivalenze Anticipazione della proiezione rispetto al join: X1Y2 (E1  E2)  E1  Y2 (E2) (se gli attributi in X2 - Y2 non sono coinvolti nel join) Allora (combinando con idempotenza delle proiezioni): Y (E1 F E2)  Y (Y1 (E1) F Y2 (E2) ) dove Y1 e Y2 sono gli attributi di X1 e X2 compresi in Y o coinvolti nel join. In pratica è possibile ignorare in ciascuna relazione gli attributi non compresi in Y e non coinvolti nel join Inglobamento di una selezione in un prodotto cartesiano a formare un join: sF (E1  E2)  E1 F E2

Equivalenze Distributività della selezione rispetto all’unione: sF (E1  E2)  sF (E1)  sF (E2) Distributività della selezione rispetto alla differenza: sF (E1 - E2)  sF (E1) - sF (E2) Distributività della proiezione rispetto all’unione: PX (E1  E2)  PX (E1)  PX (E2) NB La proiezione NON è distributiva rispetto alla differenza Tutti gli operatori binari eccetto la differenza godono delle proprietà associativa e commutativa.

Equivalenze Corrispondenze fra operatori insiemistici e selezioni complesse F1 F2 (R)  F1(R)  F2(R) F1  F2 (R)  F1(R)  F2(R)  F1(R)  F2(R) F1  ¬F2 (R)  F1(R) - F2(R) Proprietà distributiva del join rispetto all’unione: E  (E1  E2)  (E  E1)  (E  E2)

Algebra con valori nulli Estensione degli operatori logici ad una logica a 3 valori (VERO, FALSO, SCONOSCIUTO (U))

Algebra con valori nulli A IS NULL è vero su una tupla t se il valore di t su A è nullo; falso se è specificato. A IS NOT NULL è vero su una tupla t se il valore di t su A è specificato; falso se è nullo. Età>30 (Persone) restituisce le persone la cui età è nota e > 30 anni Età>30  Età IS NULL (Persone) restituisce le persone che potrebbero avere più di 30 anni

Viste (relazioni derivate) Rappresentazioni diverse per gli stessi dati (schema esterno) Relazioni di base: contenuto autonomo Relazioni derivate: relazioni il cui contenuto è funzione del contenuto di altre relazioni (definito per mezzo di interrogazioni)

Viste Relazioni Virtuali (Viste) Relazioni definite mediante funzioni o espressioni del linguaggio di interrogazione, non memorizzate ma utilizzabili come se lo fossero. Devono essere ricalcolate tutte le volte. Viste materializzate Relazioni virtuali effettivamente memorizzate nella base di dati. Immediatamente disponibili ma critiche per il mantenimento dell’allineamento con le relazioni da cui derivano. Non sono supportate dai DBMS.

Viste Vantaggi Permettono di mostrare a un utente le sole componenti della base di dati che interessano Espressioni molto complesse possono essere definite come viste Sicurezza: è possibile definire dei diritti di accesso relativi ad una vista (e quindi ad una particolare porzione della base di dati) In caso di ristrutturazione della base di dati, le “vecchie” relazioni possono essere di nuovo ricavate mediante viste, consentendo l’uso di applicazioni che fanno riferimento al vecchio schema

Viste, esempio A Mori B Bruni Reparto Capo Rossi Neri Bianchi Impiegato Afferenza Direzione una vista: Supervisione = PROJ Impiegato, Capo (Afferenza JOIN Direzione)

Interrogazioni sulle viste Sono eseguite sostituendo alla vista la sua definizione: SELCapo='Leoni' (Supervisione) viene eseguita come SELCapo='Leoni'( PROJ Impiegato, Capo (Afferenza JOIN Direzione))

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

Viste come strumento di programmazione Trovare gli impiegati che hanno lo stesso capo di Rossi Senza vista: PROJ Impiegato (Afferenza JOIN Direzione) JOIN REN ImpR,RepR  Imp,Reparto ( SEL Impiegato='Rossi' (Afferenza JOIN Direzione)) Con la vista: PROJ Impiegato (Supervisione) JOIN REN ImpR,RepR  Imp,Reparto ( SEL Impiegato='Rossi' (Supervisione))

Viste e aggiornamenti, attenzione Afferenza Direzione A Mori B Bruni Reparto Capo Rossi Neri Impiegato Verdi C Supervisione Vogliamo inserire, nella vista, il fatto che Lupi ha come capo Bruni; oppure che Belli ha come capo Falchi; come facciamo?

Viste e aggiornamenti "Aggiornare una vista": modificare le relazioni di base in modo che la vista, "ricalcolata”, rispecchi l'aggiornamento L'aggiornamento sulle relazioni di base corrispondente a quello specificato sulla vista deve essere univoco In generale però non è univoco! Ben pochi aggiornamenti sono ammissibili sulle viste