Interrogazione di una base di dati relazionale

Slides:



Advertisements
Presentazioni simili
DB -Algebra Relazionale
Advertisements

Algebra relazionale Presentazione 12.1
Interrogazione di una base di dati relazionale Algebra relazionale.
DB -Algebra Relazionale
Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.
ALGEBRA E CALCOLO RELAZIONALE
Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema.
Query languages per Basi di Dati Relazionali  Algebra Relazionale:  basato sulla teoria degli insiemi  procedurale  usato per l’implementazione di.
Join Se ciascuna tupla di ciascun operando contribuisce ad almeno una tupla del risultato il join si dice completo. Se per alcune tuple non è verificata.
Operazioni Relazionali
ClienteNomeCCittà RossiC1Roma RossiC2Milano BianchiC3Roma VerdiC4Roma ArticoloADenom.Prezzo A1Piatto3 A2Bicchiere2 A3Tazza4 OrdineCANpezzi C1A1100 C2A2200.
Basi di dati - Fondamenti
Il modello logico Il modello logico.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning
Progettazione di una base di dati relazionale
Rileaborato da M. Lenzerini - Basi di dati
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Le operazioni relazionali
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
rielaborato da Atzeni-etal., Basi di dati, Capitolo 4
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Interrogazione di una base di dati relazionale
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di Dati 1 in eLearning C
Le operazioni relazionali (continua)
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Progettazione di una base di dati relazionale
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
A. A – 2008 Basi di dati 1 Corso Prof
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
PRINCIPALI STRUTTURE DEI DATI
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Progettazione di una base di dati relazionale
Definizione e caratteristiche
Progettazione di una base di dati relazionale
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Corso di Basi di Dati Il Linguaggio SQL
La normalizzazione delle relazioni
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Interrogazione di una base di dati relazionale
Corso di Basi di Dati Il Linguaggio SQL
Corso di Basi di Dati Il Linguaggio SQL
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Normalizzazione di uno schema relazionale.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Il modello relazionale
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Progettazione logica: Il modello relazionale
Interrogazioni Nidificate
Algebra Booleana.
Modello Relazionale Proposto agli inizi degli anni ‘70 da Codd
Dipendenze funzionali
Join, una difficoltà Impiegato Reparto Rossi A Neri B Bianchi Reparto
Il modello relazionale
Selezione e Proiezione
Interrogazioni Le interrogazioni in SQL sono formulate in modo dichiarativo specificando cioè cosa si vuole ottenere e non come lo si vuole ottenere.
La programmazione strutturata
Docente: Sabato Bufano
Definizione e caratteristiche
Vincoli di Integrità Non tutte le combinazioni possibili di valori dei domini su cui è definita una relazione sono accettabili. Alcuni attributi possono.
Transcript della presentazione:

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) Cliente Nome C# Città Rossi C1 Roma C2 Milano Bianchi C3 Verdi C4 Query: Nomi dei clienti Rossi Bianchi Verdi Nome(Cliente)

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)

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: 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 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)

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)

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 )) r1 r2

-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 )

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

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

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

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

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

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

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

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)

(Cliente Ordine  Articolo Esempio 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

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

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

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)))

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)

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)

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)

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))

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))

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