Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Algebra e Calcolo Relazionale
Y, quindi ogni tupla dà un contributo diverso alla proiezione;
Se la proiezione ha tante tuple quanto l'operando, allora ciascuna tupla contribuisce alla proiezione con valori diversi;
Y, quindi non contiene coppie di tuple uguali, ma questa è proprio la definizione di superchiave.
Per la relazione appena vista, gli attributi Nome e Cognome formano una chiave (e quindi una superchiave), mentre Reparto e Capo non formano una superchiave; questo giustifica il comportamento riguardo al numero delle tuple.
Join
L'operatore di join indica la correlazione dei dati contenuti in relazioni diverse, confrontando i valori contenuti in esse e usando quindi la caratteristica fondamentale del modello, quella di essere basato su valori.
Esistono due versioni dell'operatore, riconducibili l'una all'altra:
- Join naturale, utile per riflessioni di tipo astratto;
- Theta-join, più...
somma dei gradi dei due operandi, perché gli attributi omonimi degli operandi compaiono una sola volta nel risultato.
Esempio. Siano date le seguenti relazioni e il join su di esse:
r r1 2 Reparto Reparto Capo Impiegato Rossi Vendite Produzione Mori Neri Produzione Vendite Bruni Bianchi Produzione
r r1 2 Reparto Capo Impiegato Rossi Vendite Bruni Neri Produzione Mori Produzione Mori Bianchi
È molto frequente eseguire join sulla base di valori della chiave di una delle relazioni coinvolte, esplicitando i riferimenti fra tuple che sono realizzati per mezzo di valori, soprattutto valori di chiave.
In molti di questi casi è anche definito, fra gli attributi coinvolti, un vincolo di integrità referenziale. Si considerino per esempio le seguenti relazioni:
Infrazioni Data Ag Art Prov Numero Codice 12345 2015-05-12 123 12 AN 11111 2346 2015-05-13 124 14 AN 11111 2347 2015-05-13 124 14 AN 22221 2348 2015-05-14 124 15 MC 22221 2349 2015-05-14 125 14 MC 22225 0 Algebra e Calcolo
RelazionaleAutoNumero Proprietario IndirizzoProvAN 2222 Verdi Piero Via Tigli3333 Verdi Piero Via TigliANAN 1111 Bini Luca Via Aceri2222 Luci Gino Via AceriMC nƒ rzonSi nota che ciascuna delle tuple di si combina conAto:una e una sola delle tuple di Pro Nmero Ato;Una sola perché e formano una chiave di Almeno una perché è definito il vincolo di integrità referen-Pro Nmero nƒ rzonziale fra e in e (la chiave primariaAto.di)Il join, quindi, ha esattamente tante tuple quante la relazionenƒ rzon:
./Infrazioni AutoData Ag Art Prov Numero Proprietario IndirizzoCodice12345 2015-05-12 123 12 AN 1111 Bini Luca Via Aceri12346 2015-05-13 124 14 AN 1111 Bini Luca Via Aceri12347 2015-05-13 124 14 AN 2222 Verdi Piero Via Tigli2015-05-14 124 15 MC 2222 Luci GIno Via Aceri12348 2015-05-14 125 14 MC 2222 Luci Gino Via Aceri12349
3.5.2 Join completi e incompletiSe ciascuna tupla di ciascuno degli
operandi contribuisce ad almeno una tupla del risultato, il join si dice completo. Sarebbe a dire: X(∃t ./ (t[ ] = ))∈ ∈r r r t∀t 1 1 1 2 1 1X(∃t ./ (t[ ] = ))∈ ∈r r r t∀t 2 2 1 2 2 2
Se alcune tuple degli operandi non contribuiscono al risultato, il join si dice incompleto: una delle due relazioni non contiene tuple con gli stessi valori sull'attributo comune. Tali tuple vengono chiamate dangling. L'esempio seguente rappresenta un join incompleto:
./3.5 Join 51 r r 1 2 Impiegato Reparto Reparto Capo Rossi Vendite Produzione Mori Produzione Acquisti Bruni Neri Bianchi Produzione ./r r 1 2 Impiegato Reparto Capo Neri Produzione Mori Bianchi Produzione Mori
Come casi limite è possibile che nessuna delle tuple degli operandi sia combinabile (si ha la relazione vuota) o che ciascuna delle tuple di ciascuno degli operandi sia combinabile con tutte le tuple dell'altro (si hanno tuple).
|r | × |r | 1 2
Ricapitolando, il join di operandi contribuisce ad almeno una tupla del risultato, il join si dice completo. Se alcune tuple degli operandi non contribuiscono al risultato, il join si dice incompleto.
contiene un numero di tuple 12|r | × |r |.compreso fra 0 e Inoltre:12 r r
Se il join di e è completo, allora contiene almeno un12 |r | |r |;numero di tuple pari al massimo fra e12X X X( ) ∩ r r
Se contiene una chiave per e, allora il join di12 2 1 1X( ) |r |re contiene al più tuple;2 2 1X X ∩ r
Se contiene una chiave per e e sussiste il vincolo di12 2X X∩ rriferimento tra (o un suo sottoinsieme) in e la chia-12 1 1 2 2|r | tuple.
13.5.3 Join esterno
La caratteristica del join di “tralasciare” le tuple di una rela-zione senza controparte nell’altra può essere non voluta in alcunicasi, in quanto può portare a omettere informazioni rilevanti.
Allo scopo esiste una variante chiamata join esterno che pre-vede che tutte le tuple diano un contributo al risultato, even-tualmente estese con valori nulli ove non vi siano contropartiopportune.
Esistono tre varianti
Per l'operatore:
- Il join esterno sinistro, che estende solo le tuple del primo operando;
- Il join esterno destro, che estende solo le tuple del secondo operando;
- Il join completo, che le estende tutte.
Esempio. Siano considerate le seguenti relazioni e i diversi join esterni su di esse:
r Reparto Capo Rossi Vendite Neri Produzione Bianchi Produzione rLEFT Reparto Capo Impiegato Rossi Vendite NULL Neri Produzione Mori Produzione Bianchi Produzione NULL rRIGHT Reparto Capo Impiegato Neri Produzione Mori Produzione Bianchi Produzione NULL Acquisti Bruni rFULL Reparto Capo Impiegato Rossi Vendite NULL Produzione Mori Neri Bianchi Produzione Mori NULL Acquisti Bruni
3.6 Join intersezione, prodotto cartesiano
Il join è commutativo e associativo, pertanto si possono scrivere join in cascata omettendo le parentesi. Una notazione alternativa è:
nè=1./ r
Per quanto riguarda gli insiemi di attributi:
X X= Se sono uguali, cioè , allora il join coincide con l'intersezione: X X X X( ) ./ ( ) = ( ) ( )∩r r r r1 1 2 2 1 1 2 2
X X = ∩Se sono disgiunti, cioè ∅, il join diventa una sorta di prodotto cartesiano: contiene le tuple ottenute combinando, in tutti i modi possibili, le tuple degli operandi. Infatti: X X– Il risultato è sempre definito sull'unione ;1 2– Ciascuna tupla deriva sempre da due tuple, una per ciascuno degli operandi;– Poiché tali tuple non hanno attributi in comune, non viene richiesta a esse nessuna condizione per partecipare insieme al join:* La condizione che le due tuple debbano avere gli stessi valori sugli attributi comuni degenera in una condizione sempre verificata.
Il caso della join come prodotto cartesiano è così esemplificato: MPEGAT PROGETTProgetto Codice NomeImpiegatoRossi A A VenereA B
MarteNeriNeri B ./MPEGAT PROGETTImpiegato Reparto Codice NomeRossi A A VenereNeri A A VenereNeri B A A VenereRossi A B MarteNeri A B MarteNeri B B Marte54 Algebra e Calcolo Relazionale3.7 Theta-join ed equi-joinUn prodotto cartesiano concatena tuple non necessariamen-te correlate dal punto di vista semantico. Perciò si rende utilefarlo seguire da una selezione, che centra l’attenzione su tuplecorrelate secondo le esigenze.Per questa ragione viene definito un operatore derivato (cioètheta-join:esprimibile per mezzo di altri operatori), ilDefinizione. theta-join r rSi definisce di e per mezzo1 2Fdella formula in questa maniera:./ = (r ./ )r r σ rF F1 2 1 2dove: F è una formula proposizionale utilizzabile in una selezio-ne; r rLe relazioni e non hanno attributi in comune.1 2Per esempio:MPEGAT PROGETTImpiegato Progetto Codice NomeRossi A A VenereNeri A B MarteBNeri ./MPEGAT PROGETTProgetto=CodiceReparto Codice
NomeImpiegatoRossi A A VenereNeri A A VenereNeri B B MarteDefinizione. equi-joinUn è un theta-join in cui: FLa condizione di selezione è una congiunzione di atomidi uguaglianza. . .3.8 Interrogazioni in algebra relazionale 55 . . . con un attributo della prima relazione e uno dellaseconda.L’esempio appena visto è in effetti un equi-join.3.8 Interrogazioni in alge-bra relazionaleUn’interrogazione