NORMALIZZAZIONE Se lo schema della base di dati non è costruito

Transcript

NORMALIZZAZIONE Se lo schema della base di dati non è costruito
NORMALIZZAZIONE
Se lo schema della base di dati non è costruito correttamente, può accadere che si abbiano delle
anomalie nel database. Queste, sono una diretta conseguenza della ridondanza, ovvero della
presenza di dati ripetuti inutilmente. Considerando una tabella che contiene i clienti e gli articoli
ordinati da essi, le principali anomalie possono essere:
- Anomalie in inserimento che si verificano quando si cerca di aggiungere dei dati in una base
mal progettata. Se ad esempio vogliamo inserire un nuovo cliente, è necessario inserire
anche un articolo ordinato. Allo stesso modo, non è possibile inserire un nuovo articolo
senza specificare un acquirente.
- Anomalie in cancellazione, che si verificano quando si cerca di eliminare dei dati in una
base di dati mal progettata. Se ad esempio, si cancella una tupla relativa ad un acquisto, si
corre il rischio di cancellare anche i dati relativi al cliente.
- Anomalie in aggiornamento, che si verificano quando si cerca di aggiornare dei dati in una
base di dati. Se ad esempio, occorre variare l'indirizzo di un cliente, occorrerà aggiornare
anche ogni tupla in cui compare quel cliente.
Lo scopo principale della normalizzazione è quello di realizzare un'ottimizzazione progressiva a
partire da relazioni non normalizzate fino a raggiungere un certo livello di normalizzazione. In
sintesi, lo scopo della normalizzazione, è quello di fornire un metodo per progettare basi di dati
senza anomalie, ovvero per creare tabelle corrette. In generale,le regole della normalizzazione sono:
- Ogni tabella deve avere una chiave primaria
- Ogni campo deve contenere un solo valore
- I campi di una tabella non devono dipendere da altri campi che non siano la chiave primaria
- Bisogna evitare le ripetizioni e la ridondanza dei dati
Inoltre, una forma normale, è una proprietà di uno schema relazionale che ne garantisce la qualità,
ovvero l'assenza di determinati difetti. Nella teoria delle basi di dati relazionali, esistono 5 forme
normali e una variante sulla terza forma normale che è la Forma normale di Boyce-Codd.
PRIMA FORMA NORMALE O FORMA ATOMICA
Una relazione si dice in prima forma normale, se esiste una chiave primaria e ogni attributo è
definito su un dominio di valori atomici, ovvero ogni attributo è basato su un campo semplice e
quindi non composto e non multiplo. Considerando la tabella Persona, possiamo notare che
l’indirizzo non è un attributo semplice, in quanto contiene più informazioni. Per questo, si deve
scomporre il campo indirizzo, ripetendo questa operazione fino a quando ogni campo contiene una
e una sola informazione.
Nel caso in cui la tabella è composta da un attributo multiplo, come ad esempio il numero di
telefono, bisogna scomporre la tabella in due relazioni.
SECONDA FORMA NORMALE
Considerando una relazione che contiene almeno due attributi X e Y, si dice che Y ha una
dipendenza funzionale da X e si indica con X  Y , se il valore di Y varia al variare del valore di
X. Una relazione è in seconda forma normale se è in prima forma normale e ogni attributo non
chiave dipende funzionalmente e completamente dalla chiave primaria. In sintesi, per normalizzare
in seconda forma normale, si procede nel seguente modo, ovvero:
- Nello schema originario devono rimanere la chiave primaria e tutti gli attributi non chiave
che dipendono completamente da essa.
- Si crea un nuovo schema di relazione per ogni parte di chiave primaria da cui dipendono
completamente altri attributi non chiave.
Schema relazionale, costituito dagli ordini, che non soddisfa la seconda forma normale
Questo schema, presenta diverse anomalie, tra cui:
- Anomalia in inserimento, in quanto non è possibile inserire un nuovo articolo in magazzino
sino quando questo non viene ordinato.
- Anomalia in cancellazione, in quanto si possono perdere informazioni sugli articoli
- Anomalia in aggiornamento, in quanto se varia il prezzo unitario di un articolo, occorre
aggiornare tutte le tuple in cui esso compare.
Questa relazione non è in seconda forma normale perché al suo interno sono memorizzate
informazioni riguardanti più di un oggetto, ovvero più elementi distinti, tra cui gli ordini, i clienti e i
prodotti ordinati in ciascun ordine. Verificando le dipendenze funzionali dalla chiave primaria,
possiamo analizzare che gli attributi CodCliente e DataOrdine, dipendono solo da CodOrdine e non
dal prodotto ordinato. L’attributo Quantità, invece, dipende sia dall'ordine che dal prodotto, infatti,
nello stesso ordine ci possono essere più articoli con quantità diverse e lo stesso articolo deve
comparire in ordini diversi con quantità differenti. Per risolvere questi problemi, si deve scomporre
la relazione in relazioni più semplici, collegate tra di loro tramite chiavi primarie.
Schema relazionale che soddisfa la seconda forma normale
TERZA FORMA NORMALE
Una relazione è in terza forma normale, se è in seconda forma normale e ogni attributo non chiave
dipende direttamente dalla chiave primaria, ovvero non esistono attributi che dipendono da altri
attributi non chiave. In generale, la terza forma normale, elimina la dipendenza transitiva degli
attributi dalla chiave primaria. Data una relazione con attributi A, B e C con chiave primaria A, se C
dipende funzionalmente da B, che dipende funzionalmente da A, e se il determinante B non è una
chiave candidata della relazione, allora C ha una dipendenza funzionale transitiva da A.
In sintesi, per normalizzare in terza forma normale, si procede nel seguente modo, ovvero:
- Nello schema originario devono rimanere la chiave primaria e tutti gli attributi non chiave
che dipendono direttamente da essa.
- Si crea un nuovo schema di relazione per ogni attributo da cui dipendono altri attributi non
chiave.
Schema relazionale, costituito dagli ordini, che non soddisfa la terza forma normale
Questo schema, presenta diverse anomalie, tra cui:
- Anomalia in inserimento, in quanto non è possibile inserire la ragione sociale relativa ad un
cliente sino a quando quest'ultimo non compare in un ordine.
- Anomalia in cancellazione, in quanto si possono perdere informazioni sulle ragioni sociali
- Anomalia in aggiornamento, in quanto se varia la ragione sociale di un certo cliente, occorre
aggiornare tutte le tuple interessate.
Questi problemi, sono dovuti al fatto che la ragione sociale è indipendente dal codice dell'ordine e
dipende solo dal codice del cliente. Siamo quindi di fronte al caso in cui un attributo non chiave,
ovvero RagSociale, dipende da un altro attributo non chiave, ovvero CodCliente.
Schema relazionale che soddisfa la terza forma normale
FORMA NORMALE DI BOYCE CODD
Una relazione è in forma normale di Boyce-Codd, quando rispetta le caratteristiche fondamentali
del modello relazionale (caratteristiche della prima forma normale) e se, per ogni dipendenza
funzionale X  Y definita su di essa, X è una chiave candidata. La conseguenza principale, è che
una relazione che soddisfa la forma normale di Boyce-Codd, è anche in seconda forma normale e in
terza forma normale, poiché la forma normale di Boyce-Codd, non ammette che un determinante
possa essere formato solo da una parte della chiave, come avviene nella seconda forma normale, o
che possa essere esterno alla chiave, come avviene nella terza forma normale. Una relazione che
rispetta la forma normale di Boyce-Codd, è anche in terza forma normale ma non è vero il
contrario. Inoltre, se la chiave primaria della relazione è formata da un unico attributo ed è in terza
forma normale, allora è anche in forma normale di Boyce-Codd.
Esempio