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 vuotiXeYdiR.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
rdiRsoddisfa la dipendenza funzionale se per ogni coppia di tuplet1et2abbiamo che:Se allora
oss: un’istanza di
Rè un una tabella che rappresenta le relazione.
Def 1.3: Istanza Legale 🟢
Dati uno schema relazionale
Re un insieme di dipendenze funzionaliF.Un’istanza
rdiRsi dice legale se soddisfa tutte le dipendenze funzionali inF.
Def 1.4: Chiusura F+ 🟢
Dato uno schema relazionale
Re un insieme di dipendenze funzionaliFsuR.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
Red un insieme di dipendenze funzionaliFsuR.Un sottoinsieme
KdiRsi dice chiave se:
Per ogni sottoinsieme proprio
K'diKsi ha che
Def 3: Attributo Primo e Super-chiave 🟢
Dati uno schema relazionale
Re un insieme di dipendenze funzionaliF.
- Un attributo
AdiRsi dice primo se appartiene ad una chiave diR.- Un sottoinsieme
XdiRsi dice super-chiave se contiene una chiave diRo alternativamente determina tuttoR(ovvero la sua chiusura è uguale adR)
Def 4: Dipendenze Parziali e Transitive 🟢
Siano
Runo schema relazionale eFun insieme di dipendenze funzionali e una dipendenza con .La dipendenza si dice parziale se contemporaneamente:
Anon è 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:
Anon è primo- per ogni chiave
Ksi ha cheXnon è contenuto interamente inKe a sua voltaXnon contieneK, ovvero:- e (
Xnon 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
Runo schema relazionale eFun 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
Runo schema relazionale eFun 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
Anon è primo alloraXè superchiave, infatti:
- non possiamo avere dipendenze parziali in quanto la
Xdi quest’ultime deve essere contenuta da una chiave.- non possiamo avere dipendenze transitive in quanto la
Xdi 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, oppureXsuperchiave, condizione che falsifica sia:- parziale, infatti se
Xsuperchiave alloraXnon è sotto insieme proprio diK- transitiva, infatti se
Xsuperchiave 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
Runo schema relazionale eFun insieme di dipendenze funzionali suR.Dato un sottoinsieme di
RchiamatoX. Denominiamo con la chiusura diXrispetto aF, dove:Ovvero l’insieme degli attributi determinati da
X.
Lemma 1 🟢
Siano
Runo schema relazionale eFun 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
isi ha che- pertanto per unione .
Teo 3: 🟢
Siano
Runo schema di relazione edFun 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
t1et2tali 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
run’istanza diRe sianot1et2due tuple inrtali 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
run’istanza diRe sianot1et2due tuple inrtali 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
run’istanza legale e supponiamo per assurdo che la dipendenza funzionale non sia soddisfatta.Questo implica che tutti le dipendenze in hanno uguali valori in
Ved 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
rcoincidono su gli attributiXPoiché
rsoddisfa , 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 insiemeFdi dipendenze suRe un sottoinsiemeXdiR. Come output fornisce la chiusura diXrispetto adFall’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
iche per ognii, quindi:Ipotesi Induttiva: per ogni
i.Base dell’induzione: la base è
i = 0, poiché e , si ha cheInduzione:
Per ipotesi induttiva
Sia
Aun 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:
Aun elemento dijtale che , ovvero è il valore diZquando 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
rdiR, creata basandoci su :
Mostriamo che
rè un’istanza legale. Infatti, se, per assurdo, esistesse inFuna dipendenza funzionale non soddisfatta dar, si dovrebbe avere e . Ma si avrebbe che (contraddizione).
Quindi
rè un istanza legale.Poiché
rè un’istanza legale diRdeve soddisfare che si trova in (e anche per il teorema 3) ma, allora, poiché ,Adeve essere in .
Def 7: Decomposizione 🟢
Sia
Runo schema di relazione. Una decomposizione diRè una famiglia di sottoinsiemi diRche 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 daFmediante gli assiomi di Armstrong e ogni dipendenza funzionale inFè derivabile daGmediante gli assiomi di armstrong,fè derivabile daGmediante 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
Rse , 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
Runo schema relazionale,Fun insiemi di dipendenze funzionali suRe una decomposizione diReXun 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
iche per ognii.
- Caso base:
i = 0, abbiamo che e , quindi- Ipotesi induttiva:
Induzione:
Per ipotesi induttiva
Sia
Aun attributo in (ovvero un attributo aggiunto all’iterazionei)Deve esistere una dipendenza un indice
jtale che per questo:
- Poiché si ha che (per lemma1 + Teo )
- Poiché e e , per definizione di
Gsi 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
rdi , 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:
truese ha un join senza perdita.
L’obbiettivo è creare una tabella
re 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
ie la colonnajinseriamo:
- il simbolo se l’attributo
- il simbolo altrimenti
Ora per ogni se ci sono due tuple
t1et2inrtali 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
Runo schema di relazione,Fun insieme di dipendenze funzionali suRe una decomposizione di R.L’Algoritmo 4 determina correttamente se ha un join senza perdita.
Occorre dimostrare che:
oss: La tabella
rpuò 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
rnon abbia una tupla con tuttea.Poiché nessun simbolo
ache 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
ae, quindi, (contraddizione).
Def 11: Copertura minimale 🟢
Sia
Fun insieme di dipendenze funzionali, una copertura minimale diFè un insiemeGdi dipendenze funzionali equivalente adFtale che:
- Ogni dipendenza in
Gha 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
Gtali che se sostituiamo il determinante con un suo sotto insieme, otteniaamo chrGrimane equivalente a prima.(3) Le dipendenze funzionali non devono essere ridondanti, ovvero non deve esistere una dipendenza in
Gche se rimossa, otteniamo cheGrimane 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
FsuR(che è anche una copertura minimale)Output: una decomposizione di
Rche:
- preserva
F- ogni schema di relazione in è in 3NF
oss:
Rpuò avere anche più di una decomposizione valida, dato che possono esistere diverse coperture minimaliGsuR.
Teorema 8 🟢
Sia
Runo schema di relazione edFun insieme di dipendenze funzionali suR, che è una copertura minimale.L’algoritmo 5 permette di calcolare in tempo polinomiale una decomposizione di
Rtale che:
- ogni schema di relazione in è in 3NF
- preserva F.
Dimostrazione: preserva
Fè la copertura minimale presa in input dall’algoritmo- Sia
Gl’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.












