320 likes | 442 Views
Interrogazione di una base di dati relazionale. Algebra relazionale. Algebra relazionale.
E N D
Interrogazione di una base di dati relazionale Algebra relazionale
Algebra relazionale Linguaggio formale per interrogare una base di dati relazionale: consiste di un insieme di operatori che possono essere applicati a una (operatori unari) o due (operatori binari) istanze di relazione e forniscono un’istanza di relazione Linguaggio procedurale: l’interrogazione consiste in un’espressione in cui compaiono operatori dell’algebra e istanze di relazioni della base di dati
Proiezione • Consente di effettuare un “taglio verticale” su una relazione, cioè di selezionare solo alcune colonne (attributi) • Si denota con il simbolo : A1,A2,…,Ak(r) seleziona le colonne di r che corrispondono agli attributi A1,A2,…,Ak
Proiezione Query: Nomi dei clienti Nome(Cliente)
Proiezione Query: Nomi e codici dei clienti Nome,CodC(Cliente)
Selezione • Consente di effettuare un “taglio orizzontale” su una relazione, cioè di selezionare solo le righe (tuple) che soddisfano una data condizione • Si denota con il simbolo : C(r) seleziona le tuple di r che soddisfano la condizione C
Selezione La condizione di selezione è un’espressione booleana (operatori , e ) in cui i termini semplici sono del Tipo: AB oppure A’a’ dove: • è un operatore di confronto (,,,,) • A e B sono due attributi con lo stesso dominio (dom(A)=dom(B)) • a è un elemento di dom(A) (adom(A))
Selezione Query: Dati dei clienti che risiedono a Roma Comune=‘Roma’(Cliente)
Selezione Query: Dati dei clienti che si chiamano Rossi e risiedono a Roma Comune=‘Roma’Nome=‘Rossi’(Cliente)
Prodotto cartesiano • Consente di costruire una relazione contenente tutte le tuple che si ottengono concatenando una tupla del primo operando con una tupla del secondo operando • Si denota con il simbolo x r1xr2
Unione • Consente di costruire una relazione contenente tutte le tuple che appartengono ad almeno uno dei due operandi • Si denota con il simbolo r1 r2 r1 r2
Differenza • Consente di costruire una relazione contenente tutte le tuple che appartengono al primo operando e non appartengono al secondo operando • Si denota con il simbolo r1 r2 r1 r2
Intersezione • Consente di costruire una relazione contenente tutte le tuple che appartengono ad entrambi gli operandi • Si denota con il simbolo r1 r2= (r1 (r1 r2 ))
-join • Consente di selezionare le tuple del prodotto cartesiano dei due operandi che soddisfano una condizione del Tipo AB dove • è un operatore di confronto (,,,,), • A è un attributo dello schema del primo operando, • B è un attributo dello schema del secondo operando e • dom(A)=dom(B) • r1 r2 = AB(r1 xr2 ) AB
Join naturale • Consente di selezionare le tuple del prodotto cartesiano dei due operandi che soddisfano la condizione: R1.A1= R2.A1 R1.A2= R2.A2 … R1.Ak= R2.Ak (dove R1 ed R2 sono i nomi delle relazioni operando e A1,,A2,…,Ak sono gli attributi comuni delle relazioni operando) eliminando le ripetizioni degli attributi • r1 r2 = XY(C(r1 xr2)) dove: C: R1.A1= R2.A1 … R1.Ak= R2.Ak X è l’insieme di attributi di r1 Y è l’insieme di attributi di r2 che non sono attributi dir1
Join naturale Query: Dati dei clienti e dei loro ordini ClienteOrdine
Esempio 1 Query : Nomi dei clienti che hanno ordinato più di 100 pezzi per almeno un articolo NomeN-pezzi>100Cliente Ordine
Esempio 1 Cliente Ordine
Esempio 1 N-pezzi>100Cliente Ordine
Esempio 1 NomeN-pezzi>100Cliente Ordine
Esempio 2 Nome e Comune dei clienti che hanno ordinato più di 100 pezzi per almeno un articolo con prezzo superiore a 2 Nome,ComuneN-pezzi>100Prezzo>2(Cliente Ordine Articolo)
Esempio 2 (Cliente Ordine Articolo
Esempio 2 N-pezzi>100Prezzo>2(Cliente Ordine Articolo)
Esempio 2 Nome,ComuneN-pezzi>100Prezzo>2(Cliente Ordine Articolo)
Esempio 2 Nome e Comune dei clienti che hanno ordinato più di 100 pezzi per almeno un articolo con prezzo superiore a 2 Nome,Comune ((Cliente N-pezzi>100(Ordine)) Prezzo>2 (CodA,Prezzo(Articolo)))
Esempio 2 Nome,Comune ((Cliente N-pezzi>100(Ordine)) Prezzo>2 (CodA,Prezzo(Articolo))) N-pezzi>100(Ordine)
Esempio 2 Nome,Comune ((Cliente N-pezzi>100(Ordine)) Prezzo>2 (CodA,Prezzo(Articolo))) Cliente N-pezzi>100(Ordine)
Esempio 2 Nome,Comune ((Cliente N-pezzi>100(Ordine)) Prezzo>2 (CodA,Prezzo(Articolo))) CodA,Prezzo(Articolo)
Esempio 2 Nome,Comune ((Cliente N-pezzi>100(Ordine)) Prezzo>2 (CodA,Prezzo(Articolo))) Prezzo>2 (CodA,Prezzo(Articolo))
Esempio 2 Nome,Comune ((Cliente N-pezzi>100(Ordine)) Prezzo>2 (CodA,Prezzo(Articolo))) (Cliente N-pezzi>100(Ordine)) Prezzo>2 (CodA,Prezzo(Articolo))
Esempio 2 Nome,Comune ((Cliente N-pezzi>100(Ordine)) Prezzo>2(CodA,Prezzo(Articolo)))