M2 - Bases de dades / UF1NF3: Normalització

De wikiserver
Dreceres ràpides: navegació, cerca

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
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.

La relació universal

En efectuar directament el disseny relacional d’una base de dades, el dissenyador es troba amb un conjunt de conceptes que tradueix en atributs, els quals, pel seu significat, agruparà en una o més relacions.

         Anomenem relació universal la relació consistent en l’agrupament dels atributs corresponents a tots 
         els conceptes que constitueixen una base de dades relacional.
         Taula Relació universal per a un esquema relacional ideat per a una gestió de comandes de compra

Num	DataComanda	Article	Descripcio      	Qtat	Preu	DataPrevista	NomProv     PaisProv	Moneda
22.523	25-05-2000	PC3-500	PC Pentium III a 500	5	150	1-06-2000	ARKANSAS    XINA	EUR
22.523	25-05-2000	PRO-15	Protector pantalla 15”	5	8	1-06-2000	ARKANSAS    XINA	EUR
22.524	27-05-2000	PC3-500	PC Pentium III a 500	15	145	5-06-2000	MELISSA     ITÀLIA	USD
22.524	27-05-2000	PRO-15	Protector pantalla 15”	15	50	5-06-2000	MELISSA     ITÀLIA	USD
22.525	27-05-2000	INK430	Cartutx de tinta 430	20	25	31-5-2000	ARKANSAS    XINA	EUR

Així, imaginem que es vol dissenyar una base de dades per al control de les comandes de compra d’una organització determinada. Imaginem que cal incloure-hi els conceptes corresponents a número i data de la comanda; codi, descripció, quantitat i preu pactat per cada article sol·licitat; data prevista de lliurament de la comanda; nom (NomProv) i país (PaisProv) del proveïdor; i moneda en què es pacta la comanda. La relació universal es representa en la taula.2.

Oi que hi ha molta redundància i poca organització? Evidentment, el disseny relacional d’una base de dades basat en la relació universal acostuma a ser del tot incorrecte, i fa necessari aplicar un procés de normalització per tal d’anar dividint la relació en altres relacions de manera que assoleixin graus de normalitat millors, és a dir, compleixin les restriccions corresponents a les formes normals més elevades.

Molt poques vegades es parteix de la relació universal. L’experiència dels dissenyadors provoca que, d’entrada, ja es pensi en relacions que assoleixen un cert grau de normalitat.