Normalizzazione

Rispetto alla teoria, spesso negli ambienti di lavoro si approccia l'analisi iniziando dalla progettazione relazionale, ma questo introduce delle anomalie, che dovranno essere corrette successivamente.

Altre volte si trova nell'ambiente lavorativo un database già pronto, su cui bisogna apportare delle modifiche.

Le anomalie, sia in db nuovi sia in db già esistenti, possono essere corrette tramite un'analisi a oggetti, tradotto successivamente in relazionale.

Le ridondanze sono uno dei problemi più frequenti: occupano spazio per niente e soprattutto si prestano a inconsistenze.

Le dipendenze funzionali indicano l'esistenza di un rapporto tra due relazioni

Lo schema di relazione universale dice che "tutti i fatti sono descritti da attributi di un'unica relazione (relazione universale), cioè gli attributi hanno un significato globale". In una relazione universale sono presenti una montagna di anomalie, perché per ogni riga inserita bisogna replicare tutti i dati di tutti gli attributi.

Table of Contents

Notazione

Dato uno schema R(T) e X, Y ⊆ T, una dipendenza funzionale (DF) è un vincolo su R del tipo X → Y (X, Y sono insiemi di attributi)

∀ r istanza valida di R,
∀ t1, t2 ∈ r, se t1[X] = t2[X] allora t1[Y] = t2[Y]

Esempio: se esiste una dipendenza funzionale tra un elenco di studenti e esami, e la dipendenza è tra la matricola degli studenti e la matricola nei voti, se tra due tuple la matricola è uguale, anche i voti delle due matricole sono gli stessi.

Esempio:

BibliotecaRNomeUtenteX,ResidenzaY,TelefonoZ,NumeroLibro,Autore,Titolo,DataT

In una relazione R (Biblioteca) contenente un insieme di attributi T, se l'attributo determinante (X) è uguale in due tuple, l'attributo determinato (Y) deve essere uguale:

NomeUtente Residenza Telefono NumeroLibro Autore Titolo Data
t1[X] t1[Y]
Marco Via Col Vento 123 456 Orsini BdD 01/02/2015
Marco Via Col Vento 123 789 Cortesi Alpinismo 18/02/2015
t2[X] t2[Y]

Nell'esempio, il nome utente determina (tra l'altro) la residenza, quindi a parità di nome utente la residenza deve essere uguale.

Un'istanza r0 ∈ R soddisfa tutte le dipendenze funzionali, si dice DF X→Y(r0|=X→Y) se la proprietà vale per r0

Si indica con R〈T,F〉 una relazione con attributi T e dipendenze F. Per esempio R〈{Nome, Residenza}, {Nome→Residenza}〉 denota una relazione in cui sono presenti gli attributi Nome e Residenza dove Nome determina Residenza.

Se X→Y e X→Z, allora X→YZ (nell'esempio, se il nome determina la residenza e il nome determina il telefono, il nome determina anche la coppia residenza/telefono).
Si scrive in notazione {X→Y, X→Z} ⊨ X→YZ (il carattere ⊨ si legge "implica logicamente")

Inoltre vale sempre
{} ⊨ X→X

Assiomi di Armstrong

Sia RI un insieme di regole di inferenza per F. Si indica F⊢X→Y il fatto che X→Y è derivabile da F usando RI.
Nell'esempio, una RI può essere "ogni persona vive in una e una sola residenza".
Se la RI è corretta (nell'esempio lo è), allora F⊢X→Y implica che F⊨X→Y (se ogni persona vive in una residenza, ogni volta che si considera una persona la residenza è sempre la stessa)

Se la RI è completa, vale anche il contrario (se ogni volta che considero una persona osservo che la residenza è la stessa, posso dire che ogni persona vive in una sola residenza)

Gli assiomi di Armstrong dicono che:

  1. Riflessività: se Y⊆X, allora X→Y (se prendo un sottoinsieme di nomi, l'insieme completo determina il sottoinsieme)
  2. Arricchimento/Aumento: se X→Y e W⊆T, allora XW→YW (se nome determina residenza, allora nome+telefono determina residenza+telefono)
  3. Transitività: se X→Y e Y→Z allora X→Z (se nome determina residenza e residenza determina città, allora nome determina città)

A partire dagli assiomi di Armstrong è possibile ricavare altre regole, di cui le più comuni sono:

  1. Unione: {X→Y, X→Z} ⊢ X→YZ
  2. Decomposizione: {X→YZ} ⊢ X→Y
  3. Indebolimento: {X→Y} ⊢ XZ→Y
  4. Identità: {} ⊢ X→X

L'unione è già discussa sopra.
La decomposizione significa che se se il nome determina residenza-telefono, il nome determina anche la sola residenza.
L'indebolimento significa che se il nome determina la residenza, anche nome-telefono determina la residenza.
L'identità significa che in ogni caso il nome determina il nome.

Chiusura