Algebra Relazionale
Operatori dell'algebra relazionale (unione, intersezione, differenza, selezione, proiezione, join naturale, join esterno, theta join, equi join) con esempi e regole di equivalenza.
L'algebra relazionale è un insieme di operatori su relazioni che producono altre relazioni, ed essi possono essere composti insieme.
Gli operatori sono:
- #unione
- #intersezione
- #differenza
- #ridenominazione
- #selezione
- #proiezione
- #join naturale
- #join esterno
- #theta join
- #equi join
Unione, intersezione e differenza sono applicabili solo a relazioni definite sugli stessi attributi
Unione
Definito con il simbolo , unisce due insiemi con stessi attributi, rimuovendo eventuali duplicati
Intersezione
Definito con il simbolo , include solo le tuple presenti in entrambe le relazioni
Differenza
Definito con il simbolo , include solo le tuple che appartengono a e non a
Ridenominazione
Definito come, nomi nuovi, nomi correnti
è un operatore monadico (su un solo argomento) che modifica lo schema di una relazione, lasciando l'originale intatta
Esempio:
Paternità(Padre, Figlio)
Selezione
è un operatore monadico che seleziona tutte le tuple che hanno valore VERO Nella condizione data, la condizione può usare i nomi dell'operando per poi usare gli operatori <, >, =, !=, etc...
Si possono usare anche operatori logici tipo: AND, OR,
Esempio:
Impiegati(Matricola, Cognome, Filiale, Stipendio, LuogoNascita)
Proiezione
è un operatore monadico che seleziona gli attributi definiti nell'operatore,
Esempio:
Impiegati(Matricola, Cognome, Filiale, Stipendio)
La cardinalità di una proiezione è al più quella dell'operando, può diminuire dato che si escludono tuple diplicate
Join naturale
Dati , il join naturale è una relazione su dove:
Cioè prende tutte quelle tuple parte del prodotto cartesiano tra e tale che gli attributi comuni tra i due sono uguali. In pratica è il prodotto cartesiano dei due insiemi
Se ci sono tuple senza valori in comune, esse non faranno parte dell'insieme finale della join.
In generale, dato una generica join di la cardinalità delle join è:
- In generale:
- Se è chiave in
- Se B è chiave in ed esiste un vincolo di integrità referenziale fra in e
Join esterno
A differenza del join naturale, il join esterno include anche i valori che non hanno un match valido, e rimpiazza i valori che dovrebbero esser parte della tupla, con NULL. Esistono 3 tipologie di join esterno
- : mantiene tutte le tuple del primo operando, aggiungendo valori NULL se necessario
- : mantiene tutte le tuple del secondo operando, aggiungendo valori NULL se necessario
- : sia LEFT e RIGHT join insieme




THETA Join
La theta join effettua un join naturale con condizione, è equivalente ad una selezione di una join naturale
EQUI Join
Se l'operatore di condizione è sempre un = allora si tratta di una EQUI Join

Equivalenza di espressioni
Due espressioni sono dette equivalenti se producono lo stesso risultato dato qualsiasi istanza di input. Usiamo l'equivalenza per ridurre la complessità delle query. Un equivalenza importante è: dati e con , attributo di , allora
La seconda query è più efficiente dato che effettua una join già filtrata, mentre la prima esegue la join di tutte le combinazioni per poi filtrarlo
Selezione con valori nulli
Le condizioni atomiche che usiamo per confrontare un valore funziona solo se il valore è diverso da null, se lo è, la condizione non sarà mai verificata, o meglio, è "sconosciuto"
Per questo definiamo due condizioni, e
Le condizioni possono essere poste in AND ed OR, quindi dato Persone(Nome, Cognome, Età), dove età può essere null
Viste
Una vista è uno schema esterno che rappresenta una rappresentazione diversa di uno stesso dato. A questo punto differenziamo in due tipi di relazioni
- Relazioni di base: hanno contenuto autonomo
- Relazioni derivate: è una relazione il cui contenuto è funzione di altre relazioni Allo stesso modo le visite derivate hanno due tipologie
- Viste materializzate: Sono viste derivate da altre e sono memorizzate nella base di dati. Ha il vantaggio di essere immediatamente disponibili per interrogazioni, ma ha lo svantaggio di esser ridondanti e rendono più complicate le operazioni di aggiornamento dei dati
- Relazioni virtuali (o viste): Le viste sono ricalcolate ogni volta, hanno il vantaggio di essere più flessibili. Esempio:
Quando andiamo ad eseguire una Query su esso viene "Rimpiazzato" dalla sua definizione di vista. Per esempio quando eseguiamo la query:
Viene in realtà eseguita la query
Il lato positivo delle viste è che possono essere definite dall'utente del database, in modo da prendere i dati di cui ha bisogno in quel momento, e questa tecnica non influisce sull'efficienza delle query dato che verranno ottimizzate.