2. ALGEBRA RELAZIONALE

I concetti introdotti, nella precedente sezione, permettono di dare una solida base formale ai vari aspetti legati alla struttura di uno schema di dati rappresentato per mezzo di un insieme di relazioni.

L'algebra relazionale è un linguaggio di interrogazione ed è definita da sei operatori di base: tre per le operazioni binarie (unione, prodotto complesso, differenza), tre operatori per le operazioni unarie (proiezione, selezione, ridenominazione) e da altri operatori esprimibili mediante le operazioni di base (intersezione, congiunzione).

2.1 OPERANDI

Gli operandi sono relazioni e ciascun operatore produce o può produrre relazioni come risultato.

Le operazioni di unione, differenza, intersezione sulle relazioni di un database richiedono che le loro relazioni-operando siano compatibili nei loro schemi. Tale compatibilità viene così definita:

Due relazioni r(R) ed s(S) si dicono compatibili per unione (union-compatible) ed anche i due schemi R ed S lo sono, se esiste una corrispondenza uno-ad-uno fra R ed S, ossia se i valori dei loro rispettivi domini appartengono allo stesso tipo di dati.

2.2 OPERATORI.

Unione:

E' un operatore binario e da come risultato una relazione. L'unione di due relazioni r(R) ed s(S) compatibili per unione è la relazione su R costituita da ciascuna t-upla appartenente ad r o ad s o ad entrambe.

Differenza:

E' un operatore binario e da come risultato una relazione. Analogamente all'operazione di unione anche la differenza di due relazioni esige la condizione di compatibilità per unione. La differenza di due relazioni r(R) ed s(S) compatibili per unione è la relazione su R costituita da ciascuna t-upla appartenente ad r ma non ad s.

Prodotto complesso (Full quadratic join):

E' un operatore binario ed il risultato può essere una relazione. Il prodotto complesso di due relazioni non vuote r(R) ed s(S) denotato da r*s è costituito dall'insieme composto della stringa M(r)M(s) per ogni coppia di stringhe (Mr, Ms) nel prodotto cartesiano r x s. Il prodotto complesso è indefinito se una qualsiasi delle due relazioni-operando è vuota, in quanto una t-upla non è definita nell'insieme vuoto. In pratica il prodotto complesso (ed il prodotto cartesiano) giustappone le n-uple delle due relazioni in tutti i modi possibili. Questo operatore gode di proprietà associativa.

Proiezione:

E' un operatore unario e da come risultato una relazione. Data una relazione r(X) ed un sottoinsieme Y degli attributi X, la proiezione di r su Y, denotata da p Y(r) è una relazione sugli attributi in Y, consistente nella restrizione delle n-uple di r sugli attributi di Y.

Selezione:

E' un operatore unario e da come risultato una relazione. Chiamiamo formula relazionale un'espressione che mette in relazione attributi per mezzo degli operatori =, !=, >, <, <=, >=. Sia r(X) una relazione sull'insieme di attributi X, e F una formula relazionale. La selezione di r rispetto a F, denotata da s F(r) è una relazione definita su X, contenente le n-uple di r che rendono F vera.

Ridenominazione:

E' un operatore unario e da come risultato una relazione. Serve a modificare lo schema di una relazione, lasciandone invariato il contenuto. Questo operatore, indicato con r d(r), modifica i nomi degli attributi della relazione r secondo la regola indicata dalla funzione d. Tale funzione ha una espressione del tipo X<-Y dove X, attributi da ridenominare, e Y, nuovi nomi, sono sequenze di attributi della stessa lunghezza.

Intersezione:

E' un operatore binario e da come risultato una relazione. Analogamente all'operazione di unione anche l'intersezione di due relazioni esige la condizione di compatibilità per unione. L'intersezione di due relazioni r(R) ed s(S) compatibili per unione è la relazione su R costituita da ciascuna t-upla appartenente ad r e ad s.

Theta-congiunzione (Theta-join):

La Theta congiunzione è una operazione binaria, denotata da r[F]s, dove F è una formula atomica; la theta-congiunzione di due relazioni non è necessariamente un relazione. Quando il prodotto complesso r*s è una relazione, la theta-congiunzione è una relazione e può essere espressa come: r[Aj t Bk]s = s Aj t Bk(r*s). Se la formula è nulla la theta-congiunzione è il prodotto complesso r*s. Un caso particolare si verifica quando Theta è la proposizione di uguaglianza, in questo caso la theta-congiunzione viene detta equi-congiunzione.

Congiunzione naturale (Natural-join o Join):

Dato che un’equi-congiunzione ha nomi e valori identici in almeno due domini, occorre un meccanismo che conservi uno solo dei domini duplicati, questa funzione è svolta dalla congiunzione naturale (o semplicemente congiunzione o join). Siano r(X,Y) e s(X,Z) due relazioni il join tra r ed s, denotato da r|X|s è una relazione q(X,Y,Z) costituita da tutte le t-uple risultanti dalla giustapposizione delle t-uple in r alle t-uple in s che hanno valori identici per gli attributi in X. Quando r ed s sono disgiunti allora la congiunzione è identica al prodotto complesso r*s. La congiunzione è una operazione binaria che da come risultato una relazione, l'operatore di congiunzione gode di proprietà associativa: possiamo pertanto scrivere r|X|s|X|t ed estendere la versione binaria alla versione k-aria con la notazione a prefissi |X|(r1,...,rm). Dato che |X| è associativa le congiunzioni possono essere nidificate.

 

Torna all'indice