La normalización de base de datos se adoptó porque el viejo estilo de poner todos los datos en un solo lugar, como un archivo o una tabla de la base de datos, era ineficiente y conducía a errores de lógica cuando se trataba de manipular los datos.
La normalización se introdujo como remedio del estilo de antaño de poner todos los datos en un solo lugar, ya fuese un archivo o una tabla ya que era ineficiente y con errores de lógica cuando se manipulaban los datos.
El proceso de normalización de base de datos nos ayuda a tener los datos de nuestras tablas sin registro duplicados.
Esto como mejor se ve sin lugar a dudas es con un ejemplo. Vamos a imaginarnos que tenemos una base de datos donde almacenemos información sobre “Artitas con sus respectivos albums” en una tabla.
Lo que hariamos sin tener en cuenta la normalización es crear la base de datos de la siguiente manera:
[Mysql]
CREATE TABLE `albums` (
`id_album` INT( 5 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`album` VARCHAR( 100 ) NOT NULL ,
`artista` VARCHAR( 100 ) NOT NULL
) ENGINE = MYISAM ;
[/Mysql]
Si ejecutamos este código dentro de nuestra base de datos, en la pestaña SQL de nuestro PhpMyAdmin, obtendremos la tabla con la siguiente estructura:
Vamos a introducir datos de albums con sus correspondientes artistas:
[Mysql]
—
— Volcar la base de datos para la tabla `albums`
—
INSERT INTO `albums` VALUES (1, ‘Lunático’, ‘Gotan Project’);
INSERT INTO `albums` VALUES (2, ‘La Revancha del Tango’, ‘Gotan Project’);
INSERT INTO `albums` VALUES (3, ‘Tango 3.0’, ‘Gotan Project’);
INSERT INTO `albums` VALUES (4, ‘X&Y’, ‘Coldplay’);
INSERT INTO `albums` VALUES (5, ‘Ursuladélica’, ‘Ursula 1000’);
[/Mysql]
Una vez hemos introducido estos valores, podemos apreciar que hay registros repetidos de Gotan Project, es decir, en el campo «artista» tenemos a Gotan Project en 3 ocasiones, y nos puede ocurrir tantos albums insertemos si dejásemos la estructura de la tabla de esta forma ya que un artista suele tener varios Discos.
Para solucionarlo, se hace lo que se denomina «Normalización de la tabla» y así eliminaríamos posibles datos duplicados almacenando estos en otra tabla que podríamos llamar «artistas». Con lo que tendríamos dos tablas: «artistas» y «albums» que podemos relacionar por un campo numérico «id_artista».
Por tanto la tabla «albums» la modificaremos de la siguiente manera (Fijaros en la línea donde definíamos «artista» que ha sido modificada por «id_artista»:
[Mysql]
—
— Estructura de tabla para la tabla `albums`
—
CREATE TABLE `albums` (
`id_album` int(5) NOT NULL auto_increment,
`album` varchar(100) NOT NULL,
`id_artista` int(5) NOT NULL,
PRIMARY KEY (`id_album`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;
[/Mysql]
Y para terminar con la normalización, creamos la tabla «artistas» de la siguiente manera:
[Mysql]
—
— Estructura de tabla para la tabla `artistas`
—
CREATE TABLE `artistas` (
`id_artista` int(5) NOT NULL auto_increment,
`artista` varchar(100) NOT NULL,
PRIMARY KEY (`id_artista`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
[/Mysql]
Ahora si hacemos una consulta a la tabla «albums» después de haberle aplicado la normalidad, tendriamos el siguiente resultado:
Como véis ya no tenemos el nombre de artista duplicado. A partir de ahora, hacemos referencia a con el identificador numérico (id_artista) a la tabla «artista».
Espero haberos aclarado que significa normalización de bases de datos.