• Non ci sono risultati.

1 Selezione Selezione, sintassi e semantica Selezione e Proiezione

N/A
N/A
Protected

Academic year: 2023

Condividi "1 Selezione Selezione, sintassi e semantica Selezione e Proiezione"

Copied!
6
0
0

Testo completo

(1)

Selezione e Proiezione

Le operazioni di selezione e di proiezione si applicano ad una relazione e ne restituiscono una porzione.

Possono essere considerate ortogonali o complementari, in quanto una opera sulle righe e l’altra sulle colonne.

La selezione produce un insieme di tuple, definite su tutti gli attributi della relazione.

La proiezione produce un risultato definito su un insieme limitato di attributi, cui contribuiscono tutte le tuple.

selezione

proiezione

La selezione produce una nuova relazione definita sugli stessi attributi della relazione cui è applicata, contenente solamente le tuple di quest’ultima che soddisfano una specifica condizione di selezione.

Si indica con F( r ) o SELF( r ) dove:

F è una condizione da verificare

r è la relazione a cui la selezione è applicata Quindi F(r) produce una relazione, sullo stesso schema di r, contenente tutte le tuple per le quali F è vera.

Selezione

• sintassi

SELCondizione(Operando) Condizione: espressione booleana (come quelle dei vincoli di tupla)

• semantica

il risultato contiene le tuple dell'operando che soddisfano la condizione

Selezione, sintassi e semantica

(2)

La condizione di selezione F è una formula proposizionale su X, cioè una formula ottenuta combinando con i simboli  (and)  (or)  (not) espressioni del tipo A  B o A  c

• è un operatore di confronto (, , , , )

•A e B sono attributi di X su cui il confronto abbia senso

c è una costante tale che il confronto con A sia definito E’ definito un valore di verità di F su una tupla t:

•A B è vera se e solo se t[A]  t[B] è vero

•A c è vera se t[A]  c è vera

•F1 F2, F1 F2, F hanno l’usuale significato

Selezione

Impiegati

Cognome Filiale Stipendio Matricola

Neri Milano 64 5998

Rossi Roma 55

7309

Neri Napoli 64 5698

Milano Milano 44 9553

Cognome Filiale Stipendio Matricola

Neri Milano 64 5998

Rossi Roma 55

7309

Neri Napoli 64 5698

Milano Milano 44 9553

Impiegati (che guadagnano più di 50)

Milano Milano 44

9553 Neri Napoli 64

5698

SELStipendio > 50(Impiegati)

Cognome Filiale Età Matricola

Neri Milano 45 5998

Rossi Roma 32

7309

Bruni Milano NULL 9553

Impiegati

SELEtà>30 (Persone)  SELEtà30 (Persone)  Persone Perché? Perché le selezioni vengono valutate separatamente!

Ma anche

SELEtà>30  Età30 (Persone)  Persone Perché? Perché anche le condizioni atomiche vengono valutate separatamente!

Selezione con valori nulli

Per riferirsi ai valori nulli esistono forme apposite di condizioni:

x IS NULL (vera se, per una tupla t, t[x] = NULL) x IS NOT NULL (vera se, per una tupla t, t[x] <> NULL)

SELEtà>30 (Persone)  SELEtà30 (Persone)  SELEtà IS NULL (Persone)

=

SELEtà>30  Età30  Età IS NULL (Persone)

= Persone

Selezione con valori nulli

(3)

Dati una relazione r(X) e un sottoinsieme Y di X, la proiezione di r su Y si indica con

Y( r ) o PROJY( r )

ed è l’insieme di tuple su Y ottenute dalle tuple di r considerando solo i valori su Y.

Y( r ) = { t[Y] | t r }

Una proiezione ha un numero di tuple minore o uguale rispetto alla relazione r cui è applicata. Il numero di tuple è uguale se e solo se Y è superchiave per r.

Proiezione

Operatore monadico Produce un risultato che

• possiede parte degli attributi dell'operando

• contiene tuple cui contribuiscono tutte le tuple dell'operando

sintassi

PROJListaAttributi(Operando)

• semantica

il risultato contiene le tuple che si ottengono restringendo tutte le tuple dell'operando agli attributi nella lista (ed eliminando gli eventuali duplicati)

Proiezione

Cognome Filiale Stipendio Matricola

Neri Milano 64 5998

Neri Napoli 55 7309

Rossi Roma 64

5698

Rossi Roma 44

9553

• visualizzare matricola e cognome di tutti gli impiegati

PROJ Matricola, Cognome(Impiegati)

Cognome Filiale Stipendio Matricola

Neri Milano 64 5998

Neri Napoli 55 7309

Rossi Roma 64

5698

Rossi Roma 44

9553

PROJ Cognome, Filiale(Impiegati)

