Anteprima
Vedrai una selezione di 10 pagine su 189
Appunti Basi di dati Pag. 1 Appunti Basi di dati Pag. 2
Anteprima di 10 pagg. su 189.
Scarica il documento per vederlo tutto.
Appunti Basi di dati Pag. 6
Anteprima di 10 pagg. su 189.
Scarica il documento per vederlo tutto.
Appunti Basi di dati Pag. 11
Anteprima di 10 pagg. su 189.
Scarica il documento per vederlo tutto.
Appunti Basi di dati Pag. 16
Anteprima di 10 pagg. su 189.
Scarica il documento per vederlo tutto.
Appunti Basi di dati Pag. 21
Anteprima di 10 pagg. su 189.
Scarica il documento per vederlo tutto.
Appunti Basi di dati Pag. 26
Anteprima di 10 pagg. su 189.
Scarica il documento per vederlo tutto.
Appunti Basi di dati Pag. 31
Anteprima di 10 pagg. su 189.
Scarica il documento per vederlo tutto.
Appunti Basi di dati Pag. 36
Anteprima di 10 pagg. su 189.
Scarica il documento per vederlo tutto.
Appunti Basi di dati Pag. 41
1 su 189
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

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:

  1. Join naturale, utile per riflessioni di tipo astratto;
  2. Theta-join, più...
Il join naturale è un operatore (definito inizialmente in versione binaria ma generalizzabile a più operandi) che correla dati in relazioni diverse sulla base di valori uguali in attributi con lo stesso nome. Definizione: Il join naturale tra le relazioni r e t è una relazione definita su r ∪ t (cioè sull'unione degli insiemi r e t) come segue: r ⨝ t = {t | t ∈ r ∧ t ∈ t} La definizione asserisce che le tuple del risultato sono ottenute combinando tuple degli operandi con valori uguali sugli attributi comuni. Indicando infatti con r.1,2 gli attributi comuni (cioè l'intersezione degli attributi di r e t), si ha: r ⨝ t = {t | t ∈ r ∧ t ∈ t ∧ t.r.1,2 = t.t.1,2} Il grado della relazione ottenuta come risultato di un join è minore o uguale della somma dei gradi delle relazioni operandi.

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ƒ rzonSi nota che ciascuna delle tuple di si combina conAto:una e una sola delle tuple diˆ Pro Nmero Ato;Una sola perché e formano una chiave diˆ Almeno una perché è definito il vincolo di integrità referen-Pro Nmero nƒ rzonziale fra e in e (la chiave primariaAto.di)Il join, quindi, ha esattamente tante tuple quante la relazionenƒ rzon:

./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:

  1. Il join esterno sinistro, che estende solo le tuple del primo operando;
  2. Il join esterno destro, che estende solo le tuple del secondo operando;
  3. 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: MPEGAT PROGETTProgetto Codice NomeImpiegatoRossi A A VenereA B

MarteNeriNeri B ./MPEGAT PROGETTImpiegato 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:MPEGAT PROGETTImpiegato Progetto Codice NomeRossi A A VenereNeri A B MarteBNeri ./MPEGAT PROGETTProgetto=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

Dettagli
Publisher
A.A. 2021-2022
189 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher univpm-Luca di informazioni apprese con la frequenza delle lezioni di Basi di dati e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università Politecnica delle Marche - Ancona o del prof Potena Domenico.