Operazioni sui database - unina.stidue.netunina.stidue.net/Basi di Dati 2/Materiale/Operazioni...

25
C. Marrocco Università degli Studi di Cassino Università degli Studi di Cassino Operazioni sui database • Le operazioni nel modello relazionale sono essenzialmente di due tipi: – Operazioni di modifica della base di dati (update) – Interrogazioni della base di dati per il recupero delle informazioni (query)

Transcript of Operazioni sui database - unina.stidue.netunina.stidue.net/Basi di Dati 2/Materiale/Operazioni...

Page 1: Operazioni sui database - unina.stidue.netunina.stidue.net/Basi di Dati 2/Materiale/Operazioni DB.pdf · C. Marrocco Università degli Studi di Cassino Operazioni sui database •

C. Marrocco Università degli Studi di CassinoUniversità degli Studi di Cassino

Operazioni sui database

• Le operazioni nel modello relazionale sono essenzialmente di due tipi:

– Operazioni di modifica della base di dati (update)

– Interrogazioni della base di dati per il recupero delle informazioni (query)

Page 2: Operazioni sui database - unina.stidue.netunina.stidue.net/Basi di Dati 2/Materiale/Operazioni DB.pdf · C. Marrocco Università degli Studi di Cassino Operazioni sui database •

C. Marrocco Università degli Studi di CassinoUniversità degli Studi di Cassino

Operazioni insiemistiche

• Le relazioni sono insiemi.

• I risultati debbono essere relazioni.

• E’ possibile applicare le operazioni sugli insiemi (unione, intersezione, differenza) a relazioni definite sugli attributi.

• Si considerino due relazioni R1 e R2 definite su di uno stesso schema con gli stessi attributi (ipotesi di compatibilità) allora…

Page 3: Operazioni sui database - unina.stidue.netunina.stidue.net/Basi di Dati 2/Materiale/Operazioni DB.pdf · C. Marrocco Università degli Studi di Cassino Operazioni sui database •

C. Marrocco Università degli Studi di CassinoUniversità degli Studi di Cassino

Operazioni insiemistiche

• Si definisce unione (Union) una nuova relazione ottenuta considerando le tuple di entrambi le relazioni R1 e R2.

• Si definisce intersezione (Intersection) una nuova relazione ottenuta considerando le tuple di R1 che sono anche in R2 e viceversa.

• Si definisce differenza (Minus) una nuova relazione ottenuta considerando le tuple di R1 escluse quelle che appartengono anche ad R2.

• Si definisce prodotto cartesiano (Cartesian Product) una nuova relazione contenente le tuple di R1 concatenate con ciascuna tupla di R2.

Page 4: Operazioni sui database - unina.stidue.netunina.stidue.net/Basi di Dati 2/Materiale/Operazioni DB.pdf · C. Marrocco Università degli Studi di Cassino Operazioni sui database •

C. Marrocco Università degli Studi di CassinoUniversità degli Studi di Cassino

Operazioni di modifica del database

• Inserimento di una tupla (Insert): permette di inserire una nuova tupla in una relazione.

• Cancellazione di una tupla (Delete): elimina una tupla da una relazione.

• Modifica di una tupla (Update): cambia i valori di uno o più attributi all’interno della tupla.

Queste operazioni potrebbero violare i vincoli di integrità. Pertanto le operazioni di aggiornamento potrebbero “propagarsi” e causare altri aggiornamenti in modo automatico.

Page 5: Operazioni sui database - unina.stidue.netunina.stidue.net/Basi di Dati 2/Materiale/Operazioni DB.pdf · C. Marrocco Università degli Studi di Cassino Operazioni sui database •

C. Marrocco Università degli Studi di CassinoUniversità degli Studi di Cassino

Operazioni di modifica del database

Nel caso un operazione di aggiornamento di una relazione violi un vincolo di integrità, si possono intraprendere alcune azioni:

• Annullare l’operazione che causa la violazione (Reject).

• Eseguire l’operazione, informando l’utente della violazione.

• Far partire ulteriori aggiornamenti in modo da correggere la violazione (opzione Cascade, opzione Set Null).

• Eseguire una routine specificata dall’utente per correggere la violazione

Page 6: Operazioni sui database - unina.stidue.netunina.stidue.net/Basi di Dati 2/Materiale/Operazioni DB.pdf · C. Marrocco Università degli Studi di Cassino Operazioni sui database •

