La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Interrogazione di una base di dati relazionale

Presentazioni simili


Presentazione sul tema: "Interrogazione di una base di dati relazionale"— Transcript della presentazione:

1 Interrogazione di una base di dati relazionale
Algebra relazionale

2 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

3 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

4 Proiezione Query: Nomi dei clienti Nome(Cliente) Cliente Nome C#
Città Rossi C1 Roma C2 Milano Bianchi C3 Verdi C4 Query: Nomi dei clienti Rossi Bianchi Verdi Nome(Cliente)

5 Proiezione Query: Nomi e codici dei clienti Nome,C#(Cliente) Cliente
Città Rossi C1 Roma C2 Milano Bianchi C3 Verdi C4 Query: Nomi e codici dei clienti Rossi C1 C2 Bianchi C3 Verdi C4 Nome,C#(Cliente)

6 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

7 Selezione La condizione di selezione è un’espressione 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))

8 Selezione Query: Dati dei clienti che risiedono a Roma
Cliente Nome C# Città Rossi C1 Roma C2 Milano Bianchi C3 Verdi C4 Query: Dati dei clienti che risiedono a Roma Rossi C1 Roma Bianchi C3 Verdi C4 Città=‘Roma’(Cliente)

9 Selezione Query: Dati dei clienti che si chiamano Rossi
Cliente Nome C# Città Rossi C1 Roma C2 Milano Bianchi C3 Verdi C4 Query: Dati dei clienti che si chiamano Rossi e risiedono a Roma Rossi C1 Roma Città=‘Roma’Nome=‘Rossi’(Cliente)

10 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

11 L’operazione di unione può essere applicata solo a operandi union compatibili cioè tali che:
hanno lo stesso numero di attributi gli attributi corrispondenti sono definiti sullo stesso dominio

12 Differenza (si applica a operandi union compatibili)
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

13 Intersezione (si applica a operandi union compatibili)
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 )) r1 r2

14 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

15 Query: Dati dei clienti e degli ordini
Prodotto cartesiano Ordine C# A# N-pezzi C1 A1 100 C2 A2 200 C3 150 C4 A3 Cliente Nome C# Città Rossi C1 Roma C2 Milano Bianchi C3 Verdi C4 Query: Dati dei clienti e degli ordini (Cliente  Ordine)

16 Nome C# Città A# N-pezzi Rossi C1 Roma A1 100 C2 A2 200 C3 150 C4 A3 Milano Bianchi Verdi

17 Query: Dati dei clienti e dei loro ordini
Cliente. C#=Ordine. C#(Cliente  Ordine) Nome C# Città A# N-pezzi Rossi C1 Roma A1 100 A2 200 A3 C2 Milano Bianchi C3 150 Verdi C4

18 Query: Dati dei clienti e dei loro ordini
Nome Cliente.C# Città A# N-pezzi(Cliente.C#=Ordine.C#(Cliente  Ordine)) Nome C# Città A# N-pezzi Rossi C1 Roma A1 100 A2 200 A3 C2 Milano Bianchi C3 150 Verdi C4

19 R1.A1= R2.A1  R1.A2= R2.A2 …  R1.Ak= R2.Ak
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 x r2 )) 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 di r1

20 Query: Dati dei clienti e dei loro ordini
Join naturale Ordine C# A# N-pezzi C1 A1 100 C2 A2 200 C3 150 C4 A3 Cliente Nome C# Città Rossi C1 Roma C2 Milano Bianchi C3 Verdi C4 Query: Dati dei clienti e dei loro ordini Cliente  Ordine

21 Nome C# Città A# N-pezzi Rossi C1 Roma A1 100 A2 200 A3 C2 Milano Bianchi C3 150 Verdi C4

22 Esempio 1 Query : Nomi dei clienti che hanno ordinato
più di 100 pezzi per almeno un articolo Ordine C# A# N-pezzi C1 A1 100 C2 A2 200 C3 150 C4 A3 Cliente Nome C# Città Rossi C1 Roma C2 Milano Bianchi C3 Verdi C4  NomeN-pezzi>100Cliente Ordine

23 Esempio 1 Cliente Ordine Nome C# Città A# N-pezzi Rossi C1 Roma A1
100 A2 200 A3 C2 Milano Bianchi C3 150 Verdi C4

24 N-pezzi>100Cliente Ordine
Esempio 1 N-pezzi>100Cliente Ordine Nome C# Città A# N-pezzi Rossi C1 Roma A2 200 C2 Milano Bianchi C3 150 Verdi C4 A3

25  NomeN-pezzi>100Cliente Ordine
Esempio 1  NomeN-pezzi>100Cliente Ordine Nome Rossi Bianchi Verdi

26 Esempio 2 Query : Nomi e città dei clienti che hanno ordinato più di 100 pezzi per almeno un articolo con prezzo superiore a 2 Cliente Nome C# Città Rossi C1 Roma C2 Milano Bianchi C3 Verdi C4 Ordine C# A# N-pezzi C1 A1 100 C2 A2 200 C3 150 C4 A3 Articolo A# Denom. Prezzo A1 Piatto 3 A2 Bicchiere 2 A3 Tazza 4  Nome,CittàN-pezzi>100Prezzo>2(Cliente Ordine  Articolo)

27 (Cliente Ordine  Articolo
Esempio 2  Nome,CittàN-pezzi>100Prezzo>2(Cliente Ordine  Articolo) Nome C# Città A# N-pezzi Denom. Prezzo Rossi C1 Roma A1 100 Piatto 3 A2 200 Bicchiere 2 A3 Tazza 4 C2 Milano Bianchi C3 150 Verdi C4 (Cliente Ordine  Articolo

28 N-pezzi>100Prezzo>2(Cliente Ordine  Articolo)
Esempio 2  Nome,CittàN-pezzi>100Prezzo>2(Cliente Ordine  Articolo) Nome C# Città A# N-pezzi Denom. Prezzo Verdi C4 Roma A3 200 Tazza 4 N-pezzi>100Prezzo>2(Cliente Ordine  Articolo)

29 Esempio 2  Nome,CittàN-pezzi>100Prezzo>2(Cliente  Ordine  Articolo) Nome Città Verdi Roma

30 Esempio 2 Query : Nomi e città dei clienti che hanno ordinato più di 100 pezzi per almeno un articolo con prezzo superiore a 2 Cliente Nome C# Città Rossi C1 Roma C2 Milano Bianchi C3 Verdi C4 Ordine C# A# N-pezzi C1 A1 100 C2 A2 200 C3 150 C4 A3 Articolo A# Denom. Prezzo A1 Piatto 3 A2 Bicchiere 2 A3 Tazza 4 Nome,Città ((Cliente  N-pezzi>100(Ordine))  Prezzo>2 (A#,Prezzo(Articolo)))

31 N-pezzi>100(Ordine)
Esempio 2 Nome,Città ((Cliente  N-pezzi>100(Ordine))  Prezzo>2 (A#,Prezzo(Articolo))) C# A# N-pezzi C2 A2 200 C3 150 C4 A3 C1 N-pezzi>100(Ordine)

32 Cliente  N-pezzi>100(Ordine)
Esempio 2 Nome,Città ((Cliente  N-pezzi>100(Ordine))  Prezzo>2 (A#,Prezzo(Articolo))) Nome C# Città A# N-pezzi Rossi C1 Roma A2 200 C2 Milano Bianchi C3 150 Verdi C4 A3 Cliente  N-pezzi>100(Ordine)

33 Esempio 2 A#,Prezzo(Articolo)
Nome,Città ((Cliente  N-pezzi>100(Ordine))  Prezzo>2 (A#,Prezzo(Articolo))) A# Prezzo A1 3 A2 2 A3 4 A#,Prezzo(Articolo)

34 Prezzo>2 (A#,Prezzo(Articolo))
Esempio 2 Nome,Città ((Cliente  N-pezzi>100(Ordine))  Prezzo>2 (A#,Prezzo(Articolo))) A# Prezzo A1 3 A3 4 Prezzo>2 (A#,Prezzo(Articolo))

35 Esempio 2 Nome,Città ((Cliente  N-pezzi>100(Ordine))  Prezzo>2 (A#,Prezzo(Articolo))) Nome C# Città A# N-pezzi Prezzo Verdi C4 Roma A3 200 4 (Cliente  N-pezzi>100(Ordine))  Prezzo>2 (A#,Prezzo(Articolo))

36 Esempio 2 Nome,Città ((Cliente  N-pezzi>100(Ordine))  Prezzo>2 (A#,Prezzo(Articolo))) Nome Città Verdi Roma

37 -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) r1  r2 = AB (r1 x r2 )


Scaricare ppt "Interrogazione di una base di dati relazionale"

Presentazioni simili


Annunci Google