Operazioni relazionali

Dopo aver compreso che cosa sia una Relazione matematica, si può comprendere meglio quali siano le possibili operazioni che si possono operare tra di esse. Siccome le relazioni non sono altro che dei particolari insiemi, tra le operazioni relazionali, ricadono anche le classiche operazioni insiemistiche di «unione», «intersezione», «differenza», che non verranno trattate.

Per descrivere le altre operazioni relazionali, si utilizzeranno le tabelle ottenute dal test della soluzione dell'esempio I proprietari dei veicoli

Di solito tali operazioni non vengono usate per costruire un database, ma soprattutto per estrarre informazioni da esso

Selezione

Questa operazione si applica ad una sola Relazione alla volta e produce come risultato una nuova Relazione, si dice quindi che l'operazione selezione è di tipo unario. La relazione risultante ha sempre lo stesso grado della relazione di partenza, ma solitamente cardinalità inferiore. In pratica si può ottenere una nuova tabella che contenga solo alcune delle righe contenute nella tabella di partenza. Questa operazione si indica anche con il simbolo della lettera greca minuscola «sigma», seguito tra parentesi dal nome della relazione, e avente come pedice la condizione di selezione che deve essere verificata

Esempio 4.5. Esempio di selezione

Tabella 4.2. cittadini

cf cognome nome
RSSMRA Rossi Mario
VRDGPP Verdi Giuseppe
BNCGPP Bianchi Giuseppe
GLLGNN Gialli Gianna

Per visualizzare dalla tabella cittadini, solo quelli di cognome 'Rossi' si scriverà:

σ cognome='Rossi' (cittadini)

Tabella 4.3. σ (cittadini)

cf cognome nome
RSSMRA Rossi Mario


Proiezione

Questa operazione si applica ad una sola relazione e produce come risultato una nuova relazione, quindi questa operazione è di tipo unario. La relazione risultante ha la stessa cardinalità della relazione di partenza, ma solitamente grado inferiore. In pratica si può ottenere una nuova tabella che contenga solo alcune delle colonne contenute nella tabella di partenza. Questa operazione si indica anche con il simbolo della lettera greca minuscola «pi», seguita, tra parentesi, dal nome della relazione, e avente come pedice la condizione di proiezione che deve essere verificata.

Esempio 4.6. Esempio di proiezione

per visualizzare dalla tabella cittadini, solo le informazioni contenute in «nome», si scriverà:

π nome (cittadini)

Tabella 4.4. π (cittadini)

nome
Mario
Giuseppe
Giuseppe
Gianna


Nota

Nell'ultimo esempio si può notare che nella tabella sono presenti due righe identiche: si tratta di un'eventualità che non si sarebbe dovuta presentare nel caso in cui la tabella fosse stata la rappresentazione di una Relazione matematica.

Questa anomalia consente all'operatore del DBMS di decidere cosa fare: se volere, come in questo esempio, contare quante siano le omonimie, o di aggiungere altri vincoli che rendano la tabella risultante conforme alle Relazioni matematiche.

Congiunzione

Questa operazione si applica a due relazione e produce come risultato una sola nuova relazione, quindi è un'operazione binaria. La relazione risultante ha solitamente grado superiore a quello delle singole relazioni di partenza, ma nulla si può affermare sulla sua cardinalità.

Per poter eseguire questa operazione si deve verificare una particolare condizione tra le due tabelle di partenza: devono avere almeno una colonna contenente lo stesso tipo di dati; tale condizione si verifica sicuramente quando tra le due relazioni c'è un «vincolo d'integrità referenziale». In pratica da una congiunziome si può ottenere una nuova tabella che possiede le colonne di entrambe le tabelle di partenza, e le righe che hanno un valore in comune ad entrambe le tabelle.

Questa operazione si indica anche con il simbolo della lettera «». Il simbolo deve essere preceduto e seguito dai nomi delle due relazioni coinvolte e deve avere come pedice la condizione di congiunzione che deve essere verificata.

Esempio 4.7. Esempio di congiunzione

visto che la tabella 'cittadini' e la tabella 'proprieta' hanno una colonna in comune (il codice fiscale del cittadino), per visualizzare quali targhe sono abbinate ad ogni cittadino, si può scrivere:

proprieta ⋈cf-cittadino=cf cittadini

Per costruire la tabella finale si deve analizzare una riga alla volta la tabella «proprieta» e verificare se il valore di «cf-cittadino» è presente come valore in «cf» di «cittadini». In caso affermativo, bisogna riportare tutti gli altri campi della riga di «cittadini».

Tabella 4.5. proprieta X cittadini

targa-auto cf cognome nome
AZ12345 RSSMRA Rossi Mario
AZ12345 VRDGPP Verdi Giuseppe
OIL9876 GLLGNN Gialli Gianna
EE33333 GLLGNN Gialli Gianna


Nota

Nell'ultimo esempio si può notare che nell'ultima tabella ottenuta il campo «cf» non possiede piu' il vincolo di «chiave primaria». Infatti le tabelle «cittadini» e «proprieta X cittadini» sono due tabelle distinte, e nessuno ha scritto da nessuna parte che la seconda relazione debba possedere gli stessi vincoli intrarelazionali della prima.