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?
- ¿Cuál es el Propósito de la Normalización?
- ¿Qué es 1NF 2NF y 3NF?
- Ejemplos de 1NF, 2NF, y 3NF
- Conclusión
¿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_ID | NAME | JOB_CODE | JOB | STATE_CODE | HOME_STATE |
---|---|---|---|---|---|
E001 | Alice | J01 | Chef | 26 | Michigan |
E001 | Alice | J02 | Waiter | 26 | Michigan |
E002 | Bob | J02 | Waiter | 56 | Wyoming |
E002 | Bob | J03 | Bartender | 56 | Wyoming |
E003 | Alice | J01 | Chef | 56 | Wyoming |
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_ID | JOB_CODE |
---|---|
E001 | J01 |
E001 | J02 |
E002 | J02 |
E002 | J03 |
E003 | J01 |
Tabla employees
EMPLOYEE_ID | NAME | STATE_CODE | HOME_STATE |
---|---|---|---|
E001 | Alice | 26 | Michigan |
E002 | Bob | 56 | Wyoming |
E003 | Alice | 56 | Wyoming |
Tabla jobs
JOB_CODE | JOB |
---|---|
J01 | Chef |
J02 | Waiter |
J03 | Bartender |
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_ID | JOB_CODE |
---|---|
E001 | J01 |
E001 | J02 |
E002 | J02 |
E002 | J03 |
E003 | J01 |
Tabla employees
EMPLOYEE_ID | NAME | STATE_CODE |
---|---|---|
E001 | Alice | 26 |
E002 | Bob | 56 |
E003 | Alice | 56 |
Tabla jobs
JOB_CODE | JOB |
---|---|
J01 | Chef |
J02 | Waiter |
J03 | Bartender |
Tabla states
STATE_CODE | HOME_STATE |
---|---|
26 | Michigan |
56 | Wyoming |
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.