C. Marrocco Università degli Studi di CassinoUniversità degli Studi di Cassino

Operazioni sulle relazioni

• L’insieme principale delle operazioni per il modello relazionale è l’algebra relazionale.

• Le operazioni dell’algebra consentono all’utente di specificare le interrogazioni (query) fondamentali.

• Il risultato di un’interrogazione è una nuova relazione, che può essere stata formata a partire da una o piùrelazioni. Le operazioni dell’algebra, quindi, producono nuove relazioni, che possono essere ulteriormente manipolate usando le operazioni della stessa algebra.

Page 7: Operazioni sui database - unina.stidue.netunina.stidue.net/Basi di Dati 2/Materiale/Operazioni DB.pdf · C. Marrocco Università degli Studi di Cassino Operazioni sui database •

C. Marrocco Università degli Studi di CassinoUniversità degli Studi di Cassino

Operazioni sulle relazioni

Nelle operazioni relazionali è possibile applicare gli operatori aritmetici e logici classici:

• Operatori matematici (/, *, +, -).

• Operatori di confronto (>, <, = , <=, >=, <>).

• Operatori logici (AND, OR, NOT).

• NULL (indica un campo vuoto).

Page 8: Operazioni sui database - unina.stidue.netunina.stidue.net/Basi di Dati 2/Materiale/Operazioni DB.pdf · C. Marrocco Università degli Studi di Cassino Operazioni sui database •

C. Marrocco Università degli Studi di CassinoUniversità degli Studi di Cassino

Le operazioni possono essere di due tipi: unarie e binarie

Le principali sono:

• proiezione

• selezione

• join

Altre operazioni sono:

• ridenominazione

• funzioni aggregate e di raggruppamento

Operazioni sulle relazioni

Page 9: Operazioni sui database - unina.stidue.netunina.stidue.net/Basi di Dati 2/Materiale/Operazioni DB.pdf · C. Marrocco Università degli Studi di Cassino Operazioni sui database •

C. Marrocco Università degli Studi di CassinoUniversità degli Studi di Cassino

Proiezione (Project)

• L’operazione di proiezione seleziona alcuni attributi (colonne) da una relazione (tabella) e scarta gli altri.

• Può essere vista come una partizione verticale della relazione in due relazioni: una con gli attributi richiesti, contenente il risultato dell’operazione, e l’altra con quelli non richiesti.

• Rimuove eventuali duplicati delle tuple, in modo che il risultato dell’operazione sia un’insieme di tuple, e quindi una relazione, valida.

Page 10: Operazioni sui database - unina.stidue.netunina.stidue.net/Basi di Dati 2/Materiale/Operazioni DB.pdf · C. Marrocco Università degli Studi di Cassino Operazioni sui database •

C. Marrocco Università degli Studi di CassinoUniversità degli Studi di Cassino

impiegato progetto funzione rossi spazio-1 produzione giordano spazio-2 progettazione neri spazio-3 marketing franco spazio-1 produzione franco giardini

spa produzione

barbareschi spazio-2 progettazione milo spazio-1 progettazione milo giardini

spa produzione

“Fornire gli impiegati ed i progetti in cui sono impegnati”

impiegato progettorossi spazio-1giordano spazio-2neri spazio-3franco spazio-1franco giardini

spabarbareschi spazio-2milo spazio-1milo giardini

spa

Proietta gli attributi impiegato e progetto

Un esempio di proiezioneApplicata ad una certa relazione, costruisce una nuova relazione formata da un sottoinsieme definito di attributi.

Page 11: Operazioni sui database - unina.stidue.netunina.stidue.net/Basi di Dati 2/Materiale/Operazioni DB.pdf · C. Marrocco Università degli Studi di Cassino Operazioni sui database •

C. Marrocco Università degli Studi di CassinoUniversità degli Studi di Cassino

Selezione (Select)

• L’operazione di selezione è usata per selezionare un sottoinsieme di tuple di una relazione che soddisfano una determinata condizione.

• È una sorta di filtro che trattiene solo quelle tuple che soddisfano una condizione qualificante.

• Può essere vista come una partizione orizzontale della relazione in due insiemi di tuple: quelle che soddisfano la condizione vengono selezionate e quelle che non la soddisfano e vengono scartate

Page 12: Operazioni sui database - unina.stidue.netunina.stidue.net/Basi di Dati 2/Materiale/Operazioni DB.pdf · C. Marrocco Università degli Studi di Cassino Operazioni sui database •

C. Marrocco Università degli Studi di CassinoUniversità degli Studi di Cassino

Un esempio di selezioneApplicata ad una certa relazione, costruisce una nuova relazione formata dalle tuple che soddisfano una particolare condizione.

impiegato progetto funzionerossi spazio-1 produzionegiordano spazio-2 progettazioneneri spazio-3 marketingfranco spazio-1 produzionefranco giardini

spaproduzione

barbareschi spazio-2 progettazionemilo spazio-1 progettazionemilo giardini

spaproduzione

“Fornire gli impiegati ed i progetti in cui gli impiegati hanno funzione di progettazione”

impiegato progetto funzionegiordano spazio-2 progettazionebarbareschi spazio-2 progettazionemilo spazio-1 progettazione

Seleziona le tuple aventi attributo funzione con valore progettazione

Page 13: Operazioni sui database - unina.stidue.netunina.stidue.net/Basi di Dati 2/Materiale/Operazioni DB.pdf · C. Marrocco Università degli Studi di Cassino Operazioni sui database •

C. Marrocco Università degli Studi di CassinoUniversità degli Studi di Cassino

Join

• E’ la sequenza di un’operazione di prodotto cartesiano seguita da una di selezione, ed è usata molto comunemente per identificare e selezionare tuplecorrelate da due relazioni.

• È un operatore binario che permette di correlare dati contenuti in relazioni diverse, confrontando i valori contenuti in esse.

• Ci sono due tipi di join: theta-join e join naturale.

Page 14: Operazioni sui database - unina.stidue.netunina.stidue.net/Basi di Dati 2/Materiale/Operazioni DB.pdf · C. Marrocco Università degli Studi di Cassino Operazioni sui database •

C. Marrocco Università degli Studi di CassinoUniversità degli Studi di Cassino

Theta - Join

• Applicato a due relazioni, il theta-join costruisce la relazione formata dalle tuple ottenute combinando le tuple degli operandi per cui è soddisfatta una condizione definita sui valori dei rispettivi attributi.

• Le tuple i cui attributi di join sono NULL non compaiono nel risultato. Per questo l’operazione di join non conserva necessariamente tutte le informazioni presenti nelle relazioni partecipanti.

impiegato progetto funzionerossi spazio-1 produzionegiordano spazio-2 progettazioneneri spazio-3 marketingfranco spazio-1 produzionefranco giardini

spaproduzione

barbareschi spazio-2 progettazionemilo spazio-1 progettazionemilo giardini

spaproduzione

N 1

ruolo stip. produzione 1800 progettazione 1900 marketing 2000

Page 15: Operazioni sui database - unina.stidue.netunina.stidue.net/Basi di Dati 2/Materiale/Operazioni DB.pdf · C. Marrocco Università degli Studi di Cassino Operazioni sui database •

C. Marrocco Università degli Studi di CassinoUniversità degli Studi di Cassino

Theta-join delle relazioni (impiegato, progetto, funzione) e (ruolo, stipendio) con i valori degli attributi funzione e ruolouguali

impiegato progetto funzionerossi spazio-1 produzionegiordano spazio-2 progettazioneneri spazio-3 marketingfranco spazio-1 produzionefranco giardini

spaproduzione

barbareschi spazio-2 progettazionemilo spazio-1 progettazionemilo giardini

spaproduzione

“Fornire l’elenco degli impiegati, i progetti su cui sono impegnati, la funzione svolta e lo stipendio percepito”

impiegato progetto funzione ruolo stip. rossi spazio-1 produzione produzione 1800 giordano spazio-2 progettazione progettazione 1900 neri spazio-3 marketing marketing 2000 franco spazio-1 produzione produzione 1800 franco giardini

spa produzione produzione 1800

barbareschi spazio-2 progettazione progettazione 1900 milo spazio-1 progettazione progettazione 1900 milo giardini

spa produzione produzione 1800

Un esempio di Theta-Join

ruolo stip. produzione 1800 progettazione 1900 marketing 2000

Page 16: Operazioni sui database - unina.stidue.netunina.stidue.net/Basi di Dati 2/Materiale/Operazioni DB.pdf · C. Marrocco Università degli Studi di Cassino Operazioni sui database •

C. Marrocco Università degli Studi di CassinoUniversità degli Studi di Cassino

Equi – Join

L’uso piu comune delle operazioni di join utilizza condizioni di sola uguaglianza. Questo tipo particolare di theta-join, in cui l’unico operatore di comparazione usato è =, viene chiamata equi-join. Nel risultato di un’equi-join si avranno sempre una o piu coppie di attributi con valori identici in ciascuna tupla.

Page 17: Operazioni sui database - unina.stidue.netunina.stidue.net/Basi di Dati 2/Materiale/Operazioni DB.pdf · C. Marrocco Università degli Studi di Cassino Operazioni sui database •

C. Marrocco Università degli Studi di CassinoUniversità degli Studi di Cassino

Join Naturale (Natural Join)

Poiché uno degli attributi nelle coppie con valori identici è superfluo, è stata introdotta una nuova operazione, chiamata join naturale.

Applicato a due relazioni, costruisce la relazione formata dalle tuple ottenute combinando le tuple degli operandicon valori uguali sugli attributi comuni.

Page 18: Operazioni sui database - unina.stidue.netunina.stidue.net/Basi di Dati 2/Materiale/Operazioni DB.pdf · C. Marrocco Università degli Studi di Cassino Operazioni sui database •

C. Marrocco Università degli Studi di CassinoUniversità degli Studi di Cassino

funzione stip. produzione 1800 progettazione 1900 marketing 2000

impiegato progetto funzionerossi spazio-1 produzionegiordano spazio-2 progettazioneneri spazio-3 marketingfranco spazio-1 produzionefranco giardini

spaproduzione

barbareschi spazio-2 progettazionemilo spazio-1 progettazionemilo giardini

spaproduzione

“Fornire l’elenco degli impiegati, i progetti su cui sono impegnati, la funzione svolta e lo stipendio percepito”

impiegato progetto funzione stip.ndio rossi spazio-1 produzione 1800

giordano spazio-2 progettazione 1900 neri spazio-3 marketing 2000 franco spazio-1 produzione 1800 franco giardini

spa produzione 1800

barbareschi spazio-2 progettazione 1900 milo spazio-1 progettazione 1900 milo giardini

spa produzione 1800

Join naturale delle relazioni (impiegato, progetto, funzione) e (funzione, stipendio)

E’ possibile applicare il join naturale perché gli attributi hanno lo stesso nome.

Un esempio di Join Naturale

Page 19: Operazioni sui database - unina.stidue.netunina.stidue.net/Basi di Dati 2/Materiale/Operazioni DB.pdf · C. Marrocco Università degli Studi di Cassino Operazioni sui database •

C. Marrocco Università degli Studi di CassinoUniversità degli Studi di Cassino

Join Esterno (Outer Join)

• Nel join naturale, le tuple senza corrispondenze (danglingtuple) sono eliminate dal risultato dell’operazione cosìcome le tuple con valori NULL. Ciò può causare perdita di informazione.

• Un insieme di operazioni, cosiddetto join esterno, può essere usato quando si vuole tenere nel risultato di una join tutte le tuple di una delle due relazioni oppure quelle di entrambe le relazioni, anche nel caso in cui non si abbiano corrispondenze negli attributi su cui si crea il join.

Page 20: Operazioni sui database - unina.stidue.netunina.stidue.net/Basi di Dati 2/Materiale/Operazioni DB.pdf · C. Marrocco Università degli Studi di Cassino Operazioni sui database •

C. Marrocco Università degli Studi di CassinoUniversità degli Studi di Cassino

Join Esterno (Outer Join)

• L’operazione di join esterna sinistra (Left Outer Join) mantiene tutte le tuple della prima relazione (di sinistra). Se non c’è una corrispondenza con una tupla di R2, gli attributi di R2 del risultato di join vengono riempiti con valori NULL.

• Un’operazione analoga, join esterna destra (Right OuterJoin), mantiene tutte le tuple della seconda relazione (di destra) R2.

• Una terza operazione, join esterna totale (Full OuterJoin), mantiene tutte le tuple di entrambe le relazioni.

Page 21: Operazioni sui database - unina.stidue.netunina.stidue.net/Basi di Dati 2/Materiale/Operazioni DB.pdf · C. Marrocco Università degli Studi di Cassino Operazioni sui database •

C. Marrocco Università degli Studi di CassinoUniversità degli Studi di Cassino

Avendo a disposizione gli operatori visti, è possibile trasformare una qualunque interrogazione sul database in una combinazione di operatori applicati sulle relazioni definite nel database.

Esempio

“Trovare nomi e telefoni degli impiegati impegnati nel progetto spazio-1”

impiegato telefonorossi 814giordano 978neri 312franco 223barbareschi 370milo 899

funzione stip. produzione 1800 progettazione 1900 marketing 2000

progetto descrizione progettospazio-1 realizzazione componenti per la stazione spazialespazio-2 progettazione componenti per la stazione

spazialespazio-3 analisi marketinggiardini spa realizzazione zappe per giardini

impiegato progetto funzionerossi spazio-1 produzionegiordano spazio-2 progettazioneneri spazio-3 marketingfranco spazio-1 produzionefranco giardini

spaproduzione

barbareschi spazio-2 progettazionemilo spazio-1 progettazionemilo giardini

spaproduzione

Un esempio di query

Page 22: Operazioni sui database - unina.stidue.netunina.stidue.net/Basi di Dati 2/Materiale/Operazioni DB.pdf · C. Marrocco Università degli Studi di Cassino Operazioni sui database •

C. Marrocco Università degli Studi di CassinoUniversità degli Studi di Cassino

impiegato progetto funzione telefonorossi spazio-1 produzione 814giordano spazio-2 progettazione 978neri spazio-3 marketing 312franco spazio-1 produzione 223franco giardini

spaproduzione 223

barbareschi spazio-2 progettazione 370milo spazio-1 progettazione 899milo giardini

spaproduzione 899

impiegato progetto funzione telefonorossi spazio-1 produzione 814franco spazio-1 produzione 223milo spazio-1 progettazione 899

impiegato telefonorossi 814franco 223milo 899

Join naturale delle relazioni (impiegato, progetto, funzione) e (impiegato, telefono)

Seleziona le tuple aventi attributo progetto con valore spazio-1

Proietta gli attributi impiegato e telefono

Un esempio di query

Page 23: Operazioni sui database - unina.stidue.netunina.stidue.net/Basi di Dati 2/Materiale/Operazioni DB.pdf · C. Marrocco Università degli Studi di Cassino Operazioni sui database •

C. Marrocco Università degli Studi di CassinoUniversità degli Studi di Cassino

Ridenominazione (Rename)

• Quando si vogliono eseguire più operazioni di algebra relazionale una di seguito all’altra, è possibile applicare un’operazione alla volta e creare relazioni contenenti i risultati intermedi. In quest’ultimo caso occorre dare un nome alle relazioni intermedie.

• In generale in un’operazione di Rename si può avere:– una relazione ridenominata con attributi

ridenominati;– una relazione ridenominata che non specifica i nomi

degli attributi;– una relazione con attributi ridenominati che non

specifica il nome della relazione.

Page 24: Operazioni sui database - unina.stidue.netunina.stidue.net/Basi di Dati 2/Materiale/Operazioni DB.pdf · C. Marrocco Università degli Studi di Cassino Operazioni sui database •

C. Marrocco Università degli Studi di CassinoUniversità degli Studi di Cassino

Funzioni di aggregazione

• Un tipo di interrogazione che non può essere espressa in termini di algebra relazionale di base consiste nello specificare funzioni aggregate matematiche su collezioni di valori del database.

• Esempi di queste funzioni prevedono il recupero di valori medi o somme complessive, oppure il numero totale delle tuple di una relazione.

• Queste funzioni vengono usate in semplici interrogazioni statistiche che riassumono le informazioni provenienti dalla tuple del database.

• Funzioni comuni applicate a collezioni di valori numerici sono Sum, Average, Maximum, Minimum, Count.

Page 25: Operazioni sui database - unina.stidue.netunina.stidue.net/Basi di Dati 2/Materiale/Operazioni DB.pdf · C. Marrocco Università degli Studi di Cassino Operazioni sui database •

C. Marrocco Università degli Studi di CassinoUniversità degli Studi di Cassino

Funzioni di raggruppamento

• Alcune query potrebbero richiedere di raggruppare i risultati in base a determinati valori degli attributi.

• E’ possibile raggruppare le tuple di una relazione in sottoinsiemi caratterizzati da uno stesso valore di un particolare attributo (Group By).

• E’ possibile specificare delle condizioni logiche che devono essere verificate sul sottoinsieme di tuple che vengono raggruppate (Having).