Normalización vs desnormalización
Las bases de datos relacionales se componen de relaciones (tablas relacionadas). Las tablas están formadas por columnas. Si las tablas son dos grandes (es decir, demasiadas columnas en una tabla), pueden ocurrir anomalías en la base de datos. Si las tablas son dos pequeñas (es decir, la base de datos está formada por muchas tablas más pequeñas), sería ineficiente para realizar consultas. La normalización y la desnormalización son dos procesos que se utilizan para optimizar el rendimiento de la base de datos. La normalización minimiza las redundancias que están presentes en las tablas de datos. La desnormalización (inversa a la normalización) agrega datos redundantes o datos de grupo.
¿Qué es la normalización?
La normalización es un proceso que se lleva a cabo para minimizar las redundancias que están presentes en los datos de las bases de datos relacionales. Este proceso dividirá principalmente tablas grandes en tablas más pequeñas con menos redundancias (llamadas "formas normales"). Estas tablas más pequeñas estarán relacionadas entre sí a través de relaciones bien definidas. En una base de datos bien normalizada, cualquier alteración o modificación en los datos requerirá modificar solo una tabla. La Primera Forma Normal (1NF), la Segunda Forma Normal (2NF) y la Tercera Forma Normal (3NF) fueron introducidas por Edgar F. Codd. La forma normal de Boyce-Codd (BCNF) fue introducida en 1974 por Codd y Raymond F. Boyce. Se han definido formas normales superiores (4NF, 5NF y 6NF), pero rara vez se utilizan.
Una tabla que cumple con 1NF asegura que realmente representa una relación (es decir, no contiene ningún registro que se repita) y no contiene ningún atributo que sea de valor relacional (es decir, todos los atributos deben tener valores atómicos). Para que una tabla cumpla con 2NF, debe cumplir con 1NF y cualquier atributo que no sea parte de ninguna clave candidata (es decir, atributos no primarios) debe depender completamente de cualquiera de las claves candidatas en la tabla. De acuerdo con la definición de Codd, se dice que una tabla está en 3NF, si y solo si, esa tabla está en la segunda forma normal (2NF) y cada atributo en la tabla que no pertenece a una clave candidata debería depender directamente de cada clave candidata de esa tabla. BCNF (también conocido como 3.5NF) captura algunas de las anomalías que no son abordadas por 3NF.
¿Qué es la desnormalización?
La desnormalización es el proceso inverso del proceso de normalización. La desnormalización funciona agregando datos redundantes o agrupando datos para optimizar el rendimiento. Aunque agregar datos redundantes suena contraproducente, a veces la desnormalización es un proceso muy importante para superar algunas de las deficiencias en el software de la base de datos relacional que pueden incurrir en fuertes penalizaciones de rendimiento con bases de datos normalizadas (incluso ajustadas para un mayor rendimiento). Esto se debe a que unir varias relaciones (que son el resultado de la normalización) para producir un resultado en una consulta a veces puede ser lento, dependiendo de la implementación física real de los sistemas de base de datos.
¿Cuál es la diferencia entre normalización y desnormalización? - La normalización y la desnormalización son dos procesos completamente opuestos. - La normalización es el proceso de dividir tablas más grandes en más pequeñas reduciendo los datos redundantes, mientras que la desnormalización es el proceso de agregar datos redundantes para optimizar el rendimiento. - Se realiza la normalización para evitar anomalías en las bases de datos. - La desnormalización generalmente se lleva a cabo para mejorar el rendimiento de lectura de la base de datos, pero debido a las restricciones adicionales utilizadas para la desnormalización, las escrituras (es decir, operaciones de inserción, actualización y eliminación) pueden volverse más lentas. Por lo tanto, una base de datos desnormalizada puede ofrecer un peor rendimiento de escritura que una base de datos normalizada. - A menudo se recomienda "normalizar hasta que duela, desnormalizar hasta que funcione". |