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)
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 R 1 e R 2 definite su di uno stesso schema con gli stessi attributi (ipotesi di compatibilità) allora
Operazioni insiemistiche Si definisce unione (Union) una nuova relazione ottenuta considerando le tuple di entrambi le relazioni R 1 e R 2. Si definisce intersezione (Intersection) una nuova relazione ottenuta considerando le tuple di R 1 che sono anche in R 2 e viceversa. Si definisce differenza (Minus) una nuova relazione ottenuta considerando le tuple di R 1 escluse quelle che appartengono anche ad R 2. Si definisce prodotto cartesiano (Cartesian Product) una nuova relazione contenente le tuple di R 1 concatenate con ciascuna tupla di R 2.
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.
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
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.
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).
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
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.
Un esempio di proiezione Applicata ad una certa relazione, costruisce una nuova relazione formata da un sottoinsieme definito di attributi. impiegato progetto funzione rossi spazio-1 produzione giordano spazio-2 progettazione neri spazio-3 marketing franco spazio-1 produzione franco giardini produzione barbareschi spazio-2 progettazione milo spazio-1 progettazione milo giardini spa produzione Fornire gli impiegati ed i progetti in cui sono impegnati impiegato progetto rossi spazio-1 giordano spazio-2 neri spazio-3 Proietta gli attributi franco spazio-1 franco giardini impiegato e progetto barbareschi spazio-2 milo spazio-1 C. milo Marrocco giardini spa Università degli Studi
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
Un esempio di selezione Applicata ad una certa relazione, costruisce una nuova relazione formata dalle tuple che soddisfano una particolare condizione. impiegato progetto funzione rossi spazio-1 produzione giordano spazio-2 progettazione neri spazio-3 marketing franco spazio-1 produzione franco giardini produzione barbareschi spazio-2 progettazione milo spazio-1 progettazione milo giardini spa produzione impiegato progetto funzione giordano spazio-2 progettazione barbareschi spazio-2 progettazione m ilo spazio-1 progettazione Fornire gli impiegati ed i progetti in cui gli impiegati hanno funzione di progettazione Seleziona le tuple aventi attributo funzione con valore progettazione
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.
Theta - Join impiegato progetto funzione rossi spazio-1 produzione giordano spazio-2 progettazione neri spazio-3 marketing franco spazio-1 produzione franco giardini produzione barbareschi spazio-2 progettazione milo spazio-1 progettazione milo giardini spa 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.
Un esempio di Theta-Join Fornire l elenco degli impiegati, i progetti su cui sono impegnati, la funzione svolta e lo stipendio percepito impiegato progetto funzione rossi spazio-1 produzione giordano spazio-2 progettazione neri spazio-3 marketing franco spazio-1 produzione franco giardini produzione barbareschi spazio-2 progettazione milo spazio-1 progettazione milo giardini spa produzione ruolo stip. produzione 1800 progettazione 1900 marketing 2000 Theta-join delle relazioni (impiegato, progetto, funzione) e (ruolo, stipendio) con i valori degli attributi funzione e ruolo uguali 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 produzione produzione 1800 barbareschi spazio-2 progettazione progettazione 1900 milo spazio-1 progettazione progettazione 1900 milo giardini spa produzione produzione 1800
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.
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.
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) impiegato progetto funzione rossi spazio-1 produzione giordano spazio-2 progettazione neri spazio-3 marketing franco spazio-1 produzione franco giardini produzione barbareschi spazio-2 progettazione milo spazio-1 progettazione milo giardini produzione funzione stip. produzione 1800 progettazione 1900 marketing 2000 spa E possibile applicare il join naturale perché gli attributi hanno lo stesso nome. impiegato progetto funzione stip. rossi spazio-1 produzione 1800 ndio giordano spazio-2 progettazione 1900 neri spazio-3 marketing 2000 franco spazio-1 produzione 1800 franco giardini produzione 1800 barbareschi spazio-2 progettazione 1900 milo spazio-1 progettazione 1900 milo giardini produzione 1800 spa
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.
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 R 2, gli attributi di R 2 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) R 2. Una terza operazione, join esterna totale (Full Outer Join), mantiene tutte le tuple di entrambe le relazioni.
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 Un esempio di query rossi 814 giordano 978 neri 312 franco 223 barbareschi 370 milo 899 progetto descrizione progetto spazio-1 realizzazione componenti per la stazione spaziale spazio-2 progettazione componenti per la stazione spazio-3 spaziale analisi marketing giardini spa realizzazione zappe per giardini funzione stip. produzione 1800 progettazione 1900 marketing 2000 impiegato progetto funzione rossi spazio-1 produzione giordano spazio-2 progettazione neri spazio-3 marketing franco spazio-1 produzione franco giardini produzione barbareschi spazio-2 progettazione milo spazio-1 progettazione milo giardini produzione spa
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 impiegato progetto funzione telefono rossi spazio-1 produzione 814 giordano spazio-2 progettazione 978 neri spazio-3 marketing 312 franco spazio-1 produzione 223 franco giardini produzione 223 barbareschi spazio-2 progettazione 370 milo spazio-1 progettazione 899 milo giardini spa produzione 899 impiegato progetto funzione telefono rossi spazio-1 produzione 814 franco spazio-1 produzione 223 milo spazio-1 progettazione 899 impiegato telefono rossi 814 franco 223 milo 899
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.
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.
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).