Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la...

22
Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere la soluzione. Operatori: unione intersezione differenza derivati dalla teoria degli insiemi ridenominazione selezione proiezione specifici dell’algebra relazionale join può assumere diverse forme (naturale, theta-join, prodotto cartesiano)

Transcript of Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la...

Page 1: Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.

Algebra Relazionale

Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere la soluzione.

Operatori:• unione intersezione differenza derivati dalla teoria degli insiemi• ridenominazione selezione proiezione specifici dell’algebra relazionale• join può assumere diverse forme (naturale, theta-join, prodotto cartesiano)

Page 2: Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.

Operatori derivati dagli insiemi

Le relazioni sono insiemi e quindi è naturale estendere ad esse le operazioni tipiche della teoria degli insiemi.

Il risultato di un’operazione fra relazioni DEVE essere una relazione. Le relazioni sono insiemi di tuple omogenee e quindi ha senso definire ed applicare tali operatori solo a tuple definite sugli stessi attributi.

Es. l’unione fra due relazioni su tuple non omogenee non è una relazione.

Page 3: Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.

Operatori derivati dagli insiemi

• UnioneL’unione fra due relazioni r1 e r2 definite sullo stesso insieme X si indica con r1 r2 ed è una relazione su X contenente le tuple appartenenti a r1, a r2 o ad entrambe.

• IntersezioneL’intersezione fra due relazioni r1 e r2 definite sullo stesso insieme X si indica con r1 r2 ed è una relazione su X contenente le tuple appartenenti sia a r1 che a r2.

• DifferenzaLa differenza fra due relazioni r1 e r2 definite sullo stesso insieme X si indica con r1 - r2 ed è una relazione su X contenente le tuple appartenenti a r1 ma non a r2.

Page 4: Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.

Laureati

Matricola

74329824

Età

5445

Nome

NeriVerdi

7274 42Rossi

Quadri

Matricola

74329824

9297Età

5445

33Nome

NeriVerdi

Neri

Laureati Quadri

Matricola EtàNome

7432 54Neri9824 45Verdi9297 33Neri

7274 42Rossi7432 54Neri9824 45Verdi

7274 42Rossi7432 54Neri9824 45Verdi9297 33Neri

7432 54Neri9824 45Verdi9297 33Neri

7274 42Rossi

Unione

Page 5: Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.

Laureati

Matricola

74329824

Età

5445

Nome

NeriVerdi

7274 42Rossi

Quadri

Matricola

74329824

9297Età

5445

33Nome

NeriVerdi

Neri

Laureati Quadri

Matricola EtàNome7432 54Neri9824 45Verdi

7432 54Neri9824 45Verdi

7432 54Neri9824 45Verdi

7432 54Neri9824 45Verdi

Intersezione

Page 6: Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.

Laureati

Matricola EtàNome

7432 54Neri9824 45Verdi

7274 42Rossi

Quadri

Matricola

74329824

9297Età

5445

33Nome

NeriVerdi

Neri

Laureati – Quadri

Matricola EtàNome

7432 54Neri9824 45Verdi

7274 42Rossi7432 54Neri9824 45Verdi

7274 42Rossi

Differenza

Page 7: Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.

Ridenominazione

In algebra relazionale si ha corrispondenza fra attributi mediante il nome. La ridenominazione consente di modificare il nome di un attributo per associarlo ad un altro in una operazione algebrica. Ad es. rende compatibili due attributi con nome diverso quando ha senso fare l’unione fra le relazioni cui appartengono.

Si indica con nuovonome vecchionome(Relazione)

Es. da Paternità(Padre,Figlio) e Maternità(Madre,Figlio)

è possibile ottenere

Genitore Padre(Paternità) Genitore Madre (Maternità)

Page 8: Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.

RENGenitore Padre (Paternità)

RENGenitore Madre (Maternità)

Genitore Figlio

Adamo CainoAbramo Isacco

Adamo Abele

Genitore Figlio

Eva SetSara Isacco

Eva Abele

Genitore Figlio

Adamo CainoAbramo Isacco

Adamo Abele

Eva SetSara Isacco

Eva Abele

RENGenitore Padre (Paternità)

RENGenitore Madre (Maternità)

Page 9: Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.

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.

Page 10: Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.

selezione

proiezione

Page 11: Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.

Selezione

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 verificarer è 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.

Page 12: Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.

Selezione, sintassi e semantica

• sintassi

SEL Condizione (Operando)

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

• semantica

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

Page 13: Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.

SelezioneLa 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

Page 14: Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.

Impiegati Cognome Filiale StipendioMatricola

Neri Milano 645998Rossi Roma 557309

Neri Napoli 645698Milano Milano 449553

Cognome Filiale StipendioMatricola

Neri Milano 645998Rossi Roma 557309

Neri Napoli 645698Milano Milano 449553

Impiegati (che guadagnano piu’ di 50)

Milano Milano 449553 Neri Napoli 645698

SELStipendio > 50 (Impiegati)

Page 15: Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.

Selezione con valori nulli

Cognome Filiale EtàMatricola

Neri Milano 455998Rossi Roma 327309

Bruni Milano NULL9553

Impiegati

SEL Età>30 (Persone) SEL Età30 (Persone) Persone

• Perché? Perché le selezioni vengono valutate separatamente!

• Ma anche

• SEL Età>30 Età30 (Persone) Persone

• Perché? Perché anche le condizioni atomiche vengono valutate separatamente!

Page 16: Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.

Selezione con valori nulli

Per riferirsi ai valori nulli esistono forme apposite di condizioni:

IS NULLIS NOT NULL

SEL Età>30 (Persone) SEL Età30 (Persone) SEL Età IS NULL (Persone)

=SEL Età>30 Età30 Età IS NULL (Persone)

= Persone

Page 17: Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.

ProiezioneDati 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.

Page 18: Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.

Proiezione

• operatore monadico• produce un risultato che• possiede parte degli attributi dell'operando• contiene tuple cui contribuiscono tutte le tuple

dell'operando

• sintassiPROJ ListaAttributi (Operando)

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

Page 19: Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.

Cognome Filiale StipendioMatricola

Neri Milano 645998Neri Napoli 557309

Rossi Roma 645698Rossi Roma 449553

• visualizzare matricola e cognome di tutti gli impiegati

PROJ Matricola, Cognome (Impiegati)

Cognome Filiale StipendioMatricola

Neri Milano 645998Neri Napoli 557309

Rossi Roma 645698Rossi Roma 449553

PROJ Cognome, Filiale (Impiegati)

• visualizzare cognome e filiale di tutti gli impiegati

Page 20: Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.

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

Page 21: Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.

Join

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

Page 22: Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.

Join

Il join naturale r1 r2 di r1(X1) e r2(X2) è una relazione definita su X1X2 ( 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 al grado della 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 = X2 il join naturale equivale all’intersezione fra le relazioni