Vés al contingut

Normalització de bases de dades

De la Viquipèdia, l'enciclopèdia lliure

La normalització de bases de dades és el procés d'estructurar una base de dades relacional d'acord amb una sèrie de formes normals per tal de reduir la redundància de dades i millorar la integritat de les dades. Va ser proposat per primera vegada pel científic informàtic britànic Edgar F. Codd com a part del seu model relacional.[1]

La normalització implica organitzar les columnes (atributs) i les taules (relacions) d'una base de dades per garantir que les seves dependències s'apliquin correctament mitjançant les restriccions d'integritat de la base de dades. S'aconsegueix aplicant algunes regles formals, ja sigui mitjançant un procés de síntesi (creant un nou disseny de base de dades) o de descomposició (millorant un disseny de base de dades existent).[2]

Diagrama de formes normals d'una base de dades.

Objectius

[modifica]

Un objectiu bàsic de la primera forma normal definida per Codd el 1970 era permetre que les dades fossin consultades i manipulades mitjançant un "subllenguatge de dades universal" basat en la lògica de primer ordre. Un exemple d'aquest llenguatge és SQL, tot i que Codd el considerava un llenguatge amb greus defectes.

Els objectius de la normalització més enllà de la 1FN (primera forma normal) van ser establerts per Codd com:

  1. Alliberar la col·lecció de relacions de dependències d'inserció, actualització i eliminació no desitjades.

2. Reduir la necessitat de reestructurar la col·lecció de relacions, a mesura que s'introdueixen nous tipus de dades, i així augmentar la vida útil dels programes d'aplicació.

3. Fer que el model relacional sigui més informatiu per als usuaris.

4. Fer que la col·lecció de relacions sigui neutral respecte a les estadístiques de consulta, on aquestes estadístiques poden canviar amb el pas del temps.

— E.F. Codd, "Normalització addicional del model relacional de la base de dades"

Una anomalia d'inserció. Fins que el nou membre del professorat, el Dr. Newsome, no sigui assignat per impartir almenys un curs, no es poden registrar les seves dades.

Quan s'intenta modificar (actualitzar, inserir o suprimir) una relació, poden sorgir els següents efectes secundaris indesitjables en relacions que no s'han normalitzat prou:

Anomalia d'inserció
Hi ha circumstàncies en què certs fets no es poden registrar en absolut. Per exemple, cada registre d'una relació "Professorat i els seus cursos" pot contenir un ID de professorat, un nom del professorat, una data de contractació del professorat i un codi de curs. Per tant, es poden registrar les dades de qualsevol membre del professorat que imparteixi almenys un curs, però no es pot registrar un membre del professorat recentment contractat que encara no ha estat assignat per impartir cap curs, excepte establint el Codi del curs com a nul.
Una anomalia d'actualització. L'empleat 519 es mostra amb adreces diferents en registres diferents.
Anomalia d'actualització
La mateixa informació es pot expressar en diverses files; per tant, les actualitzacions de la relació poden provocar inconsistències lògiques. Per exemple, cada registre d'una relació "Habilitats dels empleats" pot contenir un ID d'empleat, una adreça d'empleat i una habilitat; per tant, un canvi d'adreça per a un empleat concret pot haver de ser aplicat a diversos registres (un per a cada habilitat). Si l'actualització només té èxit parcial (l'adreça de l'empleat s'actualitza en alguns registres però no en d'altres), la relació queda en un estat inconsistent. Concretament, la relació proporciona respostes contradictòries a la pregunta de quina és l'adreça d'aquest empleat en particular.
Una anomalia d'eliminació. Tota la informació sobre el Dr. Giddens es perd si deixen de ser assignats temporalment a algun curs.
Anomalia d'eliminació
En determinades circumstàncies, l'eliminació de dades que representen certs fets requereix l'eliminació de dades que representen fets completament diferents. La relació "Professorat i els seus cursos" descrita a l'exemple anterior pateix aquest tipus d'anomalia, ja que si un membre del professorat deixa temporalment d'estar assignat a qualsevol curs, s'ha d'eliminar l'últim dels registres en què apareix aquest membre del professorat, eliminant també efectivament el membre del professorat, tret que el camp Codi del curs estigui definit com a nul.

