jueves, 31 de mayo de 2018

Normalización de Datos

Buenas tardes, el día de hoy les enseñaré la importancia de la normalización de datos, es común, sobre todo cuando somos novatos en el diseño de Bases de Datos, que cometamos el error de redundar datos, es decir, repetir datos en diferentes tablas sin necesidad, o que al momento que deseamos añadir algún dato nuevo tengamos que rehacer las tablas, pues bien, si seguimos algunas reglas básicas no tendremos necesidad de eso, y podremos diseñar bases de datos fácilmente escalables.

Pero comenzaremos por definir la gran pregunta

¿Qué es normalización de Datos?



La normalización es el proceso de organizar los datos de una base de datos. Se incluye la creación de tablas y el establecimiento de relaciones entre ellas según reglas diseñadas tanto para proteger los datos como para hacer que la base de datos sea más flexible al eliminar la redundancia y las dependencias incoherentes.


¿Para qué se normalizan las bases de Datos?


Las bases de datos deben normalizarse para:
  • Evitar la redundancia de datos
  • Disminuir los problemas de actualización
  • Proteger la integridad de los datos
Para que las tablas estén normalizadas deben cumplir las siguientes reglas:

  • Cada tabla debe tener un nombre único (de hecho SQL SERVER no permite crear una tabla con un nombre duplicado)
  • No debe haber dos columnas iguales.
  • No se permiten duplicados
  • Todos los datos de una columna deben ser del mismo tipo.

Caso ejemplo práctico


Sin poder apreciar un ejemplo práctico, será imposible comprender estas reglas, por lo que explicaremos las reglas con un ejemplo.

Considere el siguiente caso:

Se requiere realizar una base de datos donde llevemos el stock de la mercancía, identificando el producto, y sus existencias en los distintos almacenes. En una base de datos sin normalizar quedaría un registro mas o menos así:

Sin normalizar

Producto
Marca
Stock Almacen 1
Stock Almacen 2
Memoria USB
Kingston
3
4
Memoria USB
Adata
5
3
Memoria SD
Kingston
2
7
Memoria SD
Adata
1
4
En este ejemplo encontramos varios errores graves.

  1. La tabla no tiene un identificador único, no hay ningún campo que identifique la tabla, podría haber duplicados en la información
  2. Podría haber una falta de ortografía en alguno de los productos y se perderían los históricos.
  3. ¿Que pasa si se abriera un tercer almacén?, en ese caso tendríamos que crear un nuevo campo a la tabla, con columna tantos almacenes tenga

Existen 5 niveles de normalización pero solo nos dedicaremos a los primeros tres:

Primera forma normal

Tabla Productos
Id_producto
Producto
Marca
Stock_almacen1
Stock_almacen2
1
Memoria USB
Kingston
3
4
2
Memoria USB
Adata
5
3
3
Memoria SD
Kingston
2
7
4
Memoria SD
Adata
1
4
Para que una base de datos se encuentre en su primera forma normal debemos:

  • Eliminar los grupos repetidos de las tablas individuales.
  • Crear tablas independientes para cada conjunto de datos relacionados
  • Identificar cada conjunto de datos relacionados con una clave principal.
En la tabla anterior vemos que ya la tabla de productos sigue teniendo un identificador, aunque siguen los datos duplicados, ya podríamos llevar una relación con respecto a las ventas

Segunda forma normal


Tabla Productos
Id
Nombre
1
Memoria USB
2
Memoria SD

Tabla de Marcas
Id
Nombre
1
Kingston
2
AData

Tabla Existencias
Id
Id_producto
Id_marca
Stock_almacen1
Stock_almacen2
1
1
1
3
4
2
1
2
5
3
3
2
1
2
7
4
2
2
1
4


Para que una base de datos se encuentre en su segunda forma normal debemos:

  • Crear tablas independientes para conjuntos de valores que apliquen a varios registros.
  • Relacionar estas tablas con una clave externa
Como vemos en la tablas anteriores, creamos más tablas con las relaciones, únicamente son dos productos, con dos marcas distintas, así que creamos las tablas Productos y la tabla Marcas y la existencia en una nueva tabla llamada existencias donde relacionamos la tabla productos, con la tabla Marcas, de esta manera, ya no podrá haber errores en la captura de los productos y las marcas, pero aún tenemos dos columnas donde muestra la existencia por almacén, y para eso usaremos una tercera forma normal

Tercera forma normal

Para que una base de datos se encuentre en su tercer forma normal debemos:

  • Los campos que no son clave no deben tener dependencias
Tabla Productos
Id
Nombre
1
Memoria USB
2
Memoria SD

Tabla de Marcas
Id
Nombre
1
Kingston
2
AData


Tabla Almacenes
Id
Almacén
1
Almacen 1
2
Almacén 2


Tabla Existencias
Id
Id_producto
Id_marca
Id_almacen
Existencia
1
1
1
1
3
2
1
1
2
4
3
1
2
1
5
4
1
2
2
3
5
2
1
1
2
6
2
1
2
7
7
2
2
1
1
8
2
2
2
4


Como vemos en esta forma normal. tenemos las tablas separadas, cada tabla es una entidad y hablaremos de la definición en un post futuro, tenemos tablas de productos, si se quiere agregar un producto, simplemente se inserta un nuevo registro; tabla de marcas, si se da de alta una nueva marca, simplemente se agrega en la tabla; tabla de almacenes y esto es muy importante, si se agrega uno o mil almacenes no tendremos que crear una columna por cada almacén, solo se da de alta en la tabla y listo; y por último tenemos la tabla de existencias, donde nos dirá por producto, por marca y por almacén cual es la existencia, de esta manera, nuestra tabla esta correctamente normalizada y tendrá integridad, no habrá redundancia y será totalmente escalable.

Hasta aquí el post queridos lectores, espero haya sido de utilidad, espero compartan, comenten, den +1 o clic a algún anuncio que les interese.

Saludos

Referencias

Banderas de Visitantes

Flag Counter