Operatore join
Operatore join: permette di combinare più relazioni anche senza avere gli stessi attributi. Ci sono diverse varianti di join: join naturale, join in cui, join esterno, self-join, teta-join, equi-join.
Join naturale
=> Join naturale: R1 < NAT > R2 è una relazione sullo schema S1 U S2, così si uniscono le colonne delle due relazioni. In questo caso la condizione di join implicita è che gli attributi omonimi vadano in join.
| R1 | R2 | ||
|---|---|---|---|
| Impiegato | Reparto | Reparto | Piano |
| Rossi | Vendite | Produzione | 2 |
| Neri | Produzione | Vendite | 1 |
| Bianchi | Produzione | ||
Impiegato Reparto Piano → R1 >< R2
Schema soluzione = unione degli attributi.
Stato soluzione = solo le tuple che sull'attributo di join hanno valore uguale.
| Paternità | Maternità | ||
|---|---|---|---|
| Padre | Figlio | Madre | Figlio |
| Adamo | Caino | Eva | Caino |
| Adamo | Abele | Eva | Set |
| Paternità di maternità | ||
|---|---|---|
| Padre | Madre | Figlio |
| Adamo | Eva | Caino |
Il join può essere vuoto o completo se tutte le tuple di R1 (o tutte di R2) contribuiscono a qualche riga di R1 >< R2.
Operatore join: varianti
Operatore join: permette di combinare più relazioni anche senza avere gli stessi attributi. Ci sono diverse varianti di join:
- Join naturale.
- Join in mono.
- Join esterno.
- Self-join.
- Theta join.
- Equi-join.
Join naturale con attributi
=> Join naturale: RA R2 è una relazione sullo schema S1 ∪ S2, così si uniscono le colonne delle due relazioni. In questo caso la condizione di join implicita è che gli attributi omonimi vadano in join.
| R1 | R2 | ||
|---|---|---|---|
| Impiegato | Reparto | Reparto | Piano |
| Rossi | Vendite | Produzione | 2 |
| Neri | Produzione | Vendite | 1 |
| Bianchi | Produzione | ||
| Impiegato | Reparto | Piano |
|---|---|---|
| Rossi | Vendite | 1 |
| Neri | Produzione | 2 |
| Bianchi | Produzione | 2 |
=> R1 A R2
Schema soluzione = unione degli attributi.
Stato soluzione = solo le tuple che sull’attributo di join hanno valore uguale.
| Paternità | Maternità | ||
|---|---|---|---|
| Padre | Figlio | Madre | Figlio |
| Adamo | Caino | Eva | Caino |
| Adamo | Abele | Eva | Set |
| Paternità di maternità | ||
|---|---|---|
| Padre | Madre | Figlio |
| Adamo | Eva | Caino |
Il join può essere vuoto o completo. Lo è se tutte le tuple di R1 (o tutte di R2) contribuiscono a qualche riga di R1 A R2.
Estremo opposto.
Join n-ario
⟹ Join n-ario: operatore tra n relazioni:
- Commutativo: R2 ⋈ R1 = R1 ⋈ R2.
- Associativo: (R3 ⋈ R2) ⋈ R1 = R3 ⋈ (R2 ⋈ R1).
Join esterni
⟹ Join esterni: ancora non ve li spiego.
Self join
⟹ Self join: join di una tabella con se stessa.
Viene utilizzato in un universo tentativo per risalire in qualche modo ad esempio alla propria gerarchia (Es: albero genealogico Genitore di genitore).
Theta join
⟹ Theta join: è una generica condizione che non è obbligatoriamente uguaglianza.
Può essere visto anche come combinazione di Selezione e Prodotto cartesiano: theta join = Selezione + Prodotto cartesiano.
Lo join di due relazioni senza attributi in comune.
Equi-join
⟹ Equi-join: è il caso standard di un join con condizione di uguaglianza molto simile al join naturale con la differenza che nel join naturale vanno implicitamente in join gli attributi con ugual nome, nell'equi-join bisogna indicarli.
-
Riassunto esame Basi di dati, Prof. Maratea Antonio, libro consigliato Fondamenti di Basi di Dati (Appunti Parte 1)…
-
Riassunto esame Basi di dati, Prof. Maratea Antonio, libro consigliato Fondamenti di Basi di Dati (Appunti Parte 3)…
-
Riassunto esame Basi di dati, Prof. Persia, libro consigliato Sistemi di basi di dati e applicazioni, Angelo Chiane…
-
Riassunto esame Algoritmi e strutture dati, Prof. Cabodi Giampiero, libro consigliato Appunti di Algoritmi e strutt…