Curso de Fundamentos de Bases de Datos

Llaves foráneas: cómo prevenir datos corruptos

Curso de Fundamentos de Bases de Datos

Contenido del curso

Grabación

PlatziLearn

0:007:17

Recursos

Resumen

Imagina que un sistema registra el pedido de un cliente que no existe. Sin una restricción adecuada, la base de datos acepta ese registro sin protestar y genera datos corruptos. Prevenir este tipo de problemas es exactamente la función de las llaves foráneas, el mecanismo que conecta tablas entre sí y asegura que cada referencia apunte a un registro real.

¿Qué son las llaves foráneas y por qué son esenciales?

Cuando se aplican las formas normales —primera, segunda y tercera— una tabla plana se descompone en varias tablas independientes. Cada una almacena únicamente los atributos que le corresponden. Las llaves foráneas son el puente que reconecta esas tablas sin duplicar información.

El concepto central es sencillo: existe una tabla padre que posee la llave primaria y una tabla hija que referencia esa llave primaria a través de una llave foránea [0:55]. De esta forma, la base de datos verifica automáticamente que el valor referenciado exista antes de aceptar la inserción.

¿Cómo se crean las tablas padre?

Primero se crean las tablas que contienen las llaves primarias. En el ejemplo práctico se generan tres tablas padre [1:18]:

  • Países: almacena nombre, código y atributos propios de cada país.
  • Categorías: agrupa los productos según su clasificación.
  • Tipo de cliente: define las categorías de clientes.

Cada una tiene su propia llave primaria y llave única, lo que garantiza que no existan registros duplicados.

¿Cómo se construyen las tablas hija con REFERENCES?

Una vez que las tablas padre existen, se crean las tablas hija utilizando la cláusula REFERENCES para establecer la relación [1:38]. Veamos el caso de la tabla sucursales:

  • Tiene su propia llave primaria.
  • Incluye campos como nombre y ciudad.
  • Contiene un campo pais_id que referencia la llave primaria de la tabla países.

El comando REFERENCES paises(pais_id) indica al motor de base de datos que ese campo es una llave foránea. Cualquier valor insertado en pais_id debe existir previamente en la tabla países; de lo contrario, la operación será rechazada.

Esto materializa la tercera forma normal [2:28]: no es necesario repetir todos los atributos de un país dentro de la tabla sucursales. Basta con almacenar el identificador y la referencia se encarga del resto.

¿Pueden existir tablas con múltiples llaves foráneas?

Por supuesto. A medida que el modelo crece, algunas tablas necesitan referenciar varias tablas padre simultáneamente [3:18].

La tabla pedidos es un ejemplo claro:

  • cliente_id: identifica quién realizó la compra.
  • sucursal_id: indica dónde se generó el pedido.
  • empleado_id: señala qué empleado atendió la operación.

Cada uno de estos campos apunta a la llave primaria de su respectiva tabla padre. El pedido solo almacena su propio ID y la fecha; todo lo demás se obtiene a través de las relaciones.

¿Cómo funciona la tabla detalle de pedidos?

Este patrón se profundiza con la tabla detalle_pedidos [4:05], que separa la información del encabezado del pedido de sus líneas individuales:

  • Referencia el pedido_id de la tabla pedidos.
  • Referencia el producto_id de la tabla productos.
  • Almacena valores propios como cantidad y precio, que pueden variar según ofertas o condiciones del mercado.

Esta separación obedece nuevamente a la tercera forma normal y resuelve relaciones de varios a varios: un pedido puede contener muchos productos y un producto puede aparecer en muchos pedidos.

¿Por qué la integridad referencial protege tus datos?

Sin llaves primarias y sin llaves foráneas, una base de datos carece de integridad referencial [5:08]. Eso significa que cualquier valor —incluso inexistente— podría insertarse sin control, generando reportes erróneos y decisiones basadas en información falsa.

La estrategia de diseño es clara:

  • Crear primero las tablas padre con sus llaves primarias.
  • Construir después las tablas hija referenciando esas llaves.
  • Asegurar que cada relación respete las formas normales.

Con este enfoque, el propio motor de base de datos se convierte en un guardián de la calidad de la información. ¿Qué otra tabla referenciada podrías agregar a este modelo? Comparte tu script en los comentarios.

Llaves foráneas: cómo prevenir datos corruptos