BASES DE DATOS NORMALIZACION
Normalización ¿Qué es la normalización? Es la aplicación de un conjunto de reglas que permite aprobar la construcción de un modelo de base de datos relacionales. 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.
Normalización ¿Para que se normaliza? Evitar la redundancia de los datos (datos iguales). Los datos redundantes desperdician el espacio de disco y crean problemas de mantenimiento. Evitar problemas de actualización de los datos en las tablas. Proteger la integridad de los datos.
Normalización ¿Para que se usan? Para corregir errores en el diseño de la base de datos. Mientras se puedan aplicar más de estas reglas o formas normales a una tabla, habrán menos anomalías o errores lógicos al momento de efectuar el diseño de nuestras tablas. Si decide infringir una de las tres primeras reglas de la normalización, asegúrese de que su aplicación se anticipa a los problemas que puedan aparecer, como la existencia de datos redundantes y de dependencias incoherentes.
Formas Normales Forma Normal: Regla que define una característica que una relación debe cumplir. Las Formas Normales se aplican a cada tabla en la base de datos relacional.
Formas Normales Existen diferentes formas normales para aplicar. Generalmente se parte con la mas básica y se va subiendo de nivel. Esto no indica que se apliquen en forma iterativa. Existen tablas que no pueden seguir normalizándose.
Formas Normales Esquema del orden de las formas normales.
Forma Normal 1 (FN1) Una relación esta en FN1 si y solo si todos los atributos son atómicos. Además, debe haber solo una llave primaria. Un atributo es atómico si representa solo un valor. No deben existir mas valores en el campo de la tabla. Si existen, se eliminan y se emplean en nuevas relaciones.
Forma Normal 1 (FN1) Ejemplo: Tenemos la siguiente relación: La llave primaria es factura En este caso producto, cantidad y precio no es atómico. Que pasaría si fueran mas de tres productos? Observe los campos sin información. facturaclientenombreDirecciónproducto1cantidad1precio1producto2cantidad2precio2producto3cantidad3precio3fecha Juan1av. 2P P P María5C.z1P P Byron4c. 3-1P
Forma Normal 1 (FN1) Se eliminan los grupos repetitivos. Se agrega el campo línea y este formara parte de la llave primaria en conjunto con factura. facturalíneaclientenombredireccionproductocantidadprecio fecha Juan1av. 2P Juan1av. 2 P Juan1av. 2 P María5C.z1p María 5C.z1 p Byron4c. 3-1p
Forma Normal 2 (FN2) Una relación esta en FN2 si y solo si la relación esta en FN1 y todos los atributos dependen totalmente de la llave primaria. No deben depender de algún elemento que la componga, si la llave es compuesta. Si eso ocurre, se eliminan de la relación.
Forma Normal 2 (FN2) Ejemplo: Usando la tabla resultado de FN1 Vemos que no todos los atributos dependen totalmente de la llave primaria (factura y línea). Se observa que estos son redundantes. facturalíneaclientenombredireccionproductocantidadprecio fecha Juan1av. 2P Juan1av. 2 P Juan1av. 2 P María5C.z1p María 5C.z1 p Byron4c. 3-1p
Forma Normal 2 (FN2) Esto nos lleva a crear una nueva tabla con los campos señalados. Teniendo como llave el campo Factura. A esta tabla se le puede llamar encabezado de factura FacturaClienteNombreDirecciónfecha Juan1av María 5C.z Byron 4c
Forma Normal 2 (FN2) Luego nos queda la tabla con los campos restantes y conservando su misma llave primaria. (factura y línea) A esta tabla se le puede llamar detalle de factura facturalíneaproductocantidadprecio 10011P P P p p p
Forma Normal 3 (FN3) Una relación esta en FN3 si y solo si esta en FN2 y todos los atributos dependen directamente de la llave primaria. No deben existir dependencias transitivas. Una dependencia transitiva existe cuando un elemento depende de otro elemento que depende directamente de la llave primaria. (A->B->C).
Forma Normal 3 (FN3) Ejemplo: Tomando la tabla encabezado de factura de la FN2. En esta tabla existe dependencia transitiva ya que cliente depende de factura pero nombre y dirección dependen de cliente por lo tanto no dependen directamente de la llave primaria. FacturaClienteNombreDirecciónfecha Juan1av María 5C.z Byron 4c
Forma Normal 3 (FN3) Eliminando las transitividades quedan las siguientes relaciones: Tabla Encabezado Factura Tabla Cliente En ambos casos, los atributos de la relación dependen directamente de la llave primaria. FacturaClientefecha ClienteNombreDirección 43Juan1av. 2 55María 5C.z1 73Byron 4c. 3-1
Forma Normal de Boyce-Codd (FNBC) Una relación esta en FNBC si y solo si todos sus determinantes son llaves de la relación. Un elemento es determinante cuando un atributo determina a otro (A->C). Si se demuestra que la relación esta en FNBC, tiene que estar en FN2.
Forma Normal de Boyce-Codd (FNBC) Ejemplo FNBC Estudiante(cod-e, rut, cod-asig) Llaves candidatas {cod-e, cod-asig} {cedula, cod-asig} Hay mas de una llave candidata Una llave candidata es un elemento que podría ser llave. Las llaves candidatas son compuestas
Forma Normal de Boyce-Codd (FNBC) Cod-eCod-asigDPI Cod-eCod-asig Cod-eDPI El resultado serian dos tablas, la primera con la llave (Cod-e, Cod.asig) y la segunda con la llave(Cod-e)