Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D Le Miniguide all'orientamento Gli eBook di Federica La Corte in Rete
 
I corsi di Economia
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Sergio Scippacercola » 9.Le forme normali e l'algebra relazionale


NORMALIZZAZIONE

La normalizzazione FN1,FN2,… è una tecnica di progettazione usata per i data base relazionali; è di particolare utilità quando si creano direttamente le tabelle relazionali, senza passare preventivamente per una analisi E/R.

TABELLA NORMALIZZATA


Attributi

  • Attributo-non-chiave
  • Attributo-chiave

Dipendenza Funzionale – Chiave primaria

Y è funzionalmente dipendente dall’attributo K se e solo se ad ogni valore di K corrisponde un preciso valore di Y, cioè:

Attributo-non-chiave = f (attributo-chiave)

oppure:

(y1,y2,y3, … yn) = f(k1,k2, … km)

Esempio di Dipendenza Funzionale

Prima forma normale (FN1)

  • Tutte le righe hanno lo stesso numero di colonne.
  • I dati contenuti in una colonna sono dello stesso tipo.
  • L’ordine delle righe non è rilevante.
  • Ogni riga è diversa dalle altre.
  • Gli attributi sono informazioni elementari (atomiche).

TABELLA in FN1


TABELLA in FN1


TABELLA in FN1 – ANOMALIE DI AGGIORNAMENTO

INSERIMENTO. I dati relativi ad un nuovo fornitore non possono essere inseriti finché lo stesso non fornisce qualcosa (mancherebbe il valore di Codp, che è obbligatorio).


TABELLA in FN1 – ANOMALIE DI AGGIORNAMENTO

CANCELLAZIONE. Se si cancella una fornitura (cioè una riga) si eliminano i dati della fornitura (effetto voluto) ma si possono perdere anche quelli del fornitore (effetto non voluto).


TABELLA in FN1 – ANOMALIE DI AGGIORNAMENTO

MODIFICA. Se un fornitore (es.: SA) cambia sede si devono modificare tutte le righe ad esso relative (con il rischio di tralasciarne qualcuna e rendere incoerenti i dati).


SECONDA FORMA NORMALE FN2

Se è in FN1 e tutti gli attributi (non chiave) dipendono dalla chiave primaria.

La T deve essere in FN1 e tutti gli attributi (non chiave) dipendono dalla chiave primaria.

Citt e Trasp dipendono solo da Codf

Citt e Trasp dipendono solo da Codf


Tabella no in FN2

Perché Citt e Trasp dipendono da Codf e non anche da Codp

Citt e Trasp dipendono da Codf e non anche da Codp

Citt e Trasp dipendono da Codf e non anche da Codp


Da FN1 a FN2

  1. Identifichiamo quali colonne dipendono solo da una parte della chiave primaria e quale è questa parte.
  2. Creiamo una nuova tabella con la parte di chiave primaria e le colonne da essa univocamente dipendenti.
  3. Eliminiamo nella tabella iniziale le colonne che non dipendevano dalla intera chiave primaria.

FN2

Si può inserire un nuovo FORNITORE

Si può inserire un nuovo FORNITORE


FN2

Anomalie

INSERIMENTO: non si può inserire una nuova città finché non vi sia un fornitore nella stessa (infatti la chiave è il codice del fornitore).

CANCELLAZIONE: se si elimina una riga in FORNITORI si perdono anche le informazioni che riguardano la città.


FN3

Una tabella del data base relazionale è in FN3, se è in FN2 ed ogni attributo non chiave è funzionalmente dipendente dalla chiave primaria.

Da FN2 a FN3

Una tabella del data base relazionale è in FN3, se è in FN2 ed ogni attributo non chiave è funzionalmente dipendente dalla chiave primaria.


FN3

INSERIMENTO: si può inserire un record riguardante una nuova città senza che sia necessario che in essa ci sia già un fornitore; analogamente si può inserire un nuovo fornitore anche se non ha ancora fornito niente.


FN3

CANCELLAZIONE: si può cancellare una fornitura senza rischiare di perdere le informazioni relative a città e fornitore.

cancellazione

cancellazione


FN3

MODIFICA: se un fornitore cambia sede occorre modificare solo un record e così pure se cambiano le informazioni relative ad una città.


La normalizzazione in sintesi

La normalizzazione è un procedimento in due fasi, che struttura i dati in tabelle e rimuove i dati ridondanti, che possono creare anomalie nelle operazioni sul data base. Ciò avviene creando nuove tabelle a partire da quelle inizialmente definite. Abbiamo considerato i primi tre livelli di ‘forma normale’ (la teoria ne definisce 5) e possiamo dire che i primi due livelli possono considerarsi dei passaggi intermedi per pervenire al terzo. Una tabella si dice in forma normale se rispetta un certo insieme di vincoli, più si avanza nella sequenza dei livelli più i vincoli sono stringenti. Eliminare i dati ridondanti, significa che nell’insieme delle tabelle, sarà memorizzata una sola copia di ciascun dato che non sia una chiave primaria. Questa è una caratteristica della FN3 e fa sì che le tabelle possano essere modificate senza incorrere in perdite di consistenza dei dati. Quando una tabella è in FN3, tutti gli attributi non chiave sono indipendenti fra loro e dipendono invece dalla chiave primaria.

Seconda forma normale: solo attributi che dipendono da tutte le chiavi presenti


DECOMPOSIZIONE da prima a seconda forma normale


Terza forma normale

Se è in 2nf e tutti gli attributi non chiave dipendono direttamente dalla chiave e non da altri attributi.


Algebra relazionale

  • Operatori binari: unione, intersezione, differenza, prodotto.
  • Operatori unari: selezione, proiezione.
  • Operatori di base: join (naturale, right, left).

Algebra relazionale: unione


Algebra relazionale: intersezione


Algebra relazionale: differenza (tuple in A e non in B)


Algebra relazionale: prodotto cartesiano

Tabella A – Tabella B

Tabella A - Tabella B


Algebra relazionale: selezione (secondo criteri)

Es.:Z

Es.:Z<45


Algebra relazionale: proiezione (selezione colonne secondo criteri)

Es.: proiezione X

Es.: proiezione X


Algebra relazionale: congiunzione (natural JOIN)

Tuple del risultato = tuple degli operandi con valori uguali sugli attributi comuni (es.:Reparto).


Algebra relazionale: congiunzione (left JOIN)

Tuple del risultato = tutte le tuple della prima tabella con valori uguali sugli attributi comuni.


Algebra relazionale: congiunzione (right JOIN)

Tuple del risultato = tutte le tuple della seconda tabella con valori uguali sugli attributi comuni.


  • Contenuti protetti da Creative Commons
  • Feed RSS
  • Condividi su FriendFeed
  • Condividi su Facebook
  • Segnala su Twitter
  • Condividi su LinkedIn
Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion