Existen 3 niveles de Normalización que deben respetarse para
poder decir que nuestra Base de Datos, se encuentra NORMALIZADA, es decir, que
cumple con los requisitos naturales para funcionar optimamente y no perjudicar
las Performance por mala arquitectura. Estas 3 reglas de Normalización se las
conoce como las 3 FORMAS NORMALES.
La Primera Forma Normal Esta primera Forma Normal, nos lleva
a no repetir datos en nuestras tablas. Los famosos maestro – detalle, deben
aplicarse a la estructura de la tabla. Si nuestra tabla de ventas repite una y
otra vez (por cada venta), el nombre, el domicilio y otros datos del Cliente,
es que no hemos aplicado esta Normalizaciòn.Si tenemos una tabla clientes, en
la tabla ventas, solo debería figurar el código del cliente, para que el resto
de los datos se puedan referenciar automáticamente sin problemas y sin duplicar
información. Lo mismo ocurriría en una tabla de detalle de ventas, si por cada ítem
vendido colocamos el detalle del producto, con su descripción, medidas, etc…Tendríamos
un desaprovechamiento de espacio y recursos muy grande. Para ello, tendremos
nuestra tabla maestra de Productos y con solo grabar el código de dicho
producto en nuestra tabla de ventas, será suficiente.
La Segunda Forma Normal (Si o si debe estar previamente
aplicada la Primera Forma Normal) La Segunda Forma Normal nos habla de que cada
columna de la tabla debe depender de la clave. Esto significa que todo un
registro debe depender únicamente de la clave principal, si tuviéramos alguna
columna que se repite a lo largo de todos los registros, dichos datos deberían
atomizarse en una nueva tabla. Veamos un ejemplo
Venta id Teñid Fecha Venta Cliente
Venta Producto Id Cantidad
1 1 01/12/2007 2 2334 10
1 2 01/12/2007 2 3333 2
1 3 01/12/2007 2 66643 34
1 4 01/12/2007 2
21 3
2 1
02/12/2007 5 3566 6
Ahí tenemos un claro problema!!!Acaso no se busca NO REPETIR
DATOS ?Si toda una venta tendrá el mismo número de Cliente y la misma Fecha…Por
que no crear una Tabla de MAESTRO DE VENTAS y que contenga esos 2 datos ?Es
evidente que la columna Cliente Venta y Fecha Venta se repetirán por cada venta
realizada. Es por ello que proponemos el siguiente esquema
Venta id Producto Id Cantidad
1 1 2334 10
1 2 3333 2
1 3 66643 34
1 4 21 3
2 1 3566
6
Y ahora nuestra nueva tabla maestra
Venta id Fecha
Venta Cliente Venta
1 01/12/2007
2
2 02/12/2007
5
Entonces, nuestra 2da Forma Normal nos habla de que cada
columna de una tabla debe depender de toda la clave y no constituir un dato único
para cada grupo de registros.
La Tercera Forma Normal En realidad si nos guiamos en el
ejemplo de esta nota, ya no quedaría normalización por aplicar y podríamos
decir que nuestro ejemplo cumple con las 3 formas normales, ya que la 3ra Forma
Normal nos habla de que:
Ninguna Columna puede depender de una columna que no tenga
una clave
No puede haber datos derivados
En el 2do ejemplo hemos descubierto campos que dependían de
la clave principal (Venta id) y que podrian incluirse en una tabla maestra.
Pero supongamos un ejemplo donde ciertas columnas no dependen de la clave
principal y si dependen de una columna de nuestra tabla.
VentaID ItemID ProductoID Cantidad Descripcion Medida Proveedor
1 1 3455
12 Impresora
HP LJ8000 122cm 1
1 2 2455
34 Scanner
HP A3555 33cm 1
2 1 5444
21 Mouse
HP Wireless – 1
Esto es muy normal encontrar en bases mal normalizadas.
Vemos que los campos DESCRIPCION, MEDIDA y PROVEEDOR no dependen de VENTAID y
es por ello que no deberían estar dentro de la tabla de detalle de ventas, ya
que dependen de PRODUCTOID.Aqui no se trata ya de eliminar grupos repetidos de
datos (1ra Forma Normal) sino que ante la inclusión de una clave perteneciente
a otra tabla, cualquier campo que sea subordinado de dicha clave debe estar en
otra tabla y no en nuestra tabla detalle.
Conclusión Finalmente si tomamos en cuenta que una tabla de
detalle de venta (ítem x ítem) puede contener un volumen de millones de
registros, al haberle aplicado las 3 formas normales nos estaremos ahorrando
varios Gigabytes de tamaño en dicha tabla y por supuesto mejorado notablemente
la performance.
No hay comentarios:
Publicar un comentario