Hemos analizado varios aspectos de la normalización de una tabla de base de datos. En primer lugar, discutimos los principios básicos de la normalización de las bases de datos. La última vez, exploramos los requisitos básicos establecidos por la primera forma normal (1NF). Ahora, continuemos nuestro viaje y cubramos los principios de la segunda forma normal (2NF).
Los requisitos generales de 2NF
- Eliminar subconjuntos de datos que se aplican a varias filas de una tabla y colocarlos en tablas separadas.
- Cree relaciones entre estas nuevas tablas y sus predecesoras mediante el uso de claves externas.
Estas reglas se pueden resumir en una frase sencilla: 2NF intenta reducir la cantidad de datos redundantes en una tabla extrayéndolos, colocándolos en nuevas tablas y creando relaciones entre ellas.
Veamos un ejemplo. Imagine una tienda en línea que mantiene la información de los clientes en una base de datos. Pueden tener una sola tabla llamada Customers con los siguientes elementos:
- Número de cliente
- Nombre
- Apellido
- Dirección
- Ciudad
- Estado
- ZIP
Una breve mirada a esta tabla revela una pequeña cantidad de datos redundantes. Estamos almacenando las entradas «Sea Cliff, NY 11579» y «Miami, FL 33157» dos veces cada una. Ahora bien, esto podría no parecer un almacenamiento muy añadido en nuestro simple ejemplo, pero imagina el espacio desperdiciado si tuviéramos miles de filas en nuestra tabla. Además, si el código postal de Sea Cliff cambiara, tendríamos que hacer ese cambio en muchos lugares de la base de datos.
En una estructura de base de datos compatible con 2NF, esta información redundante se extrae y almacena en una tabla separada. Nuestra nueva tabla (llamémosla ZIPs) podría tener los siguientes campos:
- ZIP
- Ciudad
- Estado
Si queremos ser supereficientes, podemos incluso llenar esta tabla por adelantado – la oficina de correos proporciona un directorio de todos los códigos postales válidos y sus relaciones ciudad/estado. Seguramente, usted ha encontrado una situación en la que este tipo de base de datos fue utilizado. Alguien que está tomando una orden podría haberle pedido su código postal primero y luego saber la ciudad y el estado desde donde estaba llamando. Este tipo de arreglo reduce el error del operador y aumenta la eficiencia.
Ahora que hemos eliminado los datos duplicados de la tabla Clientes, hemos satisfecho la primera regla de la segunda forma normal. Todavía tenemos que usar una llave foránea para atar las dos mesas juntas. Usaremos el código postal (la clave principal de la tabla de ZIPs) para crear esa relación. Aquí está nuestra nueva mesa de clientes:
- Número de cliente
- Nombre
- Apellido
- Dirección
- ZIP
Ahora hemos minimizado la cantidad de información redundante almacenada en la base de datos y nuestra estructura está en segunda forma normal.