Premessa

Portale di appartenenza: Basi di dati.

Cosa troverai in questa nota:

Prerequisiti: per comprendere pienamente il contenuto di questa nota, oltre le conoscenze minime che do per scontato che tu sappia giΓ , ti consiglio di aver letto in precedenza queste altre note:

Buona lettura! β˜οΈπŸ€“

Definizione: operatore derivato

Nell’algebra relazionale, un operatore derivato Γ¨ un operatore relazionale ottenuto dalla composizione di altri operatori di base o anch’essi derivati.

1 - Theta-join

Per mettere in correlazione dati estratti da due o piΓΉ relazioni diverse, si usa il theta join.

Definizione: theta-join

Date due relazioni ed (con ) e un predicato tra due attributi e , il theta-join Γ¨ un operatore relazionale definito come la selezione di alcuni record secondo il predicato nel prodotto cartesiano :

Osservazione: cardinalitΓ  del risultato del theta-join

Date due relazioni ed (con ) e un predicato tra un attributo e un attributo , la cardinalitΓ  della relazione prodotta dall’operazione di theta-join Γ¨:

Sappiamo perΓ² che , quindi:

Osservazione: theta-join con schemi non disgiunti

Nel caso in cui ci sia bisogno di effettuare un’operazione di theta-join tra due relazioni ed con schemi e non disgiunti (cioΓ¨ ), si puΓ² usare l’operazione di ridenominazione per cambiare il nome degli attributi in conflitto (a patto perΓ² che siano dello stesso tipo).

2 - Equi-join

Un caso particolare del theta-join in cui i confronti del predicato Γ¨ composto solo da uguaglianze Γ¨ l’equi-join.

Definizione: equi-join

Date due relazioni ed (con ) e un predicato tra due attributi e che confronta solamente le loro uguaglianze, l’equi-join Γ¨ un operatore relazionale definito come la selezione di alcuni record secondo il predicato nel prodotto cartesiano :

Osservazione: partecipazione completa di una delle due relazioni nell'equi-join

Se si prova a effettuare un equi-join tra due relazioni ed (con ), in cui ha partecipazione completa (ossia ogni record di ha almeno una corrispondenza in ), otteniamo che la cardinalitΓ  sarΓ :

Osservazione: equi-join in corrispondenza di una chiave primaria

Siano due relazioni ed (dove Γ¨ un sottoinsieme di attributi qualsiasi e Γ¨ la chiave primaria di ) tali che .

Se si prova a effettuare un equi-join con un predicato del tipo (dove e ), per ogni record di si troverΓ  al piΓΉ una () corrispondenza con (altrimenti si violerebbe il vincolo di chiave primaria non essendoci piΓΉ unicitΓ  nei valori), quindi otteniamo che la cardinalitΓ  sarΓ :

Se proviamo a fare perΓ² la stessa cosa ma aggiungendo il vincolo di integritΓ  referenziale, otteniamo una corrispondenza 1 a 1 tra i record delle due relazioni.

Osservazione: equi-join in corrispondenza di una chiave primaria con vincolo di integritΓ  referenziale

Siano due relazioni ed (dove Γ¨ un sottoinsieme di attributi qualsiasi e Γ¨ la chiave primaria di ) tali che . Vale inoltre il vincolo di integritΓ  referenziale seguente:

Se si prova a effettuare un equi-join con un predicato del tipo (dove e ), per ogni record di si troverΓ  esattamente una () corrispondenza con , quindi otteniamo che la cardinalitΓ  sarΓ :

3 - Natural-join

Si puΓ² generalizzare il concetto di equi-join operando una proiezione sull’unione degli attributi di entrambe le relazioni coinvolte.

Definizione: natural-join

Date due relazioni ed tali che gli sottoinsiemi di attributi , e sono disgiunti due a due e un predicato che verifica l’uguaglianza tra ogni attributo in col corrispondente in , il natural-join (anche detto inner-join) Γ¨ un operatore relazionale definito come la proiezione rispetto a , e dell’equi-join tra ed :

I record che non hanno corrispondenze in entrambe le relazioni sono dette dangling e vengono scartate durante l’operazione.

Osservazione: natural-join su schemi disgiunti equivalente al prodotto cartesiano

Date due relazioni ed (con ), il loro natural-join diventa equivalente al loro prodotto cartesiano:

Osservazione: natural-join su schemi corrispondenti equivalente all'intersezione

Date due relazioni ed , il loro natural-join diventa equivalente alla loro intersezione:

CiΓ² accade perchΓ© il natural-join, per definizione, viene effettuato su tutti gli attributi (essendoci sempre una corrispondenza in entrambi gli schemi) e include solo i record che appaiono in entrambe, cosa che coincide proprio con la definizione di intersezione.

4 - Semi-join

Definizione: semi-join

Date due relazioni ed (con ) e un predicato , il semi-join Γ¨ un operatore relazionale definito come la proiezione rispetto allo schema del theta-join tra ed :

Osservazione: cardinalitΓ  del risultato del semi-join

Date due relazioni ed (con ) e un predicato , la cardinalitΓ  della relazione prodotta dall’operazione di semi-join Γ¨:

CiΓ² accade perchΓ© il semi-join Γ¨ composto da una proiezione e la cardinalitΓ  di una proiezione Γ¨ al massimo uguale a quella dell’istanza a cui si riferisce.

5 - Quoziente

Definizione: quoziente

Date due relazioni ed (con ), il quoziente Γ¨ un operatore relazionale definito nel seguente modo:

Osservazione: cardinalitΓ  del risultato del quoziente

Date due relazioni ed (con ), la cardinalitΓ  della relazione prodotta dall’operazione di quoziente Γ¨:

CiΓ² accade perchΓ© il semi-join Γ¨ composto da una proiezione e la cardinalitΓ  di una proiezione Γ¨ al massimo uguale a quella dell’istanza a cui si riferisce.

Osservazione: risoluzione delle interrogazioni con quantificatori universali tramite quoziente

Le interrogazioni con una quantificazione universale, ossia quelle interrogazioni in cui sono presenti parole chiave come β€œtutti”, β€œogni” e β€œsempre”, possono essere risolte tramite l’operatore quoziente.

6 - Outer-join

Nel caso in cui volessimo effettuare dei natural-join su cui perΓ² non vogliamo perdere le tuple dangling di una delle due relazioni o di entrambe, possiamo usare gli outer-join, distinti in tre tipi:

6.1 - Left-join

Definizione: left-join

Date due relazioni ed tali che gli sottoinsiemi di attributi , e sono disgiunti due a due e un predicato che verifica l’uguaglianza tra ogni attributo in col corrispondente in , il left-join Γ¨ un operatore relazionale definito un natural-join in cui i record dangling della relazione vengono mantenuti e rispetto agli attributi assumono valore nullo, mentre i record dangling della relazione vengono scartati:

6.2 - Right-join

Definizione: right-join

Date due relazioni ed tali che gli sottoinsiemi di attributi , e sono disgiunti due a due e un predicato che verifica l’uguaglianza tra ogni attributo in col corrispondente in , il right-join Γ¨ un operatore relazionale definito un natural-join in cui i record dangling della relazione vengono mantenuti e rispetto agli attributi assumono valore nullo, mentre i record dangling della relazione vengono scartati:

6.3 - Full-join

Definizione: full-join

Date due relazioni ed tali che gli sottoinsiemi di attributi , e sono disgiunti due a due e un predicato che verifica l’uguaglianza tra ogni attributo in col corrispondente in , il right-join Γ¨ un operatore relazionale definito un natural-join in cui sia i record dangling della relazione che quelli della relazione vengono mantenuti e rispetto agli attributi e assumono valore nullo:

Fonti