Skip to content

Normalización de tablas

El presente es una guía para seguir los estándares de base de datos SQL. Incluye normalizaciones de tablas, nombres y nomenclaturas de tablas y columnas. Así como tipos de datos, respaldos de base de datos, aspectos de seguridad entre otros puntos. Siguiendo los pasos de esta guía puedes crear tu base de datos siguiendo los estándares de GM para SQL y no caer en problemas de auditorías en base de datos 💀.

Normalización de tablas

La normalizacion de tablas es importante para evitar la redundancia de datos y mantener la integridad de los mismos, para ello se deben seguir las siguientes reglas:

Primera forma normal (1FN)

La primera forma normal se cumple cuando cada columna de una tabla contiene valores atómicos, es decir, valores que no se pueden dividir en partes más pequeñas, manteniendo la simpleza de la tabla para evitar una redundancia en los datos.

Ejemplo

Supongamos el caso de la creacion de una tabla llamada Usuarios donde en esta tabla contamos con las siguientes columnas:

IdUsuarioNombreCompletoTelefonoDireccionCiudadPaisCodigoPostalEmailFechaNacimiento
Row 1Cell 2Cell 3Cell 4Cell 5Cell 6Cell 7Cell 8Cell 9
Row 2Cell 5Cell 6Cell 7Cell 8Cell 9Cell 10Cell 11Cell 12
Row 3Cell 8Cell 9Cell 10Cell 11Cell 12Cell 13Cell 14Cell 15

A primera impresión, la tabla Usuarios parece estar bien estructurada, pero si analizamos la tabla, podemos ver que la columna direccion se puede dividir en calle, numero, colonia, estado y pais. Pero, ¿por qué es importante dividir la columna direccion en partes más pequeñas? La respuesta es simple, para evitar la redundancia de datos, aumenta su simpleza y facilita la lectura de los datos.

Entonces, visualizando una forma mejorada, de la tabla Usuarios debemos agregar ademas la creacion de una nueva tabla llamada Direcciones:

ProUsuarios

IdUsuarioNombreCompletoTelefonoIdDireccionEmailFechaNacimiento
Row 1Cell 2Cell 3Row 1Cell 8Cell 9
Row 2Cell 5Cell 6Row 2Cell 11Cell 12

ProDirecciones

IdDireccionCalleNumeroColoniaEstadoPaisCodigoPostal
Row 1Cell 4Cell 5Cell 6Cell 7Cell 8Cell 9
Row 2Cell 7Cell 8Cell 9Cell 10Cell 11Cell 12

Segunda forma normal (2FN)

La segunda forma normal debe cumplir con la primera forma normal y que todos los campos que no son llave dependan de la llave primaria únicamente. En otras palabras, se deben desaclopar las propiedades no relacionadas con la llave primaria.

Por ejemplo

IdMaestroNombreMaestroRFCNombreEscuelaRFCEscuelaSueldoNoSemanaNomina
1Andre EvansCALB3434342Q4ITMSOPE3498573E4712010
2Connor HoganXXXD3454652W4UABCFFGLH7887983R4956611

En esta tabla la llave primaria es IdMaestro, entonces NombreEscuela, RFCEscuela, Sueldo y NoSemanaNomina no dependen estrictamente de ella. Así que estas columnas se saldrían de la tabla, se crearían nuevas tablas y se relacionarían con ésta tabla.

ProMaestros

IdMaestroNombreMaestro
1Andre Evans
2Connor Hogan

ProEscuelas

IdEscuelaNombreEscuelaRFCEscuela
1ITMSOPE3498573E4
2UABCFFGLH7887983R4

ProSueldos

IdSueldoSueldoNoSemanaNomina
1712010
2956611

Tercera forma normal (3FN)

La tercera forma normal debe cumplir con la segunda forma normal y que todos los campos que no son llave dependan de la llave primaria únicamente. En otras palabras, se deben desacoplar las propiedades no relacionadas con la llave primaria.

Ejemplo

Supongamos el caso de la creacion de una tabla llamada Usuarios donde en esta tabla contamos con las siguientes columnas:

IdUsuarioNombreCompletoTelefonoIdDireccionEmailFechaNacimiento
1Omar Flores12345678901omar@correo.com1990-01-01
2Juan Perez09876543212juan@correo.com1995-01-01

Esta tabla a simple vista podemos confirmar que cumple con la primera y segunda forma normal, pero si analizamos la tabla, podemos ver que la columna Email se puede dividir en NombreUsuario y Dominio. Pero, ¿por qué es importante dividir la columna Email en partes más pequeñas? La respuesta es simple, para evitar la redundancia de datos, aumenta su simpleza y facilita la lectura de los datos. Entonces, visualizando una forma mejorada, de la tabla Usuarios debemos agregar ademas la creacion de una nueva tabla llamada Emails:

ProUsuarios

IdUsuarioNombreCompletoTelefonoIdDireccionFechaNacimiento
1Omar Flores123456789011990-01-01
2Juan Perez098765432121995-01-01

ProEmails

IdEmailIdUsuarioNombreUsuarioDominio
11omarcorreo
22juancorreo

Otras formas

En esta guia se mencionan las tres formas normales debido que es hasta donde abarca la Guia de Estándares de GM, pero existen otras formas normales como la cuarta forma normal (4FN), quinta forma normal (5FN), sexta forma normal (6FN) y la forma normal de Boyce-Codd (BCNF). Aunque no se observara aqui, es importante mencionar que estas formas normales son importantes para la normalizacion de tablas.

Puede consultar más información sobre las formas normales en el siguiente enlace.