590 likes | 1.44k Views
ALGEBRA RELAZIONALE. LINGUAGGI PER MODELLI RELAZIONALI . Algebrici: una query è definita da un’espressione algebrica sulle relazioni dello schema Logici: una query è definita da una formula della logica del primo ordine. ESEMPIO DI QUERY. Algebra relazionale. Un set di operatori che
E N D
ALGEBRA RELAZIONALE DB -Algebra Relazionale
LINGUAGGI PER MODELLI RELAZIONALI • Algebrici: una query è definita da un’espressione algebrica sulle relazioni dello schema • Logici: una query è definita da una formula della logica del primo ordine DB -Algebra Relazionale
ESEMPIO DI QUERY DB -Algebra Relazionale
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 • Esecuzione procedurale DB -Algebra Relazionale
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
Ridenominazione • Operatore unario • Modifica il nome di un attributo senza cambiarne il valore • Definizione: • Siano X gli attributi di R, A in X, B not in X . • Allora AB(R) è con attributi (X-{A}){B} • AB(R)={t | u R t[B] = u[A] t[C]=u[C] se C e’ diverso da B}. DB -Algebra Relazionale
Esempio Ridenominazione • Matricola Codice Studente(Esami) DB -Algebra Relazionale
Unione, Differenza e Intersezione • Le relazioni sono degli insiemi, quindi possiamo applicare gli operatori sugli insiemi • Il risultato dev’essere un set omogeneo di n-uple • Quindi, applichiamo gli operatori sui set solo fra relazioni con gli stessi attributi • Siano R ed S relazioni dello stesso tipo allora • RS = {t | t R t S} • R-S = {t | t R tS} • RS = {t | t R t S} DB -Algebra Relazionale
Esempio Unione DB -Algebra Relazionale
Esempio Intersezione DB -Algebra Relazionale
Esempio Differenza DB -Algebra Relazionale
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
Ridenominazione e Unione FatherParent(Paternity) MotherParent(Maternity) DB -Algebra Relazionale
Proiezione • Produce risultati: • Su un sottoinsieme degli attributi dell’operando • Con valori da tutte le n-uple della relazione • Definizione • Sia R una relazione e siano A1, A2,…, Analcuni suoi attributi allora: • A1, A2,…, An(R) = {t[A1, A2,…, An ] | tR} • La cardinalita’ di A1, A2,…, An(R) puo’ essere minore di R nel caso di duplicati DB -Algebra Relazionale
Esempio Proiezione Proiezione DB -Algebra Relazionale
Un’altro esempio di proiezione • Si riduce la cardinalita’ del risultato rispetto all’operando DB -Algebra Relazionale
Selezione (Restrizione) • Produce risultati: • Con lo stesso schema dell’operando • Con un sottoinsieme delle n-uple dell’operando • Quelle che soddisfano la condizione • Definizione • Sia R una relazione allora • (R) = {t | t R (t)} • dove e’ una formula proposizionale costruita a partire dagli atomi A B e utilizzando i connettivi proposizionali ,, • A e B sono attributi di R o costanti • {=,<, >, ≠, ≤, ≥} DB -Algebra Relazionale
Esempio Selezione Selezione DB -Algebra Relazionale
Un altro esempio di Selezione DB -Algebra Relazionale
Prodotto (Cartesiano) • Siano R(A1: T1,…, An: Tn) ed S (An+1: Tn+1,…, An+m: Tn+m) con {A1,…, An} {An+1,…, An+m}= . Allora si pone • R x S = {tu | tR u S} DB -Algebra Relazionale
Esempio prodotto cartesiano DB -Algebra Relazionale
Operatori Derivati • Sono operatori utili che si possono esprimere in funzioni di quelli primitivi. • Intersezione: Siano R ed S dello stesso tipo • RS = {t | tR t S}. • Essa si può esprimere in funzione degli operatori primitivi: • R S = R-(R-S) DB -Algebra Relazionale
JOIN (Giunzione) • L’operatore piu’ importante dell’algebra relazionale • Permette di combinare tuple da relazioni diverse basandosi sui valori degli attributi • Fondamentalmente due tipi (piu’ qualche variante): • Natural JOIN • Theta JOIN DB -Algebra Relazionale
Natural JOIN DB -Algebra Relazionale
Definizione del Natural JOIN • Sia R con attributi XY ed S con attributi YZ • R 1S e’ una relazione di attributi XYZ costituita da tutte le n-uple t tali che: t[XY] R , t[YZ] S. • Quindi: R 1S = {t | t[XY] R t[YZ] S} • Cioe’: le n-uple del risultato sono ottenute combinando le n-uple di R e S che hanno gli stessi valori negli attributi con lo stesso nome DB -Algebra Relazionale
Un altro esempio di Natural JOIN DB -Algebra Relazionale
Ancora un altro esempio di Natural Join DB -Algebra Relazionale
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
JOIN vuoti, un caso estremo • Potrebbe anche succedere che nessuna n-upla trovi il corrispettivo DB -Algebra Relazionale
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
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
Esempio di NATURAL OUTER JOIN DB -Algebra Relazionale
Proprieta’ del JOIN • Il JOIN e’ • Commutativo: R 1 S = S 1 R • Associativo: (R 1 S) 1 T = R 1 (S 1 T) • Quindi possiamo avere sequenze di JOIN senza rischio di ambiguita’: • R 1 S 1 T … DB -Algebra Relazionale
Esempio di JOIN multipli DB -Algebra Relazionale
Prodotto cartesiano a partire dal JOIN • Il JOIN e’ definito anche se non ci sono attributi comuni fra le relazioni • In questo caso, non essendoci vincoli sulle tuple da selezionare, vengono selezionate tutte le tuple dalle relazioni del JOIN • Prodotto cartesiano DB -Algebra Relazionale
Esempio di prodotto cartesiano generato dal JOIN DB -Algebra Relazionale
Theta-JOIN e Equi-JOIN • Estensione del NATURAL JOIN • Viene specificato un predicato per la selezione delle n-uple • E’ un operatore derivato: • R 1FS = F(R x S) • Se F e’ una congiunzione di uguaglianze si parla di equi-JOIN DB -Algebra Relazionale
Esempio di equi-JOIN DB -Algebra Relazionale
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
Database di esercitazione DB -Algebra Relazionale
Esercizio 1 • Trovare numero, nome ed eta’ di tutti gli impiegati che guadagnano piu’ di 40 mila euro DB -Algebra Relazionale
Esercizio 2 • Trovare il numero dei responsabili degli impiegati che guadagnano piu’ di 40 mila euro DB -Algebra Relazionale
Esercizio 3 • Trovare nome e salario dei responsabili degli impiegati che guadagnano piu’ di 40 mila euro. DB -Algebra Relazionale
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
Esercizio 5 • Trovare numero e nome dei responsabili i cui impiegati guadagnano TUTTI piu’ di 40 mila euro DB -Algebra Relazionale