Por qué la mayoría de los diseñadores de bases de datos no van más allá de la tercera forma normal

La normalización es uno de los mandamientos de los profesionales de bases de datos en IT, ya sea que seas un modelador de datos, un administrador de bases de datos o un desarrollador de SQL. Aprendemos sus principios desde temprano, así como algo sobre las formas normales.

Pero si observamos la mayoría de las bases de datos en producción, en el mejor de los casos encontraremos que se ha implementado la tercera forma normal (3NF). Muy pocas bases de datos reflejan formas normales más altas, como la forma normal de Boyce-Codd (BCNF), la cuarta forma normal (4NF) y la quinta forma normal (5NF). Entonces, ¿por qué la mayoría de los diseñadores de bases de datos no van más allá de la 3NF?

Índice de Contenido
  1. Las formas normales
  2. Dependencias de un solo valor y dependencias de varios valores
  3. ¿Hasta dónde debes llegar con la normalización?
  4. ¿Te perdiste algún consejo?

Las formas normales

Para responder esta pregunta, es importante comprender las diferencias entre la 3NF, BCNF, 4NF y 5NF. Aquí tienes definiciones concisas de cada forma normal.

Primera forma normal (1NF)
Cada tabla debe tener una clave primaria, es decir, un conjunto mínimo de atributos que puedan identificar de manera única un registro.
Eliminar grupos repetitivos (categorías de datos que parecerían requerirse un número diferente de veces en diferentes registros) definiendo correctamente los atributos clave y no clave. Atomicidad: Cada atributo debe contener un valor único, no un conjunto de valores.

Segunda forma normal (2NF)
La base de datos debe cumplir con todos los requisitos de la 1NF. Además, si una tabla tiene una clave compuesta, todos los atributos deben estar relacionados con la clave completa. Y los datos duplicados en varias filas de una tabla se mueven a una tabla separada.

Tercera forma normal (3NF)
Los datos almacenados en una tabla deben depender únicamente de la clave primaria y no de ningún otro campo de la tabla. La base de datos debe cumplir con todos los requisitos de la 2NF. Cualquier campo que dependa no solo de la clave primaria, sino también de otro campo, se mueve a una tabla separada.

Cómo instalar y configurar Sybase Adaptive Server Enterprise (ASE) en Linux

Forma normal de Boyce-Codd (BCNF)
No debe haber dependencias funcionales no triviales de atributos en algo distinto a un superset de una clave candidata (llamada superclave).

Cuarta forma normal (4NF)
No debe haber dependencias multi-valor no triviales de conjuntos de atributos en algo distinto a un superset de una clave candidata. Una tabla se dice que está en 4NF si y solo si está en BCNF y las dependencias multi-valor son dependencias funcionales. La 4NF elimina estructuras de datos no deseadas: dependencias multi-valor.

Quinta forma normal (5NF)
No debe haber dependencias de unión no triviales que no se deduzcan de las restricciones clave. Una tabla se dice que está en 5NF si y solo si está en 4NF y todas las dependencias de unión se derivan de las claves candidatas.

Dependencias de un solo valor y dependencias de varios valores

También quiero asegurarme de que tengas un entendimiento claro de los dos tipos de dependencia: dependencia de un solo valor y dependencia de varios valores.

Un ejemplo de dependencia de un solo valor es un empleado que trabaja en un solo departamento en la organización. El empleado podría ser transferido entre departamentos, pero no puede trabajar para dos departamentos simultáneamente.

Un ejemplo común de una dependencia de varios valores se encuentra en casi todas las bases de datos relacionadas con direcciones. Por lo general, en la tabla de Programadores se encuentran las columnas Ciudad, Estado y País. Estas podrían ser texto o incluso mejores, enteros numéricos que realizan búsquedas en el siguiente nivel superior. La Ciudad busca en la tabla de Ciudades, el Estado en la tabla de Estados y el País en la tabla de Países. El problema con este arreglo es que expone el riesgo de direcciones sin sentido, como Chicago, Nueva York, Canadá. Esto se debe a que las dependencias son de varios valores. Una versión completamente normalizada movería la columna de Estado a la tabla de Ciudades y la columna de País a la tabla de Estados, dejando solo la columna de Ciudad en la tabla de Programadores. Luego podríamos crear una consulta que una las tres tablas y presentar esta consulta en el front-end para que el usuario pueda seleccionar la ciudad adecuada, viendo Springfield, IL, Springfield, MA y Springfield, OR.

Qué es sudo y por qué deberías usarlo

Veamos un ejemplo más complejo del problema de la dependencia de varios valores. Un programador dado puede ser competente en varios lenguajes y también puede poseer certificaciones. Cada certificación requiere competencia en uno o más lenguajes, y cada lenguaje puede ser relevante para una o más certificaciones. A medida que el programador desarrolla competencia en un nuevo lenguaje, puede calificar para una o más certificaciones nuevas. Lo que nos gustaría hacer es determinar qué programadores son elegibles para qué certificaciones.

Los Listados A y B crean las tablas y las llenan con algunas filas de muestra. Los Listados C y D son scripts que consultan las tablas, encontrando los programadores que son elegibles para certificaciones. La única diferencia entre las dos consultas es su orden: el Listado C ordena los resultados por certificación, mientras que el Listado D los ordena por programador.

Te animo a ejecutar los Listados A y B, y jugar un poco antes de ver las dos consultas. Intenta descubrir cómo producir la lista de programadores elegibles para las certificaciones. Después de ver mis soluciones, observa si tienes una mejor manera; si es así, publícala en la discusión del artículo o envíamela a [email protected].

¿Hasta dónde debes llegar con la normalización?

Es cierto que cada paso progresivo puede afectar el rendimiento general. He visto casos en los que la normalización se lleva a extremos absurdos. En un proyecto en el que trabajé recientemente, incluso había una tabla para los sexos, ¡como si esta lista fuera a cambiar en cualquier momento pronto!

Donde traces la línea en la arena al final es decisión tuya, pero estarás mejor preparado para hacerlo con un sólido entendimiento de las distintas formas normales y los riesgos de no llegar lo suficientemente lejos.

¿Te perdiste algún consejo?

Revisa el archivo de SQL Server y ponte al día con las ediciones más recientes de la columna de Arthur Fuller.

Cómo eliminar registros duplicados en una base de datos de Access

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Gestión de datos, allí encontraras muchos artículos similares a Por qué la mayoría de los diseñadores de bases de datos no van más allá de la tercera forma normal , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.