Poner una base de datos en tercera forma normal
La tercera forma normal (3NF) es un principio de base de datos que admite la integridad de los datos basándose en los principios de normalización de la base de datos proporcionados por First Normal Form (1NF) y Second Normal Form (2NF).TERCER REQUISITO DE FORMA NORMAL
Hay dos requisitos básicos para que una base de datos esté en su tercera forma normal:- La base de datos ya debe cumplir los requisitos de 1NF y 2NF .
- Todas las columnas de la base de datos deben depender de la clave principal , lo que significa que el valor de cualquier columna solo puede derivarse de la clave principal.
ACERCA DE LA DEPENDENCIA DE CLAVE PRIMARIA
Vamos a explorar más a fondo lo que queremos decir con el hecho de que todas las columnas deben depender de la clave principal.Si el valor de una columna puede derivarse tanto de la clave principal como de otra columna de la tabla, viola 3NF. Considere una tabla de Empleados con estas columnas:
- ID de empleado
- Nombre
- Apellido
¿Tanto el apellido como el nombre dependen solo del valor de IdEmpleado? Bueno, ¿podría Apellido depender de Nombre? No, porque nada inherente en Apellido sugeriría el valor de Nombre. ¿Podría Nombre depender de Apellido? No otra vez,por que cualquiera que sea el Apellido, no podría proporcionar una pista sobre el valor de Nombre. Por lo tanto, esta tabla es 3NF obediente.
Pero considere esta tabla de vehículos:
- ID del vehículo
- Fabricante
- Modelo
El fabricante y el modelo podrían derivarse del IdVehiculo, pero el modelo también podría derivar del fabricante porque un modelo de vehículo está hecho solo por un fabricante en particular.
Este diseño de tabla no es compatible con 3NF y, por lo tanto, podría dar como resultado anomalías en los datos. Por ejemplo, puede actualizar el fabricante sin actualizar el modelo, causando imprecisiones.
Para hacerlo compatible, tendríamos que mover la columna dependiente adicional a otra tabla y hacer referencia a ella utilizando una clave externa (foránea).
Esto daría como resultado dos tablas:
Tabla de vehículos
En la tabla a continuación, el IdModelo es una clave externa a la tabla Modelos:
- ID del vehículo
- Fabricante
- ID de modelo
Tabla de modelos
- ID de modelo
- Fabricante
- Modelo
CAMPOS DERIVADOS EN EL MODELO 3NF
Una tabla puede contener un campo derivado, uno que se calcula en función de otras columnas en la tabla. Por ejemplo, considere esta tabla de pedidos de artilugios:- Número de orden
- Número de cliente
- Precio unitario
- Cantidad
- Total
El total rompe el cumplimiento de 3NF porque puede derivarse multiplicando el precio unitario por la cantidad, en lugar de depender completamente de la clave primaria. Debemos eliminarlo de la tabla para cumplir con la tercera forma normal.
De hecho, dado que se deriva, es mejor no almacenarlo en la base de datos.
Simplemente podemos calcularlo "sobre la marcha" cuando realizamos consultas a la base de datos. Por ejemplo, es posible que hayamos utilizado esta consulta anteriormente para recuperar números de orden y totales:
SELECT NumOrden, Total FROM TB_ORDENES
Ahora podemos usar la siguiente consulta:
SELECT NumOrden, PrecioUnitario * Cantidad AS Total FROM TB_ORDENES