Lezione DB1 n.3, 26-10-98 - dmi.unict.it · DB -Algebra Relazionale 30 Query (interrogazioni)...

Post on 18-Feb-2019

223 views 0 download

transcript

DB -Algebra Relazionale 1

ALGEBRA

RELAZIONALE

DB -Algebra Relazionale 2

ESEMPIO DI QUERY

NOME MATRICOL INDIRIZZO TELEFONO

Mario Rossi 123456 Via Etnea 1 222222

Ugo Bianchi 234567 Via Roma 2 333333

Teo Verdi 345678 Via Enna 3 444444

CORSO MATRICOLA VOTO

Programmazione 345678 27

Architetture 123456 30

Programmazione 234567 18

Matematica

Discreta

345678 22

Architettura 345678 30

CORSO PROFESSORE

Programmazione Ferro

Architetture Pappalardo

Matematica Discreta Lizzio

Quali Professori hanno

dato piu' di 24 a Teo

Verdi ed in quali corsi?

PROFESSORE CORSO

Programmazione Ferro

Architetture Pappalardo

DB -Algebra Relazionale 3

Algebra relazionale

Un set di operatori che:

Sono definiti sulle relazioni

Producono come risultato una relazione

Gli operatori possono essere combinati

per formare espressioni complesse

DB -Algebra Relazionale 4

Operatori dell’algebra relazionale

Gli operatori primitivi dell’Algebra Relazionale sono: Ridenominazione;

Unione;

Differenza;

Proiezione;

Restrizione (o Selezione);

Prodotto.

I simboli R,S,... denotano relazioni, A, B,…attributi e X,Y,…insiemi di attributi

DB -Algebra Relazionale 5

Ridenominazione

Operatore unario

Modifica il nome di un attributo senza cambiarne

il valore

DB -Algebra Relazionale 6

Esempio Ridenominazione

Corso Matricola Voto

Programmazione 123456 27

EINN 23456 28

Corso Codice Studente Voto

Programmazione 123456 27

EINN 23456 28

δMatricola → Codice Studente(Esami)

DB -Algebra Relazionale 7

Unione e Differenza

Le relazioni sono degli insiemi, quindi possiamo applicare gli operatori sugli insiemi

Il risultato dev’essere un set omogeneo di n-upleQuindi, applichiamo gli operatori sui set solo fra

relazioni con gli stessi attributi

Siano R ed S relazioni dello stesso tipo allora

}|{ StRttSR

}|{ StRttSR

DB -Algebra Relazionale 8

Esempio Unione

DB -Algebra Relazionale 9

Esempio Differenza

DB -Algebra Relazionale 10

Un esempio utile ma non fattibile

“Father” e “Mother” sono attributi con nomi

diversi ma entrambi sono “Genitori”

Soluzione: ridenominare gli attributi

DB -Algebra Relazionale 11

Ridenominazione e Unione

δFather→Parent(Paternity) δMother→Parent(Maternity)

DB -Algebra Relazionale 12

Proiezione

Produce risultati:

Su un sottoinsieme degli attributi dell’operando

Con valori da tutte le n-uple della relazione

La cardinalita’ di A1, A2,…, An (R) puo’ essere

minore di R nel caso di duplicati

DB -Algebra Relazionale 13

Esempio Proiezione

Proiezione

DB -Algebra Relazionale 14

Un’altro esempio di proiezione

Si riduce la cardinalita’ del risultato rispetto all’operando

DB -Algebra Relazionale 15

Selezione (Restrizione)

Produce risultati:

Con lo stesso schema dell’operando

Con un sottoinsieme delle n-uple dell’operando

Quelle che soddisfano la condizione specificata

DB -Algebra Relazionale 16

Esempio Selezione

Selezione

DB -Algebra Relazionale 17

Un altro esempio di Selezione

DB -Algebra Relazionale 18

Prodotto (Cartesiano)

Combinazione di tutti i campi e tutti i record delle relazioni che partecipano

DB -Algebra Relazionale 19

Esempio prodotto cartesiano

DB -Algebra Relazionale 20

Operatori Derivati

Sono operatori utili che si possono

esprimere in funzioni di quelli primitivi.

Intersezione: Siano R ed S dello stesso

tipo

Il risultato dev’essere un set omogeneo di n-upleQuindi, applichiamo gli operatori sui set solo fra

relazioni con gli stessi attributi

}|{ StRttSR

DB -Algebra Relazionale 21

Esempio Intersezione

DB -Algebra Relazionale 22

JOIN (Giunzione)

L’operatore piu’ importante dell’algebra

relazionale

Permette di combinare tuple da relazioni

diverse basandosi sui valori degli attributi

R F S

DB -Algebra Relazionale 23

JOIN incompleti

Nel caso in cui alcuni valori tra gli attributi

comuni non coincidono

Quindi, alcune n-uple non partecipano al JOIN

(dangling n-uple)

DB -Algebra Relazionale 24

JOIN vuoti, un caso estremo

Potrebbe anche succedere che nessuna

n-upla trovi il corrispettivo

DB -Algebra Relazionale 25

L’altro caso estremo del JOIN

Ogni n-upla di R1 si combina con ogni n-upla di R2

Cardinalita’ del risultato e’ il prodotto delle cardinalita’

DB -Algebra Relazionale 26

OUTER JOIN (Giunzione esterna)

Una variante del JOIN per mantenere nel

risultato le n-uple che non partecipano al JOIN

Gli attributi delle dangling n-uple vengono

riempiti con NULL

Tre varianti:

Left: solo dangling n-uple del primo operando

Right: solo dangling n-uple del secondo operando

Full: n-uple da entrambi gli operandi

DB -Algebra Relazionale 27

Esempio di OUTER JOIN

DB -Algebra Relazionale 28

Proprieta’ del JOIN

Il JOIN e’

Commutativo: R S = S R

Associativo: (R S) T = R (S T)

Quindi possiamo avere sequenze di JOIN

senza rischio di ambiguita’:

R S T …

DB -Algebra Relazionale 29

Esempio di JOIN multipli

DB -Algebra Relazionale 30

Query (interrogazioni)

L’algebra relazionale puo’ quindi essere

usata per interrogare una base di dati

Una query e’ una funzione da una istanza

di un database (insieme di relazioni) ad

una relazione

DB -Algebra Relazionale 31

Database di esercitazione

DB -Algebra Relazionale 32

Esercizio 1

Trovare numero, nome ed eta’ di tutti gli impiegati che guadagnano piu’ di 40 mila euro

DB -Algebra Relazionale 33

Esercizio 2

Trovare il codice dei responsabili degli impiegati che guadagnano piu’ di 40 mila euro

DB -Algebra Relazionale 34

Esercizio 3

Trovare nome e salario dei responsabili degli impiegati che guadagnano piu’ di 40 mila euro.

DB -Algebra Relazionale 35

Esercizio 4

Trovare gli impiegati che guadagnano piu’ dei loro responsabili e visualizzare numero, nome e salario sia dell’impiegato che del responsabile

DB -Algebra Relazionale 36

Esercizio 5

Trovare numero e nome dei responsabili i cui impiegati

guadagnano TUTTI piu’ di 40 mila euro