M2 - Bases de dades / UF1NF3: Normalització
El disseny d’una base de dades pot ser una tasca extremadament complexa. Hi ha diferents metodologies que permeten abordar el problema de trobar l’esquema relacional que representi millor la realitat que es vol modelitzar.
Coneixem el model Entitat-Relació per establir models per a qualsevol realitat, del qual s’obté, com a resultat, el diagrama Entitat-Relació, altrament anomenat diagrama de Chen. També coneixem el procés de traducció d’un diagrama Entitat-Relació a un esquema relacional.
Per tant, si per arribar a l’esquema relacional que ha de modelitzar la realitat hem seguit el camí que consisteix a, primerament, efectuar el diagrama Entitat-Relació per després efectuar-ne la traducció al model relacional, i el diagrama Entitat-Relació era correcte, haurem obtingut un esquema relacional del tot correcte. Aquest seria el camí aconsellable.
En l’apartat del “Model relacional” d’aquesta unitat, es presenta el procés de traducció d’un diagrama Entitat-Relació a un esquema relacional.
Però no sempre és així i ens trobem dissenys efectuats directament en l’esquema relacional. Hi ha diferents causes que ho provoquen:
- D’entrada, el model Entitat-Relació és posterior al model relacional i, per tant, hi ha bases de dades que van ser formulades directament en la terminologia relacional. No hi havia cap altra opció!
- Hi ha dissenyadors que “no volen perdre el temps” en un model Entitat-Relació i dissenyen directament en el model relacional. Quin error més gran!
- De vegades, s’ha de modificar la base de dades a causa de noves necessitats, i el disseny s’efectua directament sobre aquesta en lloc d’analitzar-se i realitzar-se sobre el model Entitat-Relació per després transferir els canvis a l’esquema relacional. Quin error més gran!
Fixeu-vos que donem un suport absolut al fet d’utilitzar el model Entitat-Relació per obtenir-ne posteriorment el model relacional. Un bon disseny en el model Entitat-Relació acostuma a proporcionar una base de dades relacional ben dissenyada, cosa que no passarà si el disseny Entitat-Relació incorpora errors. D’altra banda, si no hi ha hagut el disseny Entitat-Relació previ, hi ha més possibilitats de tenir una base de dades relacional mal dissenyada.
La teoria de la normalització és un mètode que permet assegurar si un disseny relacional (tant si prové de la traducció d’un diagrama Entitat-Relació com si s’ha efectuat directament en el model relacional) és més o menys correcte.
En general, els mals dissenys poden originar les situacions següents:
- Repetició de la informació
- Impossibilitat de representar certa informació:
- Anomalies en les insercions
- Anomalies en les modificacions
- Anomalies en els esborraments
Un bon disseny ha d’aconseguir el següent:
- Emmagatzemar tota la informació necessària amb el mínim d’informació redundant.
- Mantenir el mínim de lligams entre les relacions de la base de dades per tal de facilitar-ne la utilització.
- Millorar la consultabilitat de les dades emmagatzemades.
- Minimitzar els problemes d’actualització (altes, baixes i modificacions) que poden sorgir en haver d’actualitzar simultàniament dades de diferents relacions.
Exemple de disseny relacional inadequat Considerem el disseny relacional de la taula.1 per enregistrar la informació dels professors amb els alumnes de cadascun i la qualificació que han obtingut en els diversos crèdits.
Taula Exemple de disseny relacional inadequat DniProf NomProfessor DniAlum NomAlumne Edat Credit Nota __________________________________________________________________________________ 33.333.333 Joan Finestra 77.777.777 Anna Taula 20 ADBD 4.5 33.333.333 Joan Finestra 88.888.888 Miquel Cadira 19 ADBD 5.7 33.333.333 Joan Finestra 77.777.777 Anna Taula 20 SGBD 6 33.333.333 Joan Finestra 88.888.888 Miquel Cadira 19 SGBD 7 44.444.444 Maria Porta 77.777.777 Anna Taula 20 MET 6 44.444.444 Maria Porta 88.888.888 Miquel Cadira 19 MET 5 44.444.444 Maria Porta 77.777.777 Anna Taula 20 LLC 4 44.444.444 Maria Porta 88.888.888 Miquel Cadira 19 LLC 3
Oi que convindreu que aquest disseny està pensat amb els peus? Ràpidament, hi veiem els problemes següents: * Hi ha informació repetida, fet que pot provocar inconsistències. Fixem-nos que en cas d’haver de modificar qualsevol dels valors dels camps que formen la clau primària (DniProf, NomProfessor, DniAlum, NomAlumne, Edat, Credit), el canvi s’ha d’efectuar en totes les files en què apareix aquest valor. * No hi pot haver valors nuls en les columnes que formen la clau primària. * Així, si no coneixem l’edat d’un alumne, tenim un greu problema. * En cas d’arribar a la conclusió que necessitem emmagatzemar més informació dels professors o dels alumnes, caldrà afegir més columnes i repetir la informació per a cada fila en què aparegui el professor o alumne. :*Consultar la informació en la taula.1 pot esdevenir feixuc atesa la gran quantitat d’informació diferent que conté.
El mètode que proposa la teoria de la normalització per determinar si un disseny relacional és correcte consisteix a avaluar el disseny de totes les relacions (taules) per tal de veure en quin grau de normalitat es troba cadascuna i, així, poder decidir si el disseny ja és correcte o si cal refinar-lo.
La teoria de la normalització defineix les formes normals com a indicadors per avaluar el grau de normalitat de les relacions, i es diu que una relació està en una forma normal determinada quan satisfà un conjunt determinat de condicions.
Hi ha diferents graus de normalitat i, per tant, de formes normals, les quals compleixen la relació d’inclusió de la figura.1, que s’ha d’interpretar en el sentit que a mesura que augmenta el nivell de la forma normal, la relació ha de complir un conjunt de condicions més restrictiu i, per tant, continua verificant les condicions de les formes normals de nivell inferior.
Figura Relació d’inclusió entre les diverses formes normals
Així, doncs, l’objectiu hauria de ser aconseguir un esquema relacional en què totes les relacions tinguessin el grau màxim de normalitat, és a dir, en què totes es trobessin en la cinquena forma normal (5FN).
El procés de normalització per aconseguir que una relació que es troba en una forma normal X passi a estar en una forma normal Y superior a X consisteix sempre en la descomposició o subdivisió de la relació original (forma normal X) en dues o més relacions que verifiquin el nivell de forma normal Y.
Per tant, el procés de normalització augmenta el nombre de relacions presents en la base de dades. Amb això, segur que s’aconsegueix una disminució de redundàncies i una disminució de les anomalies en els problemes d’actualització de la informació, però, en canvi, es penalitzen les consultes, ja que la seva execució haurà d’anar a cercar la informació en moltes taules relacionades entre elles.
Així, doncs, cal trobar un equilibri, i de vegades pot ser convenient renunciar al nivell màxim de normalització (5FN) i, per tant, permetre una certa redundància en els esquemes amb la finalitat d’alleugerir els costos de les consultes. En aquestes situacions, es parla d’un procés de desnormalització.
El nostre objectiu final és conèixer les condicions que han de complir les relacions per assolir cadascun dels nivells de forma normal, i el procés per dividir les relacions en noves relacions que verifiquin les condicions desitjades. Per aconseguir-ho, hem de conèixer els conceptes de relació universal i dependència funcional.