Definizione di Chiave Una chiave di una relazione è un attributo o un insieme di attributi che identifica univocamente una tupla

Dati uno schema di relazione R e un insieme F di dipendenze funizonali, un sottoinsieme K di uno schema di relazione R è una chiave di R se:

  • (se soddisfa solo questo punto è una superchiave)
  • non esiste un sottoinsieme proprio di di tale che

Cos’è uno schema di relazione? Uno schema di relazione R è un insieme di attributi

Cos’è un’istanza di uno schema? Dato uno schema di relazione R una istanza di R è un insieme di tuple su R

Cos’è una tupla? Una tupla t su R è una funzione che associa ad ogni attributo in R un valore nel corrispondente dominio dom()

Definizione di Dipendenza funzionale Dato uno schema di relazione R una dipendenza funzionale su R è una coppia ordinata di sottoinsiemi non vuoti X ed Y di R e viene denotata come .

  • X determina funzionalmente Y  
  • Y dipende funzionalmente da X 
  • X = parte sinistra della dipendenza o determinante 
  • Y = parte destra della dipendenza o dipendente

Cosa vuol dire che un’istanza r soddisfa la dipendenza X → Y? Diciamo che un’istanza r di R soddisfa la dipendenza funzionale se per ogni coppia di tuple e di r si ha che se allora

Le dipendenze funzionali servono ad esprimere dei vincoli su dei dati

Quali sono le dipendenze funzionali banali? Se è detta banale

Quale proprietà è possibile derivare dal concetto di dipendenze funzionali banali?

Cosa vuol dire che un’istanza di R è legale? Dati uno schema di relazione R e un insieme F di dipendenze funzionali, un’istanza di R è legale se soddisfa tutte le dipendenze in F.

Dato uno schema di relazione R e un insieme F di dipendenze funzionali su R ci sono delle dipendenze funzionali che non sono in F, ma che sono soddisfatte da ogni istanza legale di R

Qual è la definizione di chiusura di un insieme di dipendenze funzionali? Dato uno schema di relazione R e un insieme F di dipendenze funzionali su R, la chiusura di F è l’insieme delle dipedenze funzionali che sono soddisfatte da ogni istanza legale di R

Si esprime con la notazione

**Che rapporto esiste tra e

Introduzione di Denotiamo con l’insieme di dipendenze funzionali definito nel modo seguente:

  • se allora
  • se allora assioma della riflessività
  • se allora , assioma dell’aumento
  • se e allora assioma della transitività

Dimostreremo che , cioè che la chiusura di un insieme di dipendenze funzionali F può essere ottenuta a partire da F applicando ricorsivamente gli assiomi della riflessività, dell’aumento e della transitività, conosciuti come assiomi di Armstrong

Conseguenze degli assiomi di Armstrong Queste tre regole che introduciamo ci consentono di derivare da dipendenze funzionali in altre dip. funz. in

  • se e allora regola dell’unione
  • se e allora regola della decomposzione
  • se e allora regola della pseudotransitività

Dimostazioni delle conseguenze degli assiomi

Chiusura di un insieme di attributi Definizione Siano R uno schema di relazione, F un insieme di dipendenze funzionali su R e X un sottoinsieme di R. La chiusura di X rispetto ad F, denotata con , o semplicemente con , è definita nel modo seguente

In pratica fanno parte della chiusura di un insieme di attributi X tutti quelli che sono determinati funzionalmente da X eventualmente applicando gli assiomi di Armstrong

(riflessività) o uguale alla sua chiusura se X non determina nessun’altro attributo

Lemma 1 Siano R uno schema di relazione ed F un insieme di dipendenze funzionali su R. Si ha che: se e solo se

Dimostazione Sia Parte del se Poichè , per ogni si ha che Pertanto, per la regola dell’unione,

Parte del solo se Poichè , per la regola della decomposizione si ha che, per ogni cioè , per ogni e quindi

Teorema Dimostreremo che , cioè che la chiusura di un insieme di dipendenze funzionali F può essere ottenuta a partire da F applicando ricorsivamente gli assiomi della riflessività, dell’aumento e della transitività, conosciuti come assiomi di Armstrong.

Dimostrazione Dimostro che i due insiemi sono uguali dimostrando la doppia inclusione

Prima Parte

Sia una dipendenza funzionale in . Dimostro che per induzione sul numero i di applicazioni di uno degli assiomi di Armstrong

CASO BASE In tal caso perchè per definizione contiene tutte le dip. funz di

i = i-1 IPOTESI INDUTTIVA Per l’ipotesi induttiva ogni dipendenza funzionale ottenuta a partire da F applicando gli assiomi di Armstrong un numero di volte minore o uguale a i–1 è in

soddisfatto da ogni istanza legale

i PASSO INDUTTIVO Bisogna dimostrare che la proprietà vale qualsiasi sia l’assioma applicato

  1. Riflessività è stata ottenuta applicando l’assioma della riflessività. In tal caso . Sia r un’istanza di R e siano siano e due tuple di r tali che banalmente si ha

Spiegazione Questa parte della dimostrazione sta verificando che se una dipendenza funzionale   è stata ottenuta applicando la riflessività, allora essa è valida in ogni istanza e quindi appartiene a . Dato che , significa che ogni attributo in Y è già contenuto in X, quindi se e hanno gli stessi valori per , avranno automaticamente gli stessi valori anche per Y (perchè gli attributi sono inclusi in X)

  1. Aumento è stata ottenuta applicando l’assioma dell’aumento ad una dipendenza funzionale in , ottenuta a sua volta applicando ricorsivamente gli assiomi di Armstrong un numero di volte minore o uguale a (quindi per ipotesi induttiva ) Per costruzione dell’assioma e devono essere stati creati aggiungendo un insieme Z agli insiemi di partenza quindi possiamo porre e , con . Sia r un’istanza legale di R e siano e due tuple di r tali che , banalmente si ha che e . Usando l’ipotesi induttiva, da segue Da e otteniamo che da cui segue che

  2. Transitività è stata ottenuta applicando l’assioma della transitività a due dipendenze funzionali e , ottenute a loro volta applicando ricorsivamente gli assiomi di Armstrong un numero di volte minore o uguale a (quindi per ipotesi induttiva e )

Sia r un’istanza legale di R e siano e due tuple di r tali che . Per ipotesi induttiva da segue , ancora per ipotesi induttiva segue

Seconda Parte

Per dimostrare questa parte si suppone per assurdo che esista una dip. funzionale tale che Useremo una particolare istanza legale di R per dimostrare che questa supposizione porta ad una contraddizione.

Consideriamo la seguente istanza r di R

In questa istanza ci sono solo due tuple, uguali su e diverse su

Dimostriamo che l’istanza è legale. Utilizzando questa istanza dimostreremo che se avremo necessariamente

Spiegazione Nella dimostrazione per assurdo (in cui si prova che  ), il ragionamento consiste nel costruire un’istanza  r  che è legale rispetto a  , ma che viola una dipendenza funzionale specifica    che appartiene a    ma non a 

In pratica:

  • Gli attributi di    (determinati da  ) sono uguali tra le tuple   e  , perché questo garantisce che l’istanza rispetta le dipendenze in 
  • Gli attributi di   (non determinati da   in ) possono essere arbitrari, proprio perché  non include . Di conseguenza, la costruzione è legale rispetto a .

Contraddizione Alla fine, si mostra che, nonostante la costruzione dell’istanza,  deve comunque essere soddisfatta anche se non era esplicitamente in  . Questo significa che  non può includere dipendenze funzionali che   non ha già, e quindi 

Dimostrazione vera e propria Mostriamo che:

  1. r è un’istanza legale di R (quindi soddisfa tutte le dipendenze in ) Sia una dipendenza funzionale in F

Caso tuple diverse su V Se le due tuple sono diverse su V, allora la dipendenza è soddisfatta, perchè non si richiede nulla sulle componenti W quando le tuple sono già diverse su V

Caso tuple uguali su V Ricordiamo che l’istanza di r è stata costruita in modo tale che:

  1. le due tuple sono uguali solo sugli attributi in
  2. gli attributi al di fuori di possono essere diversi

Dato che le due tuple sono uguali su V, ne consegue che , perchè le tuple sono uguali solo su quell’insieme di attributi. Per il Lemma 1 si ha che se , allora , per l’assioma della transitività inoltre dato che e , allora , quindi, sempre per il Lemma 1 quindi le tuple sono uguali anche sui valori di W. Quindi è soddisfatta e possiamo dunque dire che r è un’istanza legale poichè qualsiasi dipendenza in F è soddisfatta da r.

  1. Abbiamo dimostrato che r è un’istanza legale, ora mostriamo che Poichè le dipendenze in sono soddisfatte da ogni istanza legale allora r soddisfa Abbiamo due tuple uguali su X? Si poichè (per l’assioma della riflessitività e il Lemma 1) le due tuple di r coincidono sugli attributi di X, quindi poichè soddisfa , devono coincidere anche sugli attributi di Y. Questo implica che e per il Lemma 1 che

Note importanti usate per la dimostrazione:

  • Se un’istanza è legale allora soddisfa anche tutte le dipendenze in , anche perchè la definizione di è proprio l’insieme delle dipendenze soddisfatte da un’istanza legale
  • , che come abbiamo visto equivale a dire che e in particolare che deve essere soddisfatta da ogni istanza legale

Perchè è esponenziale il calcolo di ? Il calcolo di (e quindi anche di ) richiede tempo esponenziale poichè ogni possibile sottoinsieme di R porta a una o più dipendenze, e i possibili sottoinsiemi sono dove n è il numero di attributi in R. Quindi là complessità è legata alle dimensioni di R perchè il numero di sottoinsiemi di R cresce esponenzialmente.

Definizione di 3NF Dati uno schema di relazione R e un insieme di dipendenze funzionali F su R, R è in 3NF se

  • A appartiene ad una chiave (è primo) oppure
  • X contiene una chiave (è una superchiave)

Nota La condizione è importante, poichè per l’assioma della riflessività, se , avremo sempre , anche quando A non è primo e X non è superchiave, se considerassimo queste dipendenze nessuno schema risulterebbe essere in 3NF

Dipendenze parziali e transivite Siano R uno schema di relazione e F un insieme di dipendenze funzionali su R

è una dipendenza parziale su R se A non è primo ed X è contenuto propriamente in una chiave di R

Esempio Ad un numero di matricola corrisponde un solo cognome Matr Cogn Ad una coppia costituita da un numero di matricola e da un codice di corso corrisponde un solo cognome Matr C# Cogn. Quest’ultima dipendenza funzionale è una conseguenza della dipendenza funzionale Matr Cogn e viene detta dipendenza parziale

è una dipendenza transitiva su R se A non è primo e per ogni chiave K di R si ha che X non è contenuto priopriamente in K e

Esempio Studente (Matr, CF, Cogn, Nome, Data, Com, Prov)

Ad un numero di matricola corrisponde un solo comune di nascita: Matr Com Un comune si trova in una sola provincia: Com Prov

Quindi ad un numero di matricola corrisponde una sola provincia: Matr Prov

Matr Prov viene detta dipendenza transitiva

Definizioni Alternative di 3NF

  1. Dato uno schema R e un insieme di dipendenze funzionali F, R è in 3NF se e solo se non ci sono attributi che dipendono parzialmente o transitivamente da una chiave.

Definizioni A dipende parzialmente da una chiave K se tale che con e tale che e A non è parte di chiave

A dipende transitivamente da una chiave K se tale che e e X non è una chiave e A non è parte di una chiave

  1. Dato uno schema R e un insieme di dipendenze funzionali F su R, R è in 3NF se e solo se in F non ci sono né dipendenze parziali né dipendenze transitive.

Forma Normale di Boyce-Codd È una forma più restrittiva rispetto alla 3NF

Definizione Una relazione è in forma normale Boyce-Codd (BCNF) quando in essa ogni determinante è una superchiave

Una relazione che rispetta la forma Boyce-Codd rispetta la 3NF, ma non vale necessariamente l’opposto.

Nota Può non essere possibile decomporre uno schema non BCNF ottenendo sottoschemi BCNF e preservando allo stesso tempo tutte le dipendenze, mentre questo è sempre possibile per la 3NF

Decomposizione Quando si decompone uno schema per ottenerne uno in 3NF occorre tenere presenti altri due requisiti dello schema decomposto:

  • la decomposizone deve preservare le dipendenze funzionali che valgono su ogni istanza legale dello schema originario
  • bisogna assicurarsi che il join delle istanze risultanti dalla decomposizione non riveli perdita di informazione, per perdita non si intende necessariamente informazioni in meno, ma anche aggiunta di informazioni estranee

Le dipendenze funzionali che si vogliono preservare sono tutte quelle che sono soddisfatte da ogni istanza legale di R, cioè le dipendenze funzionali in F+, quindi si è interessati al calcolo di , ma questo richiede tempo esponenziale in

Algortimo - Calcolo della chiusura di un insieme di attributi X (continuo della parte precedente)

Fortunatamente per i nostri scopi è sufficiente avere un metodo per decidere se una dipendenza funzionale X (cioè alla chiusura di un insieme di dipendenze). Questo può essere fatto calcolando e verificando se . Questo perchè ricordando il Lemma 1, se e solo e

Per il calcolo della chiusura dell’insieme di attributi X, denotata con , possiamo usare il seguente algoritmo.

Il calcolo di è utile in diversi casi:

  • verificare le condizioni perchè un insieme di attributi sia chiave di uno schema
  • verificare se una decomposizione preserva le dipendenze funzionali dello schema originario

Riga di S: si inseriscono in S i signoli attributi che compongo le parti destre delle dipendenze in F la cui parte sinistra è contenuta in Z. Da questi poi ne aggiungiamo altri per transitività

la condizione di fermata è quando S è già tutto contenuto in Z

Dimostrazione Teorema Calcolo di Nel file “Chiusura di un Insieme di Attributi”

Test di unicità della chiave Dati uno schema di relazione R e un insieme di dipendenze funzionali F, per vedere se c’è un’unica chiave di R c’è un controllo che può essere fatto.

Calcoliamo l’intersezione degli insiemi con Se l’intersezione di questi insiemi determina tutto R, allora questa intersezione è l’unica chiave di R

Esempio R = ABCDE

= ABCDE - (C - AB) = ABCDE - C = ABDE = ABCDE - (B - AC) = ABCDE - B = ACDE = ABCDE - (E - B) = ABCDE - E = ABCD

Facendo l’intersezione tra otteniamo AD Notiamo che la chiusura di AD non determina tutto R, infatti = AD Quindi capiamo che non esiste un’unica chiave di R, ma ne esistono tante


Decomposizioni che Preservano le Dipendenze

Uno schema che non è in 3NF può essere decomposto in più modi in un insieme di schemi in 3NF.

Uno schema di relazione solitamente viene decomposto quando:

  • non è in 3NF
  • si vuole migliorare l’efficienza degli accessi

Uno schema che non è in 3NF può essere decomposto in più modi in un insieme di schemi in 3NF, ma abbiamo visto che quando uno schema viene decomposto, non basta che i sottoschemi siano in 3NF

Per formalizzare il concetto di decomposizione che preserva un insieme di dipendenze funzionali iniziamo con la definizione di decomposizione di uno schema di relazione

Definizione di Decomposizone di uno Schema di Relazione Sia R uno schema di relazione. Una decomposizione di R è una famiglia di sottoinsiemi di R che ricopre R

In altre parole: se lo schema R è composto da un certo insieme di attributi, decomporlo significa definire dei sottoschemi che contengono ognuno un sottoinsieme degli attributi di R. I sottoschemi possono avere attributi in comune, e la loro unione deve necessariamente contenere tutti gli attributi di R.

Warning

Una volta ottenuti i sottoschemi bisogna verificare se queste decomposizioni preservano tutte le dipendenze funzionali e forniscono un join senza perdita

Definizone di Equivalenza tra due Insiemi di Dipendenze Funzionali Due insiemi di dipendenze funzionali F e G sono equivalenti se hanno la stessa chiusura

quindi bisogna verificare che e che

Tuttavia calcolare la chiusura di un insieme di dipendenze funzionali richiede tempo esponenziale. Il seguente lemma ci permette però di verificare l’equivalenza dei due insiemi di dipendenze funzionali in tempo polinomiale

Lemma 2 (Con Dim) Il Lemma 2 viene anche chiamato Lemma su chiusure

Siano F e G due insiemi di dipendenze funzionali. Se allora

Dimostrazione Sia (cioè una dipendenza in che non compare in ) Per il Teorema , è derivabile da F mediante gli assiomi di Armstrong. Dato che significa che ogni dipendenza in F è già presente all’interno di , ma se questo è vero allora ogni dipendenza che può essere dedotta a partire da una dipendenza funzionale in F è già presente all’interno di . Per questo motivo è sufficiente considerare F

Cosa significa che una decomposizione preserva un insieme di dipendenze funzionali? Definizione Sia R uno schema di relazione, F un insieme di dipendenze funzionali su R e una decomposizione di R Diciamo che preserva F se dove