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)
C. Marrocco
Università 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…
C. Marrocco
Università 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.
C. Marrocco
Università 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.
C. Marrocco
Università 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
C. Marrocco
Università 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.
C. Marrocco
Università 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).
C. Marrocco
Università degli Studi
di Cassino
Operazioni sulle relazioni
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
C. Marrocco
Università 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.
C. Marrocco
Università degli Studi
di Cassino
Un esempio di proiezione
Applicata ad una certa relazione, costruisce una nuova
relazione formata da un sottoinsieme definito di attributi.
impiegato
rossi
giordano
neri
franco
franco
barbareschi
milo
milo
impiegato
rossi
giordano
neri
franco
franco
barbareschi
milo
C.
Marrocco
milo
progetto
spazio-1
spazio-2
spazio-3
spazio-1
giardini
spa
spazio-2
spazio-1
giardini
spa
funzione
produzione
progettazione
marketing
produzione
produzione
progettazione
progettazione
produzione
progetto
spazio-1
spazio-2
spazio-3
spazio-1
giardini
spa
spazio-2
spazio-1
giardini
spa
“Fornire gli impiegati ed i
progetti in cui sono impegnati”
Proietta
gli
attributi
impiegato e progetto
Università 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
C. Marrocco
Università degli Studi
di Cassino
Un esempio di selezione
Applicata ad una certa relazione, costruisce una nuova
relazione formata dalle tuple che soddisfano una
particolare condizione.
impiegato
rossi
giordano
neri
franco
franco
barbareschi
milo
milo
progetto
spazio-1
spazio-2
spazio-3
spazio-1
giardini
spa
spazio-2
spazio-1
giardini
spa
funzione
produzione
progettazione
marketing
produzione
produzione
progettazione
progettazione
produzione
impiegato progetto
funzione
giordano
spazio-2 progettazione
barbareschi spazio-2 progettazione
m ilo
spazio-1 progettazione
C. Marrocco
“Fornire gli impiegati ed i
progetti in cui gli impiegati hanno
funzione di progettazione”
Seleziona le tuple aventi
attributo funzione con valore
progettazione
Università 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 tuple
correlate 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.
C. Marrocco
Università degli Studi
di Cassino
Theta - Join
impiegato
rossi
giordano
neri
franco
franco
barbareschi
milo
milo
progetto
spazio-1
spazio-2
spazio-3
spazio-1
giardini
spa
spazio-2
spazio-1
giardini
spa
funzione
produzione
progettazione
marketing
produzione
produzione
progettazione
progettazione
produzione
N
1
ruolo
stip.
produzione
1800
progettazione 1900
marketing
2000
• 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.
C. Marrocco
Università degli Studi
di Cassino
Un esempio di Theta-Join
“Fornire
l’elenco
degli
impiegati, i progetti su cui
sono impegnati, la funzione
svolta
e
lo
stipendio
percepito”
Theta-join
delle
relazioni
(impiegato, progetto, funzione)
e (ruolo, stipendio) con i valori
degli attributi funzione e ruolo
uguali
C. Marrocco
impiegato
rossi
giordano
neri
franco
franco
barbareschi
milo
milo
progetto
spazio-1
spazio-2
spazio-3
spazio-1
giardini
spa
spazio-2
spazio-1
giardini
spa
impiegato
rossi
giordano
neri
franco
franco
barbareschi
milo
milo
funzione
produzione
progettazione
marketing
produzione
produzione
progettazione
progettazione
produzione
progetto
spazio-1
spazio-2
spazio-3
spazio-1
giardini
spa
spazio-2
spazio-1
giardini
spa
ruolo
stip.
produzione
1800
progettazione 1900
marketing
2000
funzione
produzione
progettazione
marketing
produzione
produzione
progettazione
progettazione
produzione
ruolo
produzione
progettazione
marketing
produzione
produzione
progettazione
progettazione
produzione
stip.
1800
1900
2000
1800
1800
1900
1900
1800
Università 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’equijoin si avranno sempre una o piu coppie di attributi con
valori identici in ciascuna tupla.
C. Marrocco
Università 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 operandi
con valori uguali sugli attributi comuni.
C. Marrocco
Università degli Studi
di Cassino
Un esempio di Join Naturale
“Fornire
l’elenco
degli
impiegati, i progetti su cui
sono impegnati, la funzione
svolta
e
lo
stipendio
percepito”
Join naturale delle relazioni
(impiegato, progetto, funzione)
e (funzione, stipendio)
C. Marrocco
impiegato
rossi
giordano
neri
franco
franco
barbareschi
milo
milo
progetto
spazio-1
spazio-2
spazio-3
spazio-1
giardini
spa
spazio-2
spazio-1
giardini
spa
funzione
produzione
progettazione
marketing
produzione
produzione
progettazione
progettazione
produzione
funzione
stip.
produzione
1800
progettazione 1900
marketing
2000
E’ possibile applicare il join naturale
perché gli attributi hanno lo stesso
nome.
impiegato
rossi
giordano
neri
franco
franco
barbareschi
milo
milo
progetto
spazio-1
spazio-2
spazio-3
spazio-1
giardini
spa
spazio-2
spazio-1
giardini
spa
funzione
produzione
progettazione
marketing
produzione
produzione
progettazione
progettazione
produzione
stip.
ndio
1800
1900
2000
1800
1800
1900
1900
1800
Università degli Studi
di Cassino
Join Esterno (Outer Join)
• Nel join naturale, le tuple senza corrispondenze (dangling
tuple) 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.
C. Marrocco
Università 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 Outer
Join), mantiene tutte le tuple della seconda relazione (di
destra) R2.
• Una terza operazione, join esterna totale (Full Outer
Join), mantiene tutte le tuple di entrambe le relazioni.
C. Marrocco
Università degli Studi
di Cassino
Un esempio di query
Avendo a disposizione gli operatori visti, è possibile
trasformare una qualunque interrogazione sul database in
una combinazione di operatori applicati sulle relazioni
definite nel database.
impiegato telefono
Esempio
“Trovare nomi e telefoni
degli impiegati impegnati
nel progetto spazio-1”
progetto
spazio-1
spazio-2
spazio-3
giardini spa
C. Marrocco
rossi
giordano
neri
franco
barbareschi
milo
descrizione progetto
realizzazione componenti per la stazione spaziale
progettazione componenti per la stazione
spaziale
analisi
marketing
realizzazione zappe per giardini
814
978
312
223
370
899
funzione
produzione
progettazione
marketing
impiegato
rossi
giordano
neri
franco
franco
barbareschi
milo
milo
progetto
spazio-1
spazio-2
spazio-3
spazio-1
giardini
spa
spazio-2
spazio-1
giardini
spa
stip.
1800
1900
2000
funzione
produzione
progettazione
marketing
produzione
produzione
progettazione
progettazione
produzione
Università degli Studi
di Cassino
Un esempio di query
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
C. Marrocco
impiegato
rossi
giordano
neri
franco
franco
barbareschi
milo
milo
progetto
spazio-1
spazio-2
spazio-3
spazio-1
giardini
spa
spazio-2
spazio-1
giardini
spa
funzione
produzione
progettazione
marketing
produzione
produzione
progettazione
progettazione
produzione
telefono
814
978
312
223
223
370
899
899
impiegato progetto
funzione
rossi
spazio-1 produzione
franco
spazio-1 produzione
milo
spazio-1 progettazione
telefono
814
223
899
impiegato telefono
rossi
814
franco
223
milo
899
Università 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.
C. Marrocco
Università 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.
C. Marrocco
Università 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).
C. Marrocco
Università degli Studi
di Cassino