Premessa
Portale di appartenenza: Basi di dati.
Cosa troverai in questa nota:
- Come effettuare la composizione di operatori relazionali.
- Glu operatori derivati dellβalgebra relazionale.
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! βοΈπ€
Lβalgebra relazionale Γ¨ composizionale, ovvero si possono costruire espressioni di algebra relazionale componendo insieme gli operatori relazionali.
Definizione: composizione di operatori relazionali
Dati due operatori relazionali e , la loro composizione consiste nel dare come argomento dellβoperatore il risultato dellβoperazione di :
Esempio di composizione di due operatori
Supponiamo di avere una relazione e vogliamo estrarre i nomi degli studenti di con meno di anni. Possiamo comporre due operatori:
- Selezione per scegliere solo gli studenti di con meno di anni:
- Proiezione per estrarre i nomi dal risultato della selezione:
La composizione dei due operatori Γ¨ la seguente:
1 - Notazione ad albero sintattico
Per visualizzare comodamente unβinterrogazione composta da una composizione di operatori si usa la notazione ad albero sintattico.
Notazione ad albero sintattico di una composizione
Una composizione di operatori relazionali si puΓ² rappresentare attraverso un albero sintattico, ossia un albero utile a visualizzare la sequenza di esecuzione delle operazioni. In particolare:
- Sul nodo radice viene posto lβoperatore eseguito per ultimo nella composizione.
- Sui nodi foglia vengono poste le relazioni di partenza su cui vengono eseguite le operazioni.
- Ogni nodo interno rappresenta uno degli operatori della composizione applicato al risultato del nodo figlio.
Esempio di notazione ad albero sintattico di una composizione
Supponiamo di avere una relazione e e vogliamo estrarre le matricole degli studenti che sono iscritti a un corso con una durata superiore a ore. Possiamo comporre gli operatori così:
- Selezione per scegliere i corsi con durata maggiore di ore:
- Theta-join tra e il risultato della selezione dei corsi, utilizzando lβattributo in e il campo in :
- Proiezione per estrarre le matricole dal risultato del theta-join:
La composizione degli operatori Γ¨ quindi la seguente:
Questa interrogazione si puΓ² tradurre nel seguente albero sintattico:
1: |latex
\text{CORSI}
|
1 -> 2
2: |latex
\sigma_{\text{CORSI.Durata} < 50}
|
3: |latex
\text{STUDENTI}
|
2 -> 4
3 -> 4
4: |latex
\pi_{\text{STUDENTI.Corso}} = \text{CORSI.}\underline{\text{CodiceCorso}}
|
4 -> 5
5: |latex
\pi_{\text{STUDENTI.}\underline{\text{Matricola}}}
|
2 - Definizione di operatore derivato
Definizione: operatore derivato
Nellβalgebra relazionale, un operatore derivato Γ¨ un operatore relazionale ottenuto dalla composizione di altri operatori di base o anchβessi derivati.
Gli operatori derivati piΓΉ comuni sono:
- Theta-join : per mettere in correlazione dati estratti da due o piΓΉ relazioni diverse.
- Equi-join : un caso particolare del theta-join in cui i confronti del predicato Γ¨ composto solo da uguaglianze
- Natural-join : per generalizzare il concetto di equi-join operando una proiezione sullβunione degli attributi di entrambe le relazioni coinvolte.
- Semi-join : per limitare il theta-join allo schema di una delle due relazioni.
- Outer-join: effettuano un natural-join su cui perΓ² non vengono perse tutte le tuple dangling di una delle due relazioni o di entrambe e sono 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.
- Quoziente : per cercare i valori di un attributo che sono associati a ogni valore di altri attributi.
3 - 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 :
Viene usato per mettere in correlazione dati estratti da due o piΓΉ relazioni diverse.
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:
4 - 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 :
Rappresenta un caso particolare del theta-join in cui i confronti del predicato Γ¨ composto solo da uguaglianze.
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Γ :
5 - Natural-join
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 :
Viene usato per generalizzare il concetto di equi-join operando una proiezione sullβunione degli attributi di entrambe le relazioni coinvolte.
Le tuple 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.
6 - 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 :
Viene usato per limitare il theta-join allo schema di una delle due relazioni.
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.
7 - Outer-join
Definizione: outer-join
Gli outer-join sono operatori relazionali che effettuano un natural-join su cui perΓ² non vengono perse tutte le tuple dangling di una delle due relazioni o di entrambe e sono 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.
7.1 - Left-join
Definizione: left-join
Date due relazioni ed tali che gli sottoinsiemi di attributi , e sono disgiunti a due a due e un predicato che verifica lβuguaglianza tra ogni attributo in col corrispondente in , il left-join Γ¨ un operatore relazionale (in particolare un outer-join) definito come un natural-join in cui le tuple dangling della relazione vengono mantenute e rispetto agli attributi assumono valore nullo, mentre le tuple dangling della relazione vengono scartate:
7.2 - Right-join
Definizione: right-join
Date due relazioni ed tali che gli sottoinsiemi di attributi , e sono disgiunti a due a due e un predicato che verifica lβuguaglianza tra ogni attributo in col corrispondente in , il right-join Γ¨ un operatore relazionale (in particolare un outer-join) definito come un natural-join in cui le tuple dangling della relazione vengono mantenute e rispetto agli attributi assumono valore nullo, mentre le tuple dangling della relazione vengono scartate:
7.3 - Full-join
Definizione: full-join
Date due relazioni ed tali che gli sottoinsiemi di attributi , e sono disgiunti a due a due e un predicato che verifica lβuguaglianza tra ogni attributo in col corrispondente in , il right-join Γ¨ un operatore relazionale (in particolare un outer-join) definito come un natural-join in cui sia le tuple dangling della relazione che quelle della relazione vengono mantenute e rispetto agli attributi e assumono valore nullo:
8 - Quoziente
Definizione: quoziente
Date due relazioni ed (con ), il quoziente Γ¨ un operatore relazionale definito nel seguente modo:
Viene usato per cercare i valori di un attributo che sono associati a ogni valore di altri attributi.
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 Γ¨ abbinata a tutti i corsi).
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
Approfondimento
Se vuoi saperne di piΓΉ:
- ProprietΓ degli operatori relazionali.
- Risoluzione delle interrogazioni con negazione.
- Uso creativo dellβalgebra relazionale.
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 Team Studentesco Informatica).

