Il linguaggio di manipolazione dei dati
Data Manipulation Language

Operatori tradizionali su insiemi

Unione
Date due relazioni R ed S, che abbiano lo stesso schema, cioè R(A1, A2, ...,An) ed S(A1, A2, ..., An), l’unione di R ed S, rappresentata da RS, è la relazione costituita da tutte le tuple che appartengono almeno a R od a S; lo schema è RS(A1, A2, ..., An).
Intersezione
Date due relazioni R ed S, che abbiano lo stesso schema, cioè R(A1, A2, ..., An) ed S(A1, A2, ..., An), l’intersezione di R ed S, rappresentata da RS, è la relazione costituita da tutte le tuple che appartengono sia ad R che ad S; lo schema è RS(A1, A2, ..., An).
Differenza
Date due relazioni R ed S, che abbiano lo stesso schema, cioè R(A1, A2, ..., An) ed S(A1, A2, ..., An), la differenza fra R ed S, rappresentata da, R\S, è la relazione costituita da tutte le tuple di R che non appartengono anche ad S; lo schema associato è R\S(A1, A2, ..., An).
Prodotto cartesiano
Date due relazioni R ed S, il prodotto cartesiano di R ed S, rappresentato da R×S, è la relazione costituita da tutte le possibili coppie (r,s) tali che r è una tupla di R ed s è una tupla di S. Ogni tupla t di R×S è, pertanto, una concatenazione (r,s) di una tupla r di R e di una tupla s di S. Se le due relazioni hanno gli schemi R(A1, A2, ..., An) ed S(B1, B2, ..., Bm), allora lo schema di R×S è R×S(A1, A2, ..., An, B1, B2, ..., Bm).
esempi prodotto cartesiano

Operatori relazionali
Un operatore relazionale è un operatore che agisce su relazioni e che dà come risultato ancora una relazione. Un'espressione relazionale è una espressione ottenuta per mezzo di operatori relazionali applicati a relazioni.

Gli operatori relazionali sono quelli di proiezione, selezione, u-join, join naturale, divisione e ridenominazione (operatori specifici su relazioni).

Proiezione
Tale operatore consente di estrarre da una relazione informazioni relative ad una sua sottoparte effettuando la scelta in senso verticale (si scelgono quali colonne o attributi prendere da una relazione).

Sia R una relazione con schema R(A1, A2, ..., An) e sia X un sottoinsieme degli attributi nello schema di R, la proiezione di R sugli attributi X è una relazione T che ha come schema T(X); le tuple di T sono costituite dai valori che appaiono nelle tuple di R negli attributi di X; eventuali tuple duplicate in T devono essere eliminate da T stessa.
esempi proiezione

Selezione
Tale operatore consente di estrarre da una relazione informazioni che soddisfano una condizione specificata. La selezione permette di estrarre da una relazione una sua sottoparte; l'estrazione viene effettuata in senso orizzontale, cioè vengono eliminate tutte le tuple che non soddisfano una certa condizione.

Sia R una relazione con schema R(A1, A2, ..., An) e sia F un predicato composta da uno o più predicati semplici collegati tra di loro dagli operatori logici and, or e not; ciascun predicato semplice opera su un attributo nello schema di R e su una costante per mezzo degli operatori di confronto. La selezione su R per mezzo di F è una relazione T che ha lo stesso schema di R e che è costituita dalle tuple di R che soddisfano il predicato F. Si dice che una tupla r di R soddisfa il predicato F se, sostituendo a ciascun attributo in F il valore che appare nella tupla r in quell’attributo, si ottiene il valore logico vero. Si noti che T è una sottorelazione, eventualmente vuota, di R.
esempi selezione

-Join e Join naturale
Gli operatori di -join e join naturale sono utilizzati per collegare informazioni contenute in relazioni diverse. L'operatore di join richiede di specificare gli attributi attraverso i quali si effettua il collegamento, mentre nell'operatore di join naturale questi attributi sono direttamente indicati negli schemi delle relazioni. L'operatore di join naturale ha un significato analogo a quello del join con l'unica differenza che, per ogni tupla che appare nella relazione risultante dal join naturale, i valori uguali sono riportati una sola volta.

Siano R una relazione con schema R(A1, A2, ..., An) ed S una relazione con schema S(B1, B2, ..., Bm); sia P un predicato semplice che opera su un attributo A nello schema di R e su un attributo B nello schema di S per mezzo di un operatore di confronto (ipsilon). L’-Join su R ed S per mezzo di P è una relazione T costituita solo dalle tuple (r,s) del prodotto cartesiano R×S tali che l’operatore di confronto è soddisfatto dal valore che nella tupla r di R è associato all’attributo A e dal valore che nella tupla s di S è associato all’attributo B. Lo schema di T è T(A1, A2, ..., An, B1, B2, ..., Bm).
esempi join
Siano R ed S due relazioni con schema R(A1, A2, ...,Ai, ..., An) e con schema S(B1, B2, ...,Bi, ..., Bm) tali che gli attributi A1, A2, ...,Ai siano uguali , rispettivamente, a B1, B2, ...,Bi, con i1. Il join naturale di R con S è una relazione T nella quale ciascuna tupla è una concatenazione (r,s) di una tupla r di R e di una tupla s di S che hanno gli stessi valori, rispettivamente, negli attributi A1, A2, ...,Ai e negli attributi B1, B2, ..., Bi. Ciascuno dei valori uguali è riportato una sola volta. Lo schema di T è T(A1, A2, ...,Ai, ..., An, Bi+1, ..., Bm).
esempi join naturale


Divisione
Siano R una relazione con schema R(A1, A2, ..., An) ed S una relazione con schema S(B1, B2, ...,Bm) tali che n>m, S e tutti gli attributi di S sono anche attributi di R. La divisione di R per S è una relazione T costituita da tutte le tuple t tali che, per ogni tupla s di S, la tupla r=(t,s) è una tupla r della relazione R. Lo schema della relazione T è costituito dagli attributi di R che non sono anche attributi di S. La divisione può essere utilizzata per determinare quali informazioni di R contengano anche tutte le informazioni descritte in S.


Dati tali operatori è possibile definire l’algebra relazionale:

AR { A, D, R, W, P }

ove:

  1. A è un insieme di attributi;
  2. D è un insieme di domini;
  3. R è un insieme di relazioni (o database relazionali) gli schemi delle quali sono definiti su sottoinsiemi di A;
  4. W è l’insieme degli operatori di confronto =, >, <, , , ;
  5. P è l’insieme degli operatori relazionali unione, intersezione, differenza, selezione, proiezione, join naturale, -join, divisione.