Original article: Database Normalization – Normal Forms 1nf 2nf 3nf Table Examples

En bases de datos relacionales, especialmente las grandes, necesitas ordenar las entradas, así otros mantenedores y administradores puedan leerlos y trabajar en ellos. Por eso la normalización de base de datos es importante.

En simples palabras, la normalización de base de datos implica organizar una base de datos en varias tablas para reducir redundancia. Puedes diseñar la base de datos para seguir cualquiera de los tipos de normalización, tales como 1 NF, 2NF y 3NF.

En este artículo, miraremos qué es normalización de base de datos en detalle y su propósito. También miraremos los tipos de normalización – 1NF, 2NF, 3NF – con ejemplos.

Que cubriremos

¿Qué es normalización de base de datos?

La Normalización de Base de Datos es un principio de diseño de Base de Datos para organizar los datos de una manera consistente y estructurada.

Te ayuda en evitar redundancia y mantener la integridad de la Base de Datos. También te ayuda en eliminar características indeseables asociados con la inserción, eliminación, y actualización.

¿Cuál es el propósito de la normalización?

El propósito principal de la Normalización de Base de Datos es evitar complejidades, eliminar duplicados, y organizar los datos de una manera consistente. En Normalización, los datos están divididos en varias tablas enlazadas juntas con relaciones.

Los administradores de Base de Datos son capaces de lograr estas relaciones usando las llaves primarias, llaves foráneas, y llaves compuestas.

Para hacerlo, una llave primaria en una tabla, por ejemplo, employee_wages es relacionado con el valor de la otra tabla, por ejemplo, employee_data.

Nota: Una llave primaria es una columna que identifica únicamente las filas de datos en esa tabla. Es un identificador único tal como ID de empleado, ID de estudiante, Número de Identificación del votante (VIN), y así sucesivamente.

Una llave foránea es un campo que se relaciona a la llave primaria de la otra tabla.

Una llave compuesta es como la llave primaria, pero en vez de tener una columna, tiene múltiples columnas.

¿Qué es 1NF 2NF y 3NF?

1NF, 2NF, y 3NF son los tres primeros tipos de normalización de base de datos. Significan primera forma normal, segunda forma normal y tercera forma normal, respectivamente.

Hay también 4NF (cuarta forma normal) y 5NF (quinta forma normal). Hay inclusive 6NF (sexta forma normal), pero la forma normal más común que verás por ahí es 3NF (tercera forma normal).

Todos los tipos de normalización de base de datos son acumulativos – lo que quiere decir es cada uno se construye uno sobre el otro. Así que todos los conceptos en 1NF también llevan al 2NF, y así sucesivamente.

La primera forma normal – 1NF

Para una tabla ser la primera forma normal, debe cumplir el siguiente criterio:

  • una sola celda no debe contener más de un valor (atomicidad)
  • debe haber una clave primaria para identificación
  • no filas o columnas duplicadas
  • cada columna debe tener solamente un valor por cada fila en la tabla

La segunda forma normal – 2NF

El 1NF solamente elimina los grupos repetitivos, no la redundancia. Por eso hay 2NF.

Una tabla se dice que está en 2NF si cumple el siguiente criterio:

  • ya está en 1NF
  • no tiene dependencia parcial. Es decir, todos los atributos no claves son totalmente dependientes de la clave primaria

La tercera forma normal – 3NF

Cuando una tabla está en 2NF, elimina los grupos repetitivos y la redundancia, pero no elimina la dependencia parcial transitiva.

Esto significa que un atributo no principal (un atributo que no forma parte de la clave del candidato) es dependiente de otro atributo no principal. Esto es lo que la tercera forma normal (3NF) elimina.

Así que, para que una tabla esté en 3NF, debe:

  • estar en 2NF
  • no tiene dependencia parcial transitiva

Ejemplos de 1NF, 2NF, y 3NF

La Normalización de Base de Datos es bastante técnico, pero ilustraremos cada una de las formas normales con ejemplos.

Imagina que estamos construyendo una aplicación de administración de un restaurante. Esa aplicación necesita almacenar datos sobre los empleados de la compañía y comienza creando la siguiente tabla de empleados:

EMPLOYEE_IDNAMEJOB_CODEJOBSTATE_CODEHOME_STATE
E001AliceJ01Chef26Michigan
E001AliceJ02Waiter26Michigan
E002BobJ02Waiter56Wyoming
E002BobJ03Bartender56Wyoming
E003AliceJ01Chef56Wyoming

Todas las entradas son atómicas y hay una clave primaria compuesta (employee_id, job_code) así que la tabla está en la primera forma normal (1NF).

Pero inclusive si solamente sabes el employee_id de alguien, entonces puedes determinar su name, home_state, y state_code (porque deberían ser la misma persona). Esto significa que name, home_state, y state_code son dependientes de employee_id (una parte de la clave primaria compuesta). Así que, la tabla no está en 2NF. Deberíamos separarlos a una tabla distinta para hacerlo 2NF.

Ejemplo de la segunda forma normal (2NF)

Tabla employee_roles

EMPLOYEE_IDJOB_CODE
E001J01
E001J02
E002J02
E002J03
E003J01

Tabla employees

EMPLOYEE_IDNAMESTATE_CODEHOME_STATE
E001Alice26Michigan
E002Bob56Wyoming
E003Alice56Wyoming

Tabla jobs

JOB_CODEJOB
J01Chef
J02Waiter
J03Bartender

home_state ahora es dependiente de state_code. Así que, si sabes el state_code, entonces puedes encontrar el valor de home_state.

Para llevar esto a un paso más allá, deberíamos separarlos otra vez a una tabla distinta para hacerlo 3NF.

Ejemplo de la tercera forma normal (3NF)

Tabla employee_roles

EMPLOYEE_IDJOB_CODE
E001J01
E001J02
E002J02
E002J03
E003J01

Tabla employees

EMPLOYEE_IDNAMESTATE_CODE
E001Alice26
E002Bob56
E003Alice56

Tabla jobs

JOB_CODEJOB
J01Chef
J02Waiter
J03Bartender

Tabla states

STATE_CODEHOME_STATE
26Michigan
56Wyoming

Ahora nuestra base de datos está en 3NF.

Conclusión

Este artículo te mostró lo que es la normalización de base de datos, y sus tipos. También vimos esos tipos de normalización y el criterio que una tabla debe cumplir antes que pueda ser certificado de ser cualquiera de ellos.

Vale la pena notar que la mayoría de las tablas no exceden el límite 3NF, pero puedes también llevarlos al 4NF y 5NF, dependiendo de los requerimientos y el tamaño de los datos a mano.

Si encuentras el artículo útil, no dudes en compartirlo con tus amigos y tu familia.