• visualizzare cognome e filiale di tutti gli impiegati

Combinando selezione e proiezione, si possono estrarre informazioni da una sola relazione. Non si possono però correlare informazioni presenti in relazioni diverse

Il join è l'operatore più interessante (potente) dell'algebra relazionale in quanto permette di correlare dati presenti in relazioni diverse

Join

(4)

E’ l’operatore più caratteristico dell’algebra relazionale, che evidenzia la proprietà del modello relazionale di essere basato su valori. Non ha un corrispettivo nella teoria degli insiemi.

L’operatore di join (naturale) correla dati contenuti in relazioni diverse.

Il suo risultato è una relazione definita sull’unione degli insiemi di attributi degli operandi, le cui tuple sono ottenute combinando le tuple degli operandi che hanno valori uguali su attributi comuni (con lo stesso nome).

Join

Il join naturale r1 r2di r1(X1) e r2(X2) è una relazione definita su X1X2 (che si può scrivere X1X2)

r1  r2 = { t su X1X2 | t[X1]  r1 e t[X2]  r2 } Il grado della relazione ottenuta è minore o uguale alla somma dei gradi delle due relazioni in quanto gli attributi omonimi compaiono una sola volta.

Se X1 X2è vuoto il join naturale equivale al prodotto cartesiano fra le relazioni.

Se X1= X2il join naturale equivale all’intersezione fra le relazioni

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 la corrispondenza e non contribuiscono al risultato, le tuple si dicono dangling.

Join

Due casi limite:

join vuoto, nessuna tupla degli operandi è combinabile

•ciascuna delle tuple di un operando è combinabile con tutte le tuple dell’altro. In questo caso il risultato è pari al prodotto cartesiano degli operandi.

Il secondo caso richiede:

•che esistano attributi comuni che assumono lo stesso valore per ogni tupla di entrambi gli operandi (che, quindi, non contengono informazione significativa)

oppure

•che non vi siano attributi comuni.

Join

(5)

A Mori

B Bruni

Reparto Capo

Rossi A

Neri B

Bianchi B Impiegato Reparto

Rossi A Mori

Neri B Bruni

Impiegato Reparto Capo

Bianchi B Bruni

Rossi A

Neri B

Bianchi B

Rossi A

Neri B

Bianchi B

A Mori

B Bruni

A Mori

B Bruni

B Bruni

B Bruni

• ogni tupla contribuisce al risultato: il join è completo

Neri B Mori

Impiegato Reparto Capo

Bianchi B Mori

Impiegato Reparto

Rossi A

Neri B

Bianchi B

Reparto Capo

B Mori

C Bruni

A

C

Un Join non completo

Impiegato Reparto

Rossi A

Neri B

Bianchi B

Reparto Capo

D Mori

C Bruni

Impiegato Reparto Capo

Un Join vuoto

•r1  r2 contiene un numero di tuple compreso fra zero e il prodotto di |r1| e |r2|

•Se r1 r2è completo allora contiene un numero di tuple pari almeno al massimo fra |r1| e |r2|

•Se X1X2 contiene una chiave per r2, allora r1 (X1)  r2(X2) contiene al più |r1| tuple.

Join: proprietà

(6)

•se il join coinvolge una chiave di r2e un vincolo di integrità referenziale, allora il numero di tuple è pari a |r1|

•r1 r2 = r2 r1 il join è commutativo

•(r1 r2)  r3 = r1 (r2  r3) il join è associativo Quindi sequenze di join possono essere scritte senza parentesi

Join: proprietà

Riferimenti

Documenti correlati

che, in esecuzione della determinazione dirigenziale n. 16 novembre 2007, n.26 norme regionali per la tutela della minoranza linguistica slovena, ed in particolare l’articolo

Il compenso forfettario previsto è di euro 9.457,75 comprensivo delle ritenute fiscali e previdenziali di legge (esclusi gli oneri previdenziali a carico

La domanda di ammissione alla selezione, redatta in lingua italiana e in carta semplice secondo lo schema allegato al presente avviso di selezione, sottoscritta

Inviata alla casella di posta elettronica certificata (PEC) del Comune di Trieste: [email protected], specificando nell’oggetto “domanda per la selezione

La domanda di ammissione alla selezione, redatta in lingua italiana e in carta semplice secondo lo schema allegato al presente avviso di

La domanda di ammissione alla selezione, redatta in lingua italiana e in carta semplice secondo lo schema allegato al presente avviso di selezione, sottoscritta con

La domanda di ammissione alla selezione, redatta in lingua italiana e in carta semplice secondo lo schema allegato al presente avviso di

• Continuate la narrazione, spiegando che, giunta l’epoca della riproduzione, da ogni coppia di farfalle sopravvissute, nasceranno due nuove farfalle: per ogni due farfalle