Minimitzar el redisseny en ampliar l'estructura de la base de dades

[modifica]

Una base de dades totalment normalitzada permet ampliar la seva estructura per adaptar-se a nous tipus de dades sense canviar massa l'estructura existent. Com a resultat, les aplicacions que interactuen amb la base de dades es veuen mínimament afectades.

Les relacions normalitzades, i la relació entre una relació normalitzada i una altra, reflecteixen conceptes del món real i les seves interrelacions.

Formes normals

[modifica]

Codd va introduir el concepte de normalització i el que ara es coneix com la primera forma normal (1FN) el 1970.[3] Codd va definir la segona forma normal (2FN) i la tercera forma normal (3FN) el 1971, i Codd i Raymond F. Boyce van definir la forma normal de Boyce-Codd (BCNF) el 1974.

Ronald Fagin va introduir la quarta forma normal (4FN) el 1977 i la cinquena forma normal (5FN) el 1979. Christopher J. Date va introduir la sisena forma normal (6FN) el 2003.

Informalment, una relació de base de dades relacional sovint es descriu com a "normalitzada" si compleix la tercera forma normal.[4] La majoria de les relacions 3FN estan lliures d'anomalies d'inserció, actualització i eliminació.

Les formes normals (de la menys normalitzada a la més normalitzada) són:

UNF: Forma no normalitzada

1FN: Primera forma normal

2FN: Segona forma normal

3FN: Tercera forma normal

EKNF: Forma normal de clau elemental

BCNF: Forma normal de Boyce-Codd

4FN: Quarta forma normal

ETNF: Forma normal de tupla essencial

5FN: Cinquena forma normal

DKNF: Forma normal de clau de domini

6FN: Sisena forma normal

Exemple de normalització pas a pas

[modifica]

La normalització és una tècnica de disseny de bases de dades que s'utilitza per dissenyar una taula de base de dades relacional fins a una forma normal superior.[5] El procés és progressiu i no es pot aconseguir un nivell més alt de normalització de la base de dades si no s'han complert els nivells anteriors.[6]

Això vol dir que, tenint dades en forma no normalitzada (la menys normalitzada) i intentant aconseguir el nivell més alt de normalització, el primer pas seria assegurar-se que es compleix la primera forma normal, el segon pas seria assegurar-se que es compleix la segona forma normal, i així successivament en l'ordre esmentat anteriorment, fins que les dades s'ajustin a la sisena forma normal.

Tanmateix, les formes normals més enllà de la 4NF són principalment d'interès acadèmic, ja que els problemes que existeixen per resoldre rarament apareixen a la pràctica.[7]

Referències

[modifica]
  1. helenclu. «Database normalization description - Microsoft 365 Apps» (en anglès americà). [Consulta: 26 maig 2025].
  2. «Introduction of Database Normalization» (en anglès americà), 02-07-2015. [Consulta: 26 maig 2025].
  3. Codd, E. F. Communications of the ACM, 13, 6, 6-1970, p. 377–387. DOI: 10.1145/362384.362685 [Consulta: free].
  4. Date, C. J.. An Introduction to Database Systems (en anglès). Addison-Wesley, 1999, p. 290.
  5. Kumar, Kunal. «Database normalization design pattern». A: 2017 4th IEEE Uttar Pradesh Section International Conference on Electrical, Computer and Electronics (UPCON) (en anglès). IEEE, October 2017, p. 318–322. DOI 10.1109/upcon.2017.8251067. ISBN 9781538630044.
  6. «Database normalization in MySQL: Four quick and easy steps» (en anglès). ComputerWeekly.com. Arxivat de l'original el 2017-08-30. [Consulta: 23 març 2021].
  7. «Database Normalization: 5th Normal Form and Beyond» (en anglès). MariaDB KnowledgeBase. [Consulta: 23 gener 2019].