Premessa
Portale di appartenenza: Basi di dati.
Cosa troverai in questa nota:
- La definizione degli operatori derivati dellβalgebra relazionale e delle loro proprietΓ .
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 :
Esempio di theta-join
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).
Esempio di theta-join con schemi non disgiunti
Sia la seguente relazione.
Sia la seguente relazione.
Normalmente non potremmo effettuare lβoperazione di theta-join tra ed perchΓ© entrambi hanno un attributo , perΓ² possiamo rinominare uno dei due (in questo caso quello della relazione ) tramite lβoperazione di ridenominazione per ottenere la relazione :
Ora, avendo gli schemi ed distinti, possiamo effettuare lβoperazione di theta-join per ottenere la seguente relazione:
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.
Esempio di natural-join
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 :
Esempio di semi-join
Sia la seguente relazione.
Sia la seguente relazione.
Sia il seguente predicato:
La relazione ottenuta dallβoperazione Γ¨ la seguente.
CiΓ² che abbiamo fatto Γ¨ stato effettuare essenzialmente una selezione sulla relazione scegliendo di visualizzare solo quelle fermate che saranno visitate successivamente allβorario di partenza di ogni treno nella relazione .
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:
Esempio di quoziente
Sia la seguente relazione che rappresenta quali esami ha completato ogni matricola.
Sia la seguente relazione che rappresenta quali esami deve completare ogni matricola.
Dalla definizione di quoziente, associamo così i valori al nostro esempio:
Otteniamo quindi lβoperazione:
Otteniamo βil quozienteβ della divisione, cioΓ¨ quelle matricole che sono abbinate a tutti i corsi della seconda tabella (in questo caso, la matricola non Γ¨ abbinata al corso ).
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
Esempio: risoluzione di un'interrogazione con quantificatore universale tramite 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:
- Left-join : mantiene le tuple dangling della relazione a sinistra dellβoperatore.
- Right-join : mantiene le tuple dangling della relazione a destra dellβoperatore.
- Full-join : mantiene le tuple dangling di entrambe le relazioni.
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
- π« Lezioni e slide del Prof. Pensa Ruggero Gaetano del corso di Basi di Dati (canale B), Corso di Laurea in Informatica presso lβUniversitΓ di Torino, A.A. 2024-25:
- π« Appunti di Luca Barra del corso di Basi di Dati, Corso di Laurea in Informatica presso lβUniversitΓ di Torino, A.A. 2022-23 (caricati sul repository GitHub del Collettivo Studentesco Informatica).