Please enable JavaScript.
Coggle requires JavaScript to display documents.
Algebra e calcolo relazione (Viste (Tipi (Materializzate: relazioni…
Algebra e calcolo relazione
Algebra relazionale (linguaggio procedurale)
Insieme di operatori, definiti su relazioni. Producono relazioni
Operatori
Unione, intersezione, differenza
Le relazioni sono insiemi. Ha senso parlare di operazioni insiemistiche
Effettuabili su coppie di operandi definite sugli stessi attributi
Unione: è una relazione su X (attributi) contenente le tuple appartenenti a r1,r2 oppure a entrambe
Intersezione: è una relazione su X contenente le tuple che appartengono sia a r1 sia a r2
Differenza: è una relazione su X contenente le tuple che appartengono a r1 ma non a r2
Ridenominazione: adegua i nomi degli attributi (li rinomina) per facilitare le operazioni insiemistiche
Sia r una relazione definita sull'insieme di attributi X e sia Y un altro insieme di attributi con la stessa cardinalità. Inoltre siano A1,A2...Ak e B1, B2....Bk rispettivamente un ordinamento per X e per Y. Allora la ridenominazione contiene una tuple t' in r, ovvero t' è una tupla su Y e t'[Bi] = t[Ai], per i = 1...j. Saranno indicati solo gli attributi che verranno rinominati. In caso di ridenominazione di più attributi, l'ordine è importante
Selezione
Produce un sottoinsieme delle tuple (tutti gli attributi). Genera decomposizioni orizzontali. Viene indicata con il simbolo della varianza avente come pedice la "condizione di selezione" che deve essere soddisfatta
Viene restituito un insieme di tuple che soddisfano la condizione
Le condizioni prevedono confronti tra attributi e attributi e costanti. Sono previsti i connettivi logici
Definizione: data una relazione r(X), una formula proposizionale F su X è una formula ottenuta combinando con i connettivi, condizioni atomiche del tipo A 0 B dove
0 è un operatore di confronto
A e B sono attributi in x
c è una costante compatibile con il dominio di A
Proiezione
Data una relazione r(X) e un sottoinsieme Y di X, la proiezione di r su Y (indicata con il simbolo pigreco) è l'insieme di tuple su Y ottenute dalle tuple di r considerando solo i valori su Y: proiezione (r) = {t[Y] | t € r}
Produce un sottoinsieme di attributi. Genera decomposizioni verticali (complementare alla selezione)
Capita che alcune proiezioni diano valori uguali. Ciò collassano in una sola tupla. In generale possiamo dire che il risultato di una proiezione contiene al più tante tuple quanto l'operando.
La proiezione contiene lo stesso numero di tuple di r se e solo se Y è superchiave di r
Join
Correla dati su relazioni diverse confrontandone i valori
Tipi
Join naturale (interno)
Correla dati su diverse relazioni sulla base di valori uguali in attributi con lo stesso nome
t su X1, X2 | esistono t1 € R1 e t2 € R2 con t[X1] = t1 e t[X2] = t2
Join incompleti: quando una tupla non contribuisce al risultato (dangling)
Casi limite: nessuna tupla contribuisce oppure tutte contribuiscono
Cardinalità
In genere è un numero compreso tra 0 e il prodotto tra R1 e R2
Se R2 ha una chiave allora avremo un numero compreso tra 0 e R1
Se R2 ha una chiave ed un vincolo di integrità referenziale allora avremo esattamente R1
Theta join
Prodotto cartesiano (join naturale su relazioni senza attributi in comune) tra due relazioni seguito da una selezione. Composto da una F formula (condizione)
Cardinalità: prodotto delle cardinalità degli operandi (tutte tuple combinabili)
Equi join = theta join con la formula di uguaglianza
Join esterno: estende, con valori nulli, le tuple tagliate fuori dall'inner join
Tre versioni
Sinistro: considera le tuple del primo operando
Destro: considera le tuple del secondo operando
Completo: considera tutte le tuple
Interrogazioni in algebra relazionale
Definita come una funzione applicata a istanze di BD produce relazioni
Espressioni equivalenti: consentono di semplificare la notazione delle interrogazioni o permettono di ridurre i costi di esecuzione di una interrogazione
Valori nulli: utilizziamo valori sintattici IS NULL, per indicare il valore vero se una tupla e nulla, falso altrimenti; IS NOT NULL per indicare il valore vero se una tupla non è nulla, falso altrimenti
Viste
Relazioni derivate: relazioni il cui contenuto è funzione del contenuto di altre relazioni
E' possibile che una di queste sia funzione di altre relazioni derivate solo se esiste un ordinamento fra le relazioni
Rappresentazioni diverse per gli stessi dati (schema esterno)
Relazioni di base: contenuto autonomo
Tipi
Materializzate: relazioni memorizzate nella base di dati. Sono immediatamente disponibili per le interrogazioni ma appesantiscono gli aggiornamenti e possono essere ridondanti
Relazioni virtuali (viste): definite per messo di interrogazioni (vengono ricalcolate ogni volta)
Perché utilizzarle
Ogni utente vede solo ciò che gli interessa e ciò che è autorizzato a vedere (protezione)
Strumento di programmazione, semplifica la scrittura di interogazioni
Utili per le interrogazioni ma non pratiche per gli aggiornamenti
Calcolo relazionale
Famiglia di linguaggi dichiarativi, basati sul calcolo dei predicati di primo ordine
Due tipi
Calcolo relazionale su domini
Forma: {A1: x1....,Ak: xk | f}, f è una formula; A1:x1 ...., Ak:xk, target list; le A sono attributi mentre le x sono variabili (distinti/e)
Risultato: relazione su A1....Ak che contiene tuple per x1,...xk che rendono vera la f
Pregi: dichiaratività; Difetti: verbosità ed espressioni senza senso dipendenti dal dominio
Calcolo relazionale su tuple con dichiarazione di range
Utilizzato per ridurre le variabili (una variabile per ciascuna tupla), ed ottenimento dei valori dal DB e non dai domini
Forma: {TargetList | RangeList | Formula}
RangeList elenca variabili libere con il relativo campo di variabilità
TargetList ha elementi del tipo Y:x.Z (oppure x.Z o anche x.*)
Formula ha atomi di confronto x.A O c, x.A O y.B; connettivi; quantificatori che associano un range alle variabili Ex(R)(...) e PEROGNIx(R)(...)