Interrogazione di una base di dati 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 unistanza di relazione Linguaggio procedurale: linterrogazione consiste in unespressione in cui compaiono operatori dellalgebra 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 ClienteNomeCodCComune RossiC1Roma RossiC2Milano BianchiC3Roma VerdiC4Roma Rossi Bianchi Verdi Query: Nomi dei clienti Nome (Cliente)
Proiezione ClienteNomeCodCComune RossiC1Roma RossiC2Milano BianchiC3Roma VerdiC4Roma Query: Nomi e codici dei clienti Nome,CodC (Cliente) RossiC1 RossiC2 BianchiC3 VerdiC4
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 è unespressione booleana (operatori, e ) in cui i termini semplici sono del Tipo: A B 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) (a dom(A))
Selezione ClienteNomeCodCComune RossiC1Roma RossiC2Milano BianchiC3Roma VerdiC4Roma Query: Dati dei clienti che risiedono a Roma Comune=Roma (Cliente) RossiC1Roma BianchiC3Roma VerdiC4Roma
Selezione ClienteNomeCodCComune RossiC1Roma RossiC2Milano BianchiC3Roma VerdiC4Roma Query: Dati dei clienti che si chiamano Rossi e risiedono a Roma Comune=Roma Nome=Rossi (Cliente) RossiC1Roma
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 r1xr2r1xr2
Unione Consente di costruire una relazione contenente tutte le tuple che appartengono ad almeno uno dei due operandi Si denota con il simbolo r 1 r 2 r1r1 r2r2
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 r 1 r 2 r1r1 r2r2
Intersezione Consente di costruire una relazione contenente tutte le tuple che appartengono ad entrambi gli operandi Si denota con il simbolo r 1 r 2 = (r 1 (r 1 r 2 ))
-join Consente di selezionare le tuple del prodotto cartesiano dei due operandi che soddisfano una condizione del Tipo A B 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) r 1 r 2 = A B (r 1 x r 2 ) A B
Join naturale Consente di selezionare le tuple del prodotto cartesiano dei due operandi che soddisfano la condizione: R 1.A 1 = R 2.A 1 R 1.A 2 = R 2.A 2 … R 1.A k = R 2.A k (dove R 1 ed R 2 sono i nomi delle relazioni operando e A 1,, A 2,…, A k sono gli attributi comuni delle relazioni operando) eliminando le ripetizioni degli attributi r 1 r 2 = XY ( C (r 1 x r 2 )) dove: C: R 1.A 1 = R 2.A 1 … R 1.A k = R 2.A k X è linsieme di attributi di r 1 Y è linsieme di attributi di r 2 che non sono attributi di r 1
Join naturale ClienteNomeCodCComune RossiC1Roma RossiC2Milano BianchiC3Roma VerdiC4Roma OrdineCodCCodAN-pezzi C1A1100 C2A2200 C3A2150 C4A3200 C1A2200 C1A3100 Query: Dati dei clienti e dei loro ordini Cliente Ordine
NomeCodCComuneCodAN-pezzi RossiC1RomaA1100 RossiC1RomaA2200 RossiC1RomaA3100 RossiC2MilanoA2200 BianchiC3RomaA2150 VerdiC4RomaA3200
Esempio 1 ClienteNomeCodCComune RossiC1Roma RossiC2Milano BianchiC3Roma VerdiC4Roma OrdineCodCCodAN-pezzi C1A1100 C2A2200 C3A2150 C4A3200 C1A2200 C1A3100 Query : Nomi dei clienti che hanno ordinato più di 100 pezzi per almeno un articolo Nome N-pezzi>100 Cliente Ordine
Esempio 1 Cliente Ordine NomeCodCComuneCodAN-pezzi RossiC1RomaA1100 RossiC1RomaA2200 RossiC1RomaA3100 RossiC2MilanoA2200 BianchiC3RomaA2150 VerdiC4RomaA3200
Esempio 1 N-pezzi>100 Cliente Ordine NomeCodCComuneCodAN-pezzi RossiC1RomaA2200 RossiC2MilanoA2200 BianchiC3RomaA2150 VerdiC4RomaA3200
Esempio 1 Nome N-pezzi>100 Cliente Ordine Nome Rossi Bianchi Verdi
Esempio 2 ClienteNomeCodCComune RossiC1Roma RossiC2Milano BianchiC3Roma VerdiC4Roma OrdineCodCCodAN-pezzi C1A1100 C2A2200 C3A2150 C4A3200 C1A2200 C1A3100 ArticoloCodATipoPrezzo A1Piatto3 A2Bicchiere2 A3Tazza4 Nome e Comune dei clienti che hanno ordinato più di 100 pezzi per almeno un articolo con prezzo superiore a 2 Nome,Comune N-pezzi>100 Prezzo>2 (Cliente Ordine Articolo)
Esempio 2 (Cliente Ordine Articolo NomeCodCComuneCodAN-pezziTipoPrezzo RossiC1RomaA1100Piatto3 RossiC1RomaA2200Bicchiere2 RossiC1RomaA3100Tazza4 RossiC2MilanoA2200Bicchiere2 BianchiC3RomaA2150Bicchiere2 VerdiC4RomaA3200Tazza4
Esempio 2 NomeCodCComuneCodAN-pezziTipoPrezzo VerdiC4RomaA3200Tazza4 N-pezzi>100 Prezzo>2 (Cliente Ordine Articolo)
Esempio 2 NomeComune VerdiRoma Nome,Comune N-pezzi>100 Prezzo>2 (Cliente Ordine Articolo)
Esempio 2 ClienteNomeCodCComune RossiC1Roma RossiC2Milano BianchiC3Roma VerdiC4Roma OrdineCodCCodAN-pezzi C1A1100 C2A2200 C3A2150 C4A3200 C1A2200 C1A3100 ArticoloCodATipoPrezzo A1Piatto3 A2Bicchiere2 A3Tazza4 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 CodCCodAN-pezzi C2A2200 C3A2150 C4A3200 C1A2200 N-pezzi>100 (Ordine) Nome,Comune ((Cliente N-pezzi>100 (Ordine)) Prezzo>2 ( CodA,Prezzo (Articolo)))
Esempio 2 Cliente N-pezzi>100 (Ordine) NomeCodCComuneCodAN-pezzi RossiC1RomaA2200 RossiC2MilanoA2200 BianchiC3RomaA2150 VerdiC4RomaA3200 Nome,Comune ((Cliente N-pezzi>100 (Ordine)) Prezzo>2 ( CodA,Prezzo (Articolo)))
Esempio 2 CodAPrezzo A13 A22 A34 CodA,Prezzo (Articolo) Nome,Comune ((Cliente N-pezzi>100 (Ordine)) Prezzo>2 ( CodA,Prezzo (Articolo)))
Esempio 2 CodAPrezzo A13 A34 Prezzo>2 ( CodA,Prezzo (Articolo)) Nome,Comune ((Cliente N-pezzi>100 (Ordine)) Prezzo>2 ( CodA,Prezzo (Articolo)))
Esempio 2 NomeCodCComuneCodAN-pezziPrezzo VerdiC4RomaA32004 Nome,Comune ((Cliente N-pezzi>100 (Ordine)) Prezzo>2 ( CodA,Prezzo (Articolo))) (Cliente N-pezzi>100 (Ordine)) Prezzo>2 ( CodA,Prezzo (Articolo))
Esempio 2 NomeComune VerdiRoma Nome,Comune ((Cliente N-pezzi>100 (Ordine)) Prezzo>2 ( CodA,Prezzo (Articolo)))