Saltare la navigazione

L8: Operazioni Relazionali

Le operazioni relazionali

In generale gli operatori relazionali agiscono su una relazione per ottenere una nuova relazione. In sostanza le operazioni relazionali consentono di effettuare le interrogazioni alla base di dati per ottenere le informazioni desiderate estraendo da una tabella una sottotabella, oppure combinando tra loro due o più tabelle e generando così nuove relazioni. Le principali operazioni sono:

 La selezione (o select) che genera una nuova relazione è costituita solo dalle n-uple della relazione di partenza che soddisfano a una determinata condizione.

Grado: lo stesso della relazione di partenza

Cardinalità: minore o uguale a quella di partenza

La proiezione (o project) che genera una nuova relazione estraendo dalla tabella iniziale due o più colonne corrispondenti agli attributi prefissati.

Grado: minore o uguale al grado della relazione di partenza

Cardinalità: di solito uguale a quella di partenza tranne quando vengono ridotte a una le righe uguale con la unique.

La congiunzione (o join) che serve a combinare due relazioni aventi uno o più attributi in comune, generando una nuova relazione che contiene le righe della prima e della seconda tabella, che possono essere combinate secondo i valori uguali dell’attibuto comune.

Grado: se i gradi delle relazioni di partenza sono rispettivamente N1 e N2, il grado della relazione generata è uguale a N1+N2-1, perché l’attributo comune compare una sola volta.

Cardinalità: non è prevedibile in quanto si ottengono solo le righe che possono essere combinate attraverso valori presenti in entrambe.

Le join possibili sono:

  1. natural join quella vista sopra 
  2. equi-join quando si fanno corrispondere valori uguali per attributi comuni nelle due tabelle (es. Clienti.CodiceAgente su Agenti.CodiceCliente). 
  3. outer join è una congiunzione che resitituisce le righe dell’una e dell’altra tabella anche se non sono presenti valori uguali per l’attributo comune; di tutte queste vengono combinate solo le righe per le quali il valore dell’attributo comune nella prima tabella trova un valore uguale nella colonna dell’attributo comune nella seconda tabella. Queste si possono ulteriormente dividere in:
       a. left join = quando elenca comunque tutte le righe della prima tabella congiungendo tra le righe della seconda solo quelle per le quali si trovano valori corrispondenti per l’attributo comune.
       b. right join = restituisce comunque tutte le righe della seconda tabella e di queste congiunge con le righe della prima tabella solo quelle per le quali si possono trovare valori corrispondenti per l’attributo comune.
       c. self-join = è una congiunzione con la quale vengono combinate righe di una tabella con le righe della stessa tabella quando sono presenti valori corrispondenti per attributi, cioè due attributi con lo stesso dominio.

Questo articolo è sotto la licenza Licenza Creative Commons Attribution Share Alike 4.0