Poner una base de datos en tercera forma normal (3NF)

La tercera forma normal (3NF) es un principio de base de datos que respalda la integridad de los datos basándose en los principios de normalización de la base de datos proporcionados por la primera forma normal (1NF) y la segunda forma normal (2NF).

La tercera forma normal (3NF) es un principio de base de datos que respalda la integridad de los datos basándose en los principios de normalización de la base de datos proporcionados por la primera forma normal (1NF) y la segunda forma normal (2NF).

El propósito de 3NF es mejorar el procesamiento de la base de datos y al mismo tiempo minimizar los costos de almacenamiento.

Terceros requisitos de forma normal

Hay dos requisitos básicos para que una base de datos esté en 3NF:

  • La base de datos ya debe cumplir con los requisitos de 1NF y 2NF.
  • Todas las columnas de la base de datos deben depender de la clave primaria, lo que significa que el valor de cualquier columna solo puede derivarse de la clave primaria.

Dependencia de la clave primaria

Exploremos más a fondo lo que queremos decir con el hecho de que todas las columnas deben depender de la clave primaria. Si el valor de una columna se puede derivar tanto de la clave primaria como de otra columna de la tabla, viola 3NF. Considere una tabla de empleados con estas columnas:

  • ID de empleado
  • Primer nombre
  • Apellido

¿Tanto el apellido como el nombre dependen solo del valor de EmployeeID? Bueno, ¿podría Apellido depender de Nombre? No, porque nada inherente a LastName sugeriría el valor de FirstName.

¿Podría FirstName depender de LastName? No otra vez, porque lo mismo es cierto: cualquiera que sea un apellido, no podría proporcionar una pista sobre el valor de FirstName. Por lo tanto, esta tabla es compatible con 3NF.

Pero considere esta Tabla de vehículos :

  • ID del vehículo
  • Fabricante
  • Modelo

El fabricante y el modelo podrían derivarse del VehicleID, pero el modelo también podría derivarse 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 provocar anomalías en los datos. Por ejemplo, puede actualizar el fabricante sin actualizar el modelo, introduciendo imprecisiones.

Mover la columna dependiente adicional a otra tabla y hacer referencia a ella utilizando una clave externa lo haría compatible. Esto daría como resultado dos tablas:

En la Tabla de vehículos a continuación, el ModelID es una clave foránea para la Tabla de modelos:

  • ID del vehículo
  • Fabricante
  • ID del modelo

Esta nueva Tabla de modelos asigna modelos a los fabricantes. Si desea actualizar cualquier información del vehículo específica de un modelo, lo haría en esta tabla, en lugar de en la Tabla de vehículos.

  • ID del modelo
  • Fabricante
  • Modelo

Campos derivados en el modelo 3NF

Una tabla puede contener un campo derivado, que se calcula en función de otras columnas de la tabla. Por ejemplo, considere esta tabla de órdenes de widgets:

  • Número de orden
  • Número de cliente
  • Precio unitario
  • Cantidad
  • Total

El total rompe el cumplimiento de 3NF porque puede obtenerse multiplicando el precio unitario por la cantidad, en lugar de depender completamente de la clave primaria. El total debe eliminarse 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, sino simplemente calcularlo sobre la marcha al realizar consultas a la base de datos. Por ejemplo, podríamos haber utilizado previamente esta consulta para recuperar números de pedido y totales:

SELECCIONE Número de pedido, Total

DE WidgetOrders

Ahora use la siguiente consulta para lograr los mismos resultados sin violar las reglas de normalización:

SELECCIONE Número de pedido, Unidad Precio * Cantidad AS Total

DE WidgetOrders

Rate article
labsfabs.com
Add a comment