giovedì, settembre 18, 2008

Basi di dati: Algebra relazionale

Linguaggi procedurali, operazioni su insiemi e su relazioni

Il risultato di un'interrogazione é sempre una relazione

Gli operatori si distinguono in fondamentali e derivati (derivabili dalla composizione di più operatori fondamentali)

Operatori Insiemistici

Unione (fondamentale): funziona se le due relazioni hanno schemi con lo stesso grado, stesso nome e dominio degli attributi

Compatibilità all'unione: viene accettato solo se le relazioni hanno schemi con lo stesso grado e dominio

In caso di valori presenti in entrambe le relazioni vengono prese una volta sola

Differenza (fondamentale): NON COMMUTATIVA!

r-s Il risultato é una relazione che contiene le ennuple di r ad eccezione di quelle presenti in s

Intersezione (derivato): che potrei esprimere come differenza intersezione tra r e s = r-(r-s)

Unari

Selezione (σ) (fondamentale): rende una relazione contenente solo le ennuple che soddisfano i criteri richiesti con gli attributi richiesti

I criteri vengono espressi mediante una formula proposizionale

Nelle formule proposizionali posso usare nomi di attributo, costanti, operatori di confronto e operatori logici (AND OR NOT)


Ridenominazione (ρ): Cambia nome ad un attributo.

Esempio: ρNuovonome←Nome(Tabella)


Proiezione (π) (fondamentale): riduce il numero di attributi della relazione operando senza alterare le ennuple

La cardinalità potrebbe variare (potrebbero esserci duplicati presi una sola volta se non é compresa una sottochiave)


Binari

Prodotto Cartesiano (fondamentale): consente di combinare ennuple in relazioni diverse

Le due relazioni operando non devono avere attributi comuni schemi disgiunti)

Contiene tutte le possibili combinazioni di tutte le ennuple

Cardinalità: prodotto delle cardinalità, grado = somma degli gradi


Teta Join (θ) (derivato): Come prodotto cartesiano, ma nel risultato ci sono solo le ennuple che hanno un significato dal punto di vista della combinazione logica

Se l'operatore per la combinazione logica é l'uguale allora prende il nome di equijoin


Esempio: tesista JOIN professore ON Relatore = CognomeP AND EtaT > EtaP


Sono joinable le ennuple che partecipano al join (hanno un record dall'altra parte), sono dangling (pendenti) le altre. Un join si dice completo se non ha record dangling

Natural Join (derivato): Come Teta Join, ma prende solo una volta gli attributi comuni (se ho Nome da entrambe le parti lo prende da una sola parte). Ovviamente gli attributi con lo stesso nome si intendono automaticamente parte di una Equijoin


Divisione (derivato):

Una delle relazioni deve avere gli attributi che siano un sottoinsieme dell'altra... Simbolo: ÷

Il risultato é una relazione che contiene gli attributi NON comuni. Le ennuple prese sono quelle che hanno un riferimento per tutte le righe della relazione-sottoinsieme



Outer Join (derivato):

Come la teta join, ma prende anche ennuple dangling mettendo null degli altri valori.

Left outer join: prende tutte le ennuple della prima relazione ed eentuali corrispondenze (oppure NULL per quei valori)

Right outer join: prende tutte le ennuple della seconda relazione

Full outer join: prende le ennuple di entrambe le relazioni


Riepilogo simboli:



Nessun commento: