Tercera forma normal en DBMS con ejemplos

Rodrigo Ricardo Publicado el 14 noviembre, 2020 5 minutos y 18 segundos de lectura

Normalización

El proceso de normalización de una base de datos implica asegurarse de que las tablas dentro de la base de datos estén organizadas y encajen entre sí. Cada tabla debe almacenar información sobre un solo tema, y ​​las columnas y campos deben contener datos sobre ese tema únicamente. En otras palabras, no almacene datos sobre cortadoras de césped en su base de datos de música y no tenga un campo para los números de pieza del carburador Toro en su tabla de álbumes.

El propósito de la tercera forma normal (3NF) es reducir aún más el desorden y las dependencias restantes del trabajo de la primera y segunda forma normal.

Dependencia transitiva

En la segunda forma normal, una tabla tiene un propósito singular y todas sus columnas se basan en la clave principal. Sin embargo, es posible que entre estas columnas se escondan dependencias y relaciones.

Esto se llama dependencia transitiva , por lo que el valor de una columna o campo dentro de una tabla se basa en otra columna en esa misma tabla, lo que se facilita a través de otra columna ubicada entre ellas.

Para que una tabla esté en la tercera forma normal, debe cumplir con los siguientes requisitos:

  • Ya está en la segunda forma normal (2NF).
  • Contiene solo columnas o campos que no tienen dependencia transitiva.

Nuevamente, la dependencia transitiva significa dependencia entre columnas de la misma tabla. Piense en Artista, Nacionalidad, Artista y Obra de Arte. Los valores de ArtistNationality y Artist dependen de la Obra de Arte; una vez que averiguamos la Obra de Arte, conocemos al Artista y la Nacionalidad del Artista. Pero ArtistNationality depende del valor de Artist. Esta es una dependencia transitiva. Veamos algunos ejemplos más.

Clave primariaColumna 1Columna 2¿Transitivo?
Identificación del clientenombre de pilaapellidoNo: estos dos campos no son dependientes ya que no necesita uno para obtener el otro y no puede determinar uno de los
artistIDcódigo de paísnombre del paísSí: el nombre del país depende del código del país, que depende de artistID.
albumIDfecha de lanzamientocubrirNo: no existe relación entre los datos de lanzamiento de un álbum y la portada (en este caso, un enlace a la imagen de portada)

Para llegar a la tercera forma normal, debemos asegurarnos de que todas las columnas solo dependan de la clave principal. Eso significa que tenemos que sacar el código de país de la tabla de artistas. Hemos agregado el nombre del país a la tabla para resaltar aún más el problema con la normalización:

La tabla debe normalizarse
Necesita normalizar

Está bien que el código de país exista en la tabla de artistas, pero tener el nombre del país infringe la tercera regla de forma normal. Como no podemos obtener el nombre del país sin el código, no podemos obtener el código sin la identificación del artista, que ilustra el concepto de dependencia transitiva.

3NF: Ejemplos

Veamos algunos ejemplos que utilizan la base de datos de música ficticia como tema.

Ejemplo 1

Para solucionar el problema, crearemos otra tabla llamada países y trasladaremos el código y el nombre del país a esta tabla. El código de país se convertirá en la clave principal en la tabla de países. Lo retendremos en la tabla del artista como clave externa.

Códigos de país 3NF
Códigos de país 3NF

Ejemplo 2

En la tabla de álbumes, tenemos los siguientes campos: albumTitle, artistID, rating y ratingNotes (comentarios sobre por qué se dio una calificación específica).

Necesita normalizar
Necesita normalizar

Dado que ratingNotes depende de la calificación, que depende del ID del álbum, tenemos otra dependencia transitiva que debe trasladarse a una nueva tabla. En este caso, crearemos una tabla de calificaciones y trasladaremos la calificación, las notas y el ID de álbum a esa tabla, lo que nos permite conectar un álbum a una calificación sin confundirlos.

Normalizado: ¿pero útil?
3NF normalizado

El problema aquí es que podríamos haber empeorado las cosas al tratar de mejorarlas. ¿Realmente duele tener el nombre del país y el código del país en la tabla de artistas?

Preocupaciones prácticas

Desde la perspectiva de la integridad de los datos, la tercera forma normal puede ser un objetivo noble, pero a veces no es práctico. A medida que crece una base de datos y aumenta el número de tablas, la sobrecarga para mantener las relaciones (claves primarias y externas) a veces puede ser excesiva, por lo que volver a la segunda forma normal tiene más sentido.

Las acciones que realizamos en nuestro segundo ejemplo no fueron del todo necesarias. ¿Por qué trasladar las notas de calificación y calificación a otra tabla? ¿Por qué no dejar el campo en el álbum? Tener una tabla grande para almacenar el ID de álbum, el ID de calificación y los comentarios genera mucha más sobrecarga.

Resumen de la lección

Revisemos. El proceso de normalización de una base de datos implica asegurarse de que las tablas que contiene estén organizadas y encajen entre sí. Cada tabla debe almacenar información sobre un solo tema, y ​​las columnas y campos deben contener datos sobre ese tema únicamente. La tercera forma normal (3NF) es un medio de organizar tablas de base de datos eliminando las dependencias transitivas de un sistema relacional. En dependencia transitiva , el valor de una columna o campo dentro de una tabla se basa en otra columna en esa misma tabla, que se facilita a través de otra columna ubicada entre ellos. Para que una tabla esté en la tercera forma normal, debe cumplir con los siguientes requisitos:

  • Ya está en la segunda forma normal (2NF) y
  • Contiene solo columnas o campos que no tienen dependencia transitiva

Después de ver la tercera forma normal en acción, sabemos que este enfoque puede salirse de control. Sin embargo, dado que las bases de datos pueden crecer tanto en complejidad como en tamaño, recuperar datos de ellas puede llevar bastante tiempo. Aún así, 3NF es un objetivo por el que luchar, aunque la perfección absoluta no siempre es necesaria.

Explora más sobre este tema

Selecciona un tema y sigue aprendiendo...

Rodrigo Ricardo
Rodrigo Ricardo Editor y fundador