Operazioni Relazionali Operazioni relazionali Le operazioni relazionali consentono di interrogare una basi di dati relazionale, per ottenere le informazioni desiderate, estraendo da una tabella una sottotabella o combinando tra loro due o più tabelle (Agiscono su una relazione per ottenere una nuova relazione). Nel tempo sono stati proposti diversi linguaggi per l’interrogazione delle basi di dati relazionali, la maggior parte di essi utilizza un approccio basato sull’algebra relazionale. In questo approccio il risultato di un’interrogazione (o query) è una relazione. Per ottenere tale relazione si formula un’interrogazione, utilizzando alcuni operatori di algebra relazionale. Tali operatori vengono composti tra loro e applicati alle relazioni della base di dati. Selezione La selezione genera una nuova relazione costituita solo dalle n-uple della relazione di partenza che soddisfano una determinata condizione; vengono cioè selezionate le righe con i valori degli attributi corrispondenti alla condizione prefissata. La relazione ottenuta possiede tutte le colonne della relazione di partenza e quindi ha lo stesso grado; la cardinalità della nuova relazione può essere minore o uguale alla tabella di partenza (solitamente è minore). Selezione: esempio 1 Clienti IDCliente Nome Cognome Provincia PIva 1 Mario Bianchi Mi 04357839912 2 Carlo Rossi Ba 04687990657 3 Paolo Neri Ca 06443652006 4 Anna Verdi Mi 05567389432 5 Mario Verdi Ca 03568168943 6 Maria Rossi Mi 01528120155 7 Carlo Bianchi Pa 01572800164 Se si vuole l'elenco dei clienti della provincia di Milano, si effettua sulla relazione Clienti una selezione per Provincia =“MI” estraendo dalla tabella tutte le righe che hanno quel valore per l'attributo provincia, ottenendo così una nuova tabella. Selezione: esempio 1 Clienti IDCliente Nome Cognome Provincia PIva 1 Mario Bianchi Mi 04357839912 2 Carlo Rossi Ba 04687990657 3 Palo Neri Ca 06443652006 4 Anna Verdi Mi 05567389432 5 Mario Verdi Ca 03568168943 6 Maria Rossi Mi 01528120155 7 Carlo Bianchi Pa 01572800164 Selezione: esempio 1 Utilizzando un linguaggio di pseudocodifica, l’operazione di selezione viene indicata nel seguente modo: σ Provincia = “Mi” Clienti IDCliente Nome Cognome Provincia PIva 1 Mario Bianchi Mi 04357839912 4 Anna Verdi Mi 05567389432 6 Maria Rossi Mi 01528120155 Selezione: esercizio Data la seguente relazione: Eseguire le seguenti interrogazioni: 1. Quali sono gli impiegati che guadagnano più di 50 euro 2. Quali sono gli impiegati che guadagnano più di 50 euro e lavorano a Milano Selezione: soluzione 1 Selezione: soluzione 2 Proiezione La proiezione genera una nuova relazione estraendo dalla relazione iniziale solo alcune colonne corrispondenti agli attributi prefissati. La relazione risultante ha grado minore o uguale al grado della relazione di partenza; la cardinalità è minore o uguale a quella di partenza. Proiezione: esempio Clienti IDCliente Nome Cognome Provincia PIva 1 Mario Bianchi Mi 04357839912 2 Carlo Rossi Ba 04687990657 3 Paolo Neri Ca 06443652006 4 Anna Verdi Mi 05567389432 5 Mario Verdi Ca 03568168943 6 Maria Rossi Mi 01528120155 7 Carlo Bianchi Pa 01572800164 Se si vuole l'elenco dei nomi e cognomi dei clienti, occorre applicare alla relazione Clienti l’operazione di proiezione secondo gli attributi Nome e Cognome Proiezione: esempio Π Nome, Cognome Clienti Nome Cognome Mario Bianchi Carlo Rossi Paolo Neri Anna Verdi Mario Verdi Maria Rossi Carlo Bianchi Proiezione: esercizio Eseguire le seguenti interrogazioni: 1. Matricola e Cognome di tutti gli impiegati; 2. Cognome e Filiale di tutti gli impiegati. Proiezione:soluzione 1 Proiezione:soluzione 2 Combinazioni Combinando selezioni e proiezioni possiamo estrarre interessanti informazioni dalle relazioni. Esempio: Giunzione La congiunzione (join) serve a combinare due relazioni aventi uno o più attributi in comune, generando una nuova relazione contenente le righe della prima e della seconda tabella, che possono essere combinate secondo i valori uguali dell’attributo comune. A B B C A B C a1 b1 b1 c1 a1 b1 c1 a2 b2 b2 c2 a2 b2 c2 a3 b3 b3 c3 a3 b3 c3 a4 b3 b4 c4 a4 b3 c3 Il grado della relazione generata è uguale a N1+N2–1, dove N1 e N2 sono i gradi delle relazioni di partenza; la cardinalità non è prevedibile a priori. Giunzione: esempio ∆ ∆ Impiegati.Reparto Reparti.Codice Combinazioni di operazioni Gli operatori possono essere applicati alle tabelle anche in successione, combinandoli tra loro in vario modo. Vengono così effettuate interrogazioni sulle relazioni ottenute come risultato di un’interrogazione precedente. Esempio: Impiegato ( Capo = “Bruni” ( Impiegati.Reparto Reparti.Codice ) )