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