3. Condicions de normalitat

Índex
Capítol anterior
Capítol següent

3.1. Tres condicions de normalitat

Un cop assegurades les condicions exposades en el capitol anterior, cal afegir-n'hi tres més, que són les condicions de normalitat. En realitat, de condicions de normalitat n'hi ha més, però per a la majoria de les aplicacions és suficient respectar-ne tres, que es coneixen simplement com primera, segona i tercera.

Cada condició pressuposa implícitament el compliment de l'anterior.

Normalitzar una taula vol dir dissenyar-la (o, si és el cas, redissenyar-la) de manera que compleixi les condicions de normalitat. Això pot implicar la creació de noves taules i l'establiment de relacions entre aquestes. De moment veurem les condicions de normalitat; més endavant ens ocuparem de les relacions entre taules.

 

3.2. Primera condició de normalitat

Una taula compleix la primera condició de normalitat si cap camp de cap registre no pot contenir més d'un valor.

S'exclou doncs tant la possibilitat d'introduir més d'un valor en un camp d'un registre com de repetir en la taula camps conceptualment equivalents (vg. Autor1, Autor2,...), cosa que seria el mateix.

Suposem que una taula ha de recollir les dades sobre l'ocupació de les aules en una universitat. Establim una taula amb els camps següents:

(Per simplificar, considerem que si dos o més professors expliquen una mateixa matèria, les considerarem com assignatures diferents).

Establim que el conjunt Dia - Hora - Número de l'aula constitueix la clau primària d'aquesta taula.

Immediatament veiem que hi ha un camp que forçosament tindrà valors múltiples: en una aula determinada, en un dia i una hora determinats hi haurà diversos alumnes; al seu torn, cada alumne apareixeria en més d'una aula i en més d'una hora. I preguntem-nos:

La reposta a aquestes preguntes ens justifica l'exigència de la primera condició de normalitat. Ens cal prescindir doncs del camp

i organitzar d'alguna altra manera tot el que faci referència a alumnes.

Cal tenir clar que la decisió sobre si dos camps són conceptualment equivalents o no és una cosa que hem de definir segons quina sigui la finalitat de la taula. Així, podem acordar, en la majoria dels casos, en una taula que reculli dades personals Primer cognom i Segon cognom seran dos atributs diferents, ja que en el seu ús habitual no són intercanviables. Però en un estudi sobre migracions podem acordar que es tracta d'un mateix atribut que té dos valors en cada persona. El tractament en un cas i en l'altre serà, doncs, diferent.

 

3.3. Segona condició de normalitat

La segona condició de normalitat s'aplica a les taules amb una clau primària composta de dos o més camps:

Una taula compleix la segona condició de normalitat si, a més de complir la primera, els valors dels camps que no formen part de la clau primària no depenen només d'una sola part d'aquesta.

El resultat de la simplificació de la taula de l'apartat anterior ens dóna:

Però adonem-nos que la capacitat de l'aula és una propietat de cada aula, és a dir, en aquesta taula, del número d'aula, sigui quina sigui l'hora i sigui quin sigui el dia de la setmana. Ens trobem doncs que un camp, capacitat de l'aula, depèn d'un fragment de la clau primària.

Formulem-nos ara la pregunta: Quantes vegades hauríem d'entrar en la taula les parelles de dades formades pels números d'aula i les respectives capacitats?

La resposta a aquesta pregunta justifica l'exigència de la segona coondició de normalitat. Hem de prescindir doncs del camp

i organitzar d'alguna altra manera tot el que faci referència a característiques de les aules.

 

3.4. Tercera condició de normalitat

Una taula compleix la tercera condició de normalitat si, a més de complir la segona, no hi ha dependències mútues entre els camps que no formen part de la clau principal.

El resultat de la simplificació de la taula de l'apartat anterior ens dóna:

Però coneixent l'assignatura coneixem el professor; per tant un camp no clau depèn d'un altre camp no clau.

Preguntem-nos: Quantes vegades hauríem d'entrar el nom de cada professor aparellat amb el nom de l'assignatura corresponent?

La resposta a aquesta pregunta ens justifica la necessitat de respectar la tercera condició de normalitat. Ens cal doncs prescindir del camp

i ens queda el disseny definitiu:

 

3.5. Camps calculats

Les condicions de normalitat segona i tercera exclouen l'existència en una taula de camps calculats a partir de les dades de dos o més altres camps.

En una taula que recull noms de comarques, i la superfície i la població de cada una, seria absurd introduir-hi un nou camp amb la densitat de població, cosa que ens obligaria a refer els càlculs fora de la base de dades per entrar la nova densitat de població cada vegada que modifiquéssim les dades referides a la població: seria poc eficient i alhora una font probabilíssima d'errors. Si ens cal la densitat de població, ja la calcularem en explotar les dades de la taula.

 

3.6. Excepcions

A vegades no és convenient portar fins a l'extrem el criteri de normalització. Cal valorar en cada cas la proporció entre l'esforç que això exigeix i la millora de resultats que n'esperem. Ni cal dir que qualsevol excepció permesa ha de formalitzar-se rigorosament, i que cal prendre les mesures precautòries per evitar l'obtenció de resultats indesitjats.

Suposem que fem una petita base de dades per a recollir-hi les dades de les nostres relacions personals: familiars, amics, companys, etc. I ara comencem a distingir: marit, muller i fills; primera residència i segona residència, i adreça laboral; telèfon de casa, telèfon del treball i telèfon mòbil. Portar a les darreres conseqüències el procés de normalització que exigeix l'encreuament rigorós de totes aquestes variables, ens pot portar a una enorme quantitat de taules necessàries, absolutament desproporcionada per a una base de dades que potser només tindrà un centenar de registres.