Cosa viene Chiesto
Per Algebra Relazionale tutto tranne:
- dimostrazione di correttezza dell’algoritmo per il calcolo della chiusura di X rispetto a G (dove G è l’insieme di dipendenze che risulta da una decomposizione) quindi NON si dimostra la parte la parte X+ rispetto a G contenuto in Z finale
- non si dimostrano le proprietà di mρ(r) ma bisogna AVER CAPITO la sua relazione con r
- parte se della dimostrazione di correttezza dell’algoritmo che verifica il join senza perdita, quindi non si dimostra che se la tabella finale ha una riga di tutte allora il join è senza perdita
- dimostrazione della parte aggiunta all’algoritmo di decomposizione, quindi non si dimostra che aggiungendo uno schema con una chiave si ottiene un join senza perdita
Per l’organizzazione fisica occorre dimostrare di aver compreso le caratteristiche delle varie strutture ed essere in grado di dimostrare i costi delle operazioni.
Per la teoria della concorrenza si dimostra SOLO il teorema del protocollo a 2 fasi, e la correttezza delle regole del timestamp (anche se non c’è un teorema)
OVVIAMENTE non ci sono solo i teoremi, ma anche le definizioni e occorre dimostrare di aver capito i concetti di base … in pratica i concetti che trovate su slide e dispense TRA i teoremi
Algebra Relazionale
Def 0: Obbiettivo della 3NF 🟢
La Terza Forma Normale (3FN) è una regola di normalizzazione dei database relazionali che mira a eliminare ridondanze e anomalie:
- Anomalia di inserimento: si verifica quando si tenta di inserire un nuovo record e si rischia di creare inconsistenze tra i dati esistenti.
- Anomalia di cancellazione: si verifica quando si tenta di cancellare un record e si rischia di creare inconsistenze tra i dati esistenti.
- Anomalia di aggiornamento: si verifica quando si tenta di aggiornare un dato e si rischia di creare inconsistenze tra le diverse copie del dato.
Queste avvengono quando:
- Più concetti: un unica relazione è utilizzata per rappresentare più concetti
- Ridondanza: si verifica quando lo stesso dato è memorizzato più volte in diverse parti del database.
Def 1: Dipendenza Funzionale 🟢
Dato uno schema relazionale
R
, una dipendenza funzionale suR
è una coppia ordinata di sottoinsiemi non vuotiX
eY
diR
.Denominata attraverso , dove:
X
è il determinanteY
è il determinato
Def 1.1: Dipendenza Funzionale Banale 🟢
Una dipendenza funzionale è detta banale se
Y
è un sottoinsieme diX
.
- è banale perché
- è banale
- è banale
Def 1.2: Soddisfare Dipendenza Funzionale 🟢
Si dice che un’istanza
r
diR
soddisfa la dipendenza funzionale se per ogni coppia di tuplet1
et2
abbiamo che:Se allora
oss: un’istanza di
R
è un una tabella che rappresenta le relazione.
Def 1.3: Istanza Legale 🟢
Dati uno schema relazionale
R
e un insieme di dipendenze funzionaliF
.Un’istanza
r
diR
si dice legale se soddisfa tutte le dipendenze funzionali inF
.
Def 1.4: Chiusura F+ 🟢
Dato uno schema relazionale
R
e un insieme di dipendenze funzionaliF
suR
.La chiusura di
F
è denotata con ed indica l’insieme di dipendenze funzionali che sono soddisfatte da ogni istanza legale diR
.oss: ( è contenuto da )
Def 2: Chiave 🟢
Dati un schema relazionale
R
ed un insieme di dipendenze funzionaliF
suR
.Un sottoinsieme
K
diR
si dice chiave se:
Per ogni sottoinsieme proprio
K'
diK
si ha che
Def 3: Attributo Primo e Super-chiave 🟢
Dati uno schema relazionale
R
e un insieme di dipendenze funzionaliF
.
- Un attributo
A
diR
si dice primo se appartiene ad una chiave diR
.- Un sottoinsieme
X
diR
si dice super-chiave se contiene una chiave diR
o alternativamente determina tuttoR
(ovvero la sua chiusura è uguale adR
)
Def 4: Dipendenze Parziali e Transitive 🟢
Siano
R
uno schema relazionale eF
un insieme di dipendenze funzionali e una dipendenza con .La dipendenza si dice parziale se contemporaneamente:
A
non è primoX
è contenuto propriamente da una chiave ( contenuto ma diverso)
oss: se non ci sono dipendenze parziali allora gli attributi che non fanno parte di una chiave sono determinati direttamente dalle chiavi.
La dipendenza si dice transitiva se contemporaneamente:
A
non è primo- per ogni chiave
K
si ha cheX
non è contenuto interamente inK
e a sua voltaX
non contieneK
, ovvero:- e (
X
non contiene nessuna chiave)
oss: non abbiamo dipendenze transitive se gli attributi che non appartengono alla chiave dipendono direttamente dalla chiave e non da altri attributi non chiave.
Vedi: Dipendenze Parziali e Transitive per esempi
Def 5: Schema in 3NF 🟢
Sia
R
uno schema relazionale eF
un insieme di dipendenze funzionali suR
.
R
è in 3NF se per ogni dipendenza funzionale tale che si ha che:
X
è una superchiave, oppure
A
è primooss: non vanno controllate le dipendenze funzionali banali ovvero ()
Teo 1: 3NF = no parziali e no transitive 🟢
Sia
R
uno schema relazionale eF
un insieme di dipendenze funzionali suR
. Lo schemaR
è 3NF (terza forma normale) se e solo se non esistono dipendenze parziali o transitive.Obbiettivo dimostrare
Dimostrazione pare SE: ()
Se lo schema è in 3NF allora per ogni dipendenza abbiamo che è primo, oppure è super chiave:
- Se
A
è primo viene a mancare la condizione per avere dipendenze parziali e transitive- Se
A
non è primo alloraX
è superchiave, infatti:
- non possiamo avere dipendenze parziali in quanto la
X
di quest’ultime deve essere contenuta da una chiave.- non possiamo avere dipendenze transitive in quanto la
X
di quest’ultime non deve contenere alcuna chiave.Dimostrazione parte SOLO SE: ()
Se non abbiamo dipendenze parziali o transitive implica che per ogni dipendenza si ha che:
A
è primo, oppureX
superchiave, condizione che falsifica sia:- parziale, infatti se
X
superchiave alloraX
non è sotto insieme proprio diK
- transitiva, infatti se
X
superchiave allorak - X
è uguale aQuindi è in 3NF.
Chiusura 🟢
Denotiamo con l’insieme di dipendenze funzionali definito nel modo seguente:
- Assioma della Riflessività:
- Assioma dell’ Aumento:
- Assioma della Transitività:
Gli ultimi tre sono detti assiomi di Armstrong, esistono altre 3 regole che possono essere derivate dagli assiomi di Armstrong che sono utili per determinare da dipendenze di altre dipendenze di :
- Regola dell’ Unione: Se e allora
- Regola della Decomposizione: Se e allora
- Regola della Pseudo-Transitività: Se e allora
oss: L’insieme può essere ottenuto applicando ricorsivamente gli assiomi di Armstrong su l’insieme di dipendenze funzionali .
Teo 2: Regole derivate da Armstrong 🟢
Sia un insieme di dipendenze funzionali, allora su questo valgono le 3 regole viste precedentemente:
Dimostrazione:
Unione:
- Se allora per l’aumento si ha che .
- Analogamente se sempre per aumento si ha che
- Quindi dato che abbiamo ; per transitività possiamo dire che .
Decomposizione:
- Se allora per riflessività si ha che
- Quindi poiché e per transitività abbiamo che .
Pseudo-Transitività:
Se , per l’aumento possiamo dire che
Quindi poiché e per transitività abbiamo che .
oss: le tre regole sono:
- Regola dell’ Unione: Se e allora
- Regola della Decomposizione: Se e allora
- Regola della Pseudo-Transitività: Se e allora
Def 6: 🟢
Siano
R
uno schema relazionale eF
un insieme di dipendenze funzionali suR
.Dato un sottoinsieme di
R
chiamatoX
. Denominiamo con la chiusura diX
rispetto aF
, dove:Ovvero l’insieme degli attributi determinati da
X
.
Lemma 1 🟢
Siano
R
uno schema relazionale eF
un insieme di dipendenze funzionali suR
.Si ha che se e solo se
Dobbiamo dimostrare che .
Sia e
Parte Se ()
Partendo da :
- per decomposizione abbiamo che per ogni
i
- dato che ogni , allora per unione unione quindi .
Parte Solo Se ()
Partendo da :
- per ogni
i
si ha che- pertanto per unione .
Teo 3: 🟢
Siano
R
uno schema di relazione edF
un insieme di dipendenze funzionali suR
. Si ha .Per dimostrare dobbiamo dimostrare che e che .
Dimostrazione:
Per calcolare si applicano ricorsivamente gli assiomi di Armstrong, dobbiamo dimostrare che ogni dipendenza funzionale ottenuta applichiamo un assioma di Armstrong sia presente anche in .
Questo può essere fatto per induzione, dove:
i
è il numero di applicazioni di uno degli assiomi di Armstrong.il caso base indica che non abbiamo applicato nessun assioma e che quindi contiene soltanto gli elementi in e banalmente anche contiene gli elementi in
l’Ipotesi induttiva indica che ogni dipendenza funzionale ottenuta a partire da applicando gli assiomi di Armstrong un numero di volte minore o uguale a
i–1
è in . Tre casi si possono presentare:1. ottenuta attraverso l’assioma della riflessività in tal caso .
Quindi date due tuple
t1
et2
tali chet1[X] = t2[X]
, banalmente si hat1[Y] = t2[Y]
.2. ottenuta applicando l’assioma dell’aumento ad una dipendenza , dove quindi e per qualche (quindi equivale a ).
Sia
r
un’istanza diR
e sianot1
et2
due tuple inr
tali chet1[X] = t2[X]
(ovverot1[VZ] = t2[VZ]
) si avrà chet1[V] = t2[V]
et1[Z] = t2[Z]
.Visto che per ipotesi induttiva allora possiamo dire che
t1[V] = t2[V]
porta ad averet1[W] = t2[W]
. Quindi otteniamo chet1[Y] = T2[Y]
(ovverot1[VZ] = t2[WZ]
).3. ottenuta applicando l’assioma della transitività su due dipendenze e appartenenti a :
Sia
r
un’istanza diR
e sianot1
et2
due tuple inr
tali chet1[X] = t2[X]
.Per ipotesi induttiva le dipendenze e fanno parte di .
Grazie all’ipotesi induttiva si ha che
t1[X] = t2[X]
t1[Z] = t2[Z]
e chet1[Z] = t2[Z]
t1[Y] = t2[Y]
.Quindi per transitività .
Dimostrazione:
Il nostro obbiettivo è dimostrare che ogni dipendenza funzionale
Questa dimostrazione è divisa in due sezioni:
La prima parte consiste nel dimostrare che esiste presa esiste un’istanza legale di di questo tipo:
Sia
r
un’istanza legale e supponiamo per assurdo che la dipendenza funzionale non sia soddisfatta.Questo implica che tutti le dipendenze in hanno uguali valori in
V
ed hanno diversi valori inW
, ovvero che e .Poiché , per il Lemma 1 otteniamo che , e visto che allora attraverso l’assioma della transitività possiamo dire che .
Se applichiamo il Lemma 1 su otteniamo che che contraddice dimostrando che non esistono dipendenze funzionali non soddisfatte da
r
.La seconda parte consiste nel dimostrare che se .
Sappiamo che
Abbiamo mostrato che
r
è un’istanza legale che quindi soddisfa tutte le dipendenze di , compresa .Poiché le due tuple di
r
coincidono su gli attributiX
Poiché
r
soddisfa , allora le due tuple devono coincidere anche sugli attributi diY
.Questo implica che e, per il Lemma 1 otteniamo che
Algo 1 (calcolo X+) 🟢
Prende come input uno schema
R
, un insiemeF
di dipendenze suR
e un sottoinsiemeX
diR
. Come output fornisce la chiusura diX
rispetto adF
all’interno della variabileZ
.
Spiegazione:
Teo 4: Dimostrazione Algo 1 🟢
L’algoritmo 1 calcola correttamente la chiusura di un insieme di attributi rispetto ad un insieme di dipendenze funzionali .
Dimostrazione:
Indichiamo con il valore iniziale di (ovvero ) e con ed , i valori di e alla i-esima iterazione.
oss: per ogni .
L’obbiettivo è dimostrare che esiste una tale che se e solo se , per fare ciò scomponiamo la dimostrazione in due parti:
- Dimostrazione di
- Dimostrazione di
Parte:
L’obiettivo è dimostrare per induzione su
i
che per ognii
, quindi:Ipotesi Induttiva: per ogni
i
.Base dell’induzione: la base è
i = 0
, poiché e , si ha cheInduzione:
Per ipotesi induttiva
Sia
A
un attributo in (ovvero un attributo aggiunto all’iterazionei
)Deve esistere una dipendenza tale che e .
Per il lemma 1 abbiamo che (visto che )
Poiché e , per transitività abbiamo che , quindi per il lemma 1 .
Visto che e , allora per ogni si ha che , e quindi si conferma l’ipotesi induttiva
Parte:
Siano:
A
un elemento dij
tale che , ovvero è il valore diZ
quando l’algoritmo terminaL’obbiettivo è dimostrare che
Dimostrazione:
- Poiché , si ha (per lemma1 + )
- Pertanto deve essere soddisfatta da ogni istanza legale di
R
.Si consideri la seguente istanza
r
diR
, creata basandoci su :
Mostriamo che
r
è un’istanza legale. Infatti, se, per assurdo, esistesse inF
una dipendenza funzionale non soddisfatta dar
, si dovrebbe avere e . Ma si avrebbe che (contraddizione).
Quindi
r
è un istanza legale.Poiché
r
è un’istanza legale diR
deve soddisfare che si trova in (e anche per il teorema 3) ma, allora, poiché ,A
deve essere in .
Def 7: Decomposizione 🟢
Sia
R
uno schema di relazione. Una decomposizione diR
è una famiglia di sottoinsiemi diR
che ricopreR
, ovvero tale che .
Def 8: Equivalenza tra insiemi di dipendenze funzionali 🟢
Siano e due insiemi di dipendenze funzionali. e si dicono equivalenti () se .
oss: verificare l’equivalenza richiederebbe tempo esponenziale dato che dovremmo calcolare che e anche , per questo possiamo utilizzare il Lemma 2.
Lemma 2 🟢
Siano e due insiemi di dipendenze funzionali, se allora .
Dimostrazione: Sia , poiché per il teorema 3
f
è derivabile daF
mediante gli assiomi di Armstrong e ogni dipendenza funzionale inF
è derivabile daG
mediante gli assiomi di armstrong,f
è derivabile daG
mediante gli assiomi di Armstrong.
Def 9: Decomposizione preserva F 🟢
Sia uno schema relazionale ed un insieme di dipendenze funzionali su .
Definiamo con una decomposizione di (ovvero )
Questa decomposizione si dice che preserva
R
se , dove:oss: Per verificare l’equivalenza tra e , dove , ci basta verificare che , infatti sappiamo essere vero per definizione.
Algo 2 (se ) 🟢
Questo algoritmo richiede che venga calcolato quindi usiamo il prossimo algoritmo per calcolarlo (Algo 3).
Algo 3 ( ) 🟢
Teorema 5 (dim algo 3) 🟢
Sia
R
uno schema relazionale,F
un insiemi di dipendenze funzionali suR
e una decomposizione diR
eX
un sotto insieme diR
.L’algoritmo 3 calcola correttamente , dove
Dimostrazione
Indichiamo con il valore iniziale di (ovvero ), ed in particolare con il valore di dopo l’i-esima iterazione dell’assegnazione .
oss:
Indichiamo con il valore di al termine dell algoritmo, proveremo che:
Parte solo se:
Mostreremo per induzione che su
i
che per ognii
.
- Caso base:
i = 0
, abbiamo che e , quindi- Ipotesi induttiva:
Induzione:
Per ipotesi induttiva
Sia
A
un attributo in (ovvero un attributo aggiunto all’iterazionei
)Deve esistere una dipendenza un indice
j
tale che per questo:
- Poiché si ha che (per lemma1 + Teo )
- Poiché e e , per definizione di
G
si ha che- Poiché per ipotesi induttiva si ha che , per decomposizione otteniamo
- Quindi per transitività ovvero
Quindi
Def 10: Join senza perdita 🟢
Sia uno schema relazionale. Una decomposizione di di ha un join senza perdita se per ogni istanza legale di si ha .
Teorema 6: Proprietà 🟢
Sia uno schema relazionale e una decomposizione di .
Per ogni istanza legale
r
di , indichiamo con che ha queste 3 proprietà:
- , indica che il risultato del join potrebbe avere introdotto nuove tuple nelle tabella, portando a una perdita di informazioni. Il join si dice senza perdita se .
- , indica che se facciamo la proiezione di qualsiasi schema della decomposizione sul join, otteniamo lo stesso se effettuiamo la stessa proiezione sullo istanza originale
r
.
Algo 4: determina se decomposizione ha join senza perdita 🟢
Input: Uno schema relazionale
R
, un insieme di Dipendenze Funzionali suR
, una decomposizione diR
.Output:
true
se ha un join senza perdita.
L’obbiettivo è creare una tabella
r
e verificare che il join sia senza perdita.Struttura dalla tabella:
- ad ogni colonna è assegnato un attributo diverso di (numero di colonne = )
- ad ogni riga è assegnato un sotto schema diverso di (numero righe = )
Inizializzazione dalla tabella - all’incrocio tra la riga
i
e la colonnaj
inseriamo:
- il simbolo se l’attributo
- il simbolo altrimenti
Ora per ogni se ci sono due tuple
t1
et2
inr
tali che e allora per ogni in (per ogni elemento della colonnaY
):
- se allora
- altrimenti
Questo ciclo si ripete fino a quando non raggiungiamo una di queste due condizioni:
- otteniamo una riga composta da sole
a
( ha join senza perdita)- otteniamo un iterazione che non modifica la tabella ( non ha un join senza perdita)
Versione Prof.
![]()
Teorema 7: Dimostrazione Tabella 🟢
Sia
R
uno schema di relazione,F
un insieme di dipendenze funzionali suR
e una decomposizione di R.L’Algoritmo 4 determina correttamente se ha un join senza perdita.
Occorre dimostrare che:
oss: La tabella
r
può essere interpretata come un’istanza legale diR
, in quanto l’algoritmo termina quando non ci sono più violazioni delle dipendenze in F. Infatti basta sostituire ai simboli'a'
e'b'
valori presi dai domini dei corrispondenti attributi in modo tale che ad uno stesso simbolo venga sostituito lo stesso valore.Dimostrazione parte solo se ovvero:
Supponiamo per assurdo che abbia un join senza perdita e che quando l’algoritmo termina la tabella
r
non abbia una tupla con tuttea
.Poiché nessun simbolo
a
che compare nella tabella costruita inizialmente viene mai modificato dall’algoritmo, abbiamo che:
- Per ogni i () contiene una tupla con tutte
a
- Pertanto contiene una tupla con tutte
a
e, quindi, (contraddizione).
Def 11: Copertura minimale 🟢
Sia
F
un insieme di dipendenze funzionali, una copertura minimale diF
è un insiemeG
di dipendenze funzionali equivalente adF
tale che:
- Ogni dipendenza in
G
ha la parte destra singleton- Per nessuna dipendenza esiste un tale che
- Per nessuna dipendenza deve accadere .
Ovvero:
(1) Si capisce daii
(2) Gli attributi a sinistra non devono essere ridondanti, ovvero non devono esistere dipendenze funzionali in
G
tali che se sostituiamo il determinante con un suo sotto insieme, otteniaamo chrG
rimane equivalente a prima.(3) Le dipendenze funzionali non devono essere ridondanti, ovvero non deve esistere una dipendenza in
G
che se rimossa, otteniamo cheG
rimane equivalente a prima.oss: La copertura non è unica, ovvero per una data F possono esiste più comperture minimali
Algo 5 (calcolo di ) 🟢
Algoritmo che calcola in tempo polinomiale una decomposizione .
Input:
- uno schema relazionale
R
- un insieme di dipendenze funzionali
F
suR
(che è anche una copertura minimale)Output: una decomposizione di
R
che:
- preserva
F
- ogni schema di relazione in è in 3NF
oss:
R
può avere anche più di una decomposizione valida, dato che possono esistere diverse coperture minimaliG
suR
.
Teorema 8 🟢
Sia
R
uno schema di relazione edF
un insieme di dipendenze funzionali suR
, che è una copertura minimale.L’algoritmo 5 permette di calcolare in tempo polinomiale una decomposizione di
R
tale che:
- ogni schema di relazione in è in 3NF
- preserva F.
Dimostrazione: preserva
F
è la copertura minimale presa in input dall’algoritmo- Sia
G
l’insieme delle dip. funzionali preservate dal , appena calcolato dal algoritmo, ovveroL’obbiettivo è dimostrare che , ovvero che e .
- Per ogni dipendenza funzionale l’algoritmo crea un sottoschema e si ha che , di conseguenza otteniamo che .
- L’inclusione è banalmente verificata in quanto, per definizione,
Quindi
Dimostrazione: ogni schema di relazione in è in 3NF
Ci sono tre modi in cui un sotto schema può essere inserito in :
Metodo 1: se allora ogni attributo di non partecipa ad una dipendenza funzionale in
F
, quindi è chiave suS
, quindi banalmente è in 3NF.Metodo 2:
Metodo 3:
Se allora:
- , ma dato che è una copertura minimale allora non esiste tale che
- quindi è chiave in e non falsifica la 3NF di , dato che
X
è superchiave.Se esiste tale che , allora neanche questa falsificherebbe la 3NF di , dato che:
- se allora, poiché è una copertura minimale, e quindi
Y
è superchiave.- se allora e quindi
B
è primo.
Definizione 12 🟢
Uno schema è in forma normale Boyce-Codd se per ogni dipendenza funzionale tale che si ha che è una superchiave.
Se uno schema è in Boyce Codd allora è anche in 3NF ma non è vero il contrario.
Non esiste sempre una decomposizione che:
- Tutti schemi in Boyce Codd
- preserva F
- Join senza perdita
Invece esiste sempre:
- Tutti schemi in Boyce Codd
- Join Senza perdita. Ed esiste anche un algoritmo che genera tale decomposizione.