Módulo 4 · Relacionar tablas

Conecta tablas con claves y relaciones

Entiende cómo se relacionan los datos antes de escribir un JOIN.

20 minNivel InicialAntes necesitas: Tablas, filas y columnas

0 de 45 lecciones

Al terminar, podrás

  • Distinguir una clave primaria de una clave foránea.
  • Interpretar una relación uno-a-muchos.
  • Reconocer un identificador que no tiene fila relacionada.

Recupera lo aprendido: ¿Por qué nombre no siempre basta para identificar una fila de clientes?

La idea clave

Una relación conecta filas de tablas distintas mediante valores compatibles. La clave primaria identifica una fila de forma única; una clave foránea guarda uno o varios valores que deben corresponder a una clave de la tabla relacionada. En los ejemplos iniciales del curso usamos una sola columna que referencia la clave primaria.

Modelo mental: autores.id es el número estable de cada autor. libros.autor_id no contiene el nombre: contiene ese número para señalar a qué autor pertenece el libro.

No confundas “identificar” con “referenciar”: una clave primaria debe identificar una fila de forma única. Una clave foránea, en cambio, puede repetirse: varios libros pueden guardar el mismo autor_id porque todos señalan al mismo autor.

La sintaxis básica

Esquema simplificado
CREATE TABLE autores (
  id INTEGER PRIMARY KEY,
  nombre TEXT NOT NULL
);

CREATE TABLE libros (
  id INTEGER PRIMARY KEY,
  titulo TEXT NOT NULL,
  autor_id INTEGER,
  FOREIGN KEY (autor_id) REFERENCES autores(id)
);

La clave foránea protege una relación de existencia: si se aplica la restricción, un autor_id no nulo debe corresponder a un autores.id existente.

Ejemplo paso a paso

Tabla autores
idnombre
1Isabel Allende
2Gabriel García Márquez
3Rosa Montero
4Julio Cortázar
5Ursula K. Le Guin
Tabla libros
idtituloautor_id
1La casa de los espíritus1
2Cien años de soledad2
3La ridícula idea de no volver a verte3
4Rayuela4
5Los desposeídos5
6El amor en los tiempos del cólera2
7La mano izquierda de la oscuridad5

Antes de unir las tablas, observa el dato que crea la relación.

SQL
SELECT id, titulo, autor_id
FROM libros
ORDER BY id;
Resultado esperado
idtituloautor_id
1La casa de los espíritus1
2Cien años de soledad2
3La ridícula idea de no volver a verte3
4Rayuela4
5Los desposeídos5
6El amor en los tiempos del cólera2
7La mano izquierda de la oscuridad5

Cómo funciona

  1. El libro 2 guarda autor_id = 2.
  2. Ese valor señala la fila autores.id = 2, Gabriel García Márquez.
  3. El libro 6 repite el mismo identificador porque pertenece al mismo autor.
  4. La relación uno-a-muchos permite que un autor aparezca en varios libros sin duplicar su nombre en cada fila.
Comprueba tu comprensión

¿Qué columna es la clave foránea en el ejemplo?

Un error habitual

Guardar un identificador que no existe

Ejemplo problemático
INSERT INTO libros (id, titulo, autor_id)
VALUES (8, 'Libro de prueba', 99);

Si la clave foránea está activa, el motor debe rechazar la fila porque no existe autores.id = 99. En SQLite la aplicación debe habilitar la comprobación de claves foráneas para cada conexión y no depender del valor predeterminado.

Practica con datos

Laboratorio SQL

Resuelve la consulta

Pendiente

Escribe una consulta que muestre el título y el autor_id de todos los libros.

Resultado esperado: 7 filas con titulo, autor_id. El orden de las filas no importa.

Ver tablas y datos

Cargando la estructura del ejercicio…

La consulta usa datos ficticios y se ejecuta solo en este navegador.

Fuentes técnicas consultadas

Las fuentes definen las claves foráneas como restricciones de relación entre tablas y documentan la activación específica necesaria en SQLite.

Comprueba si puedes explicarlo

Dos pedidos tienen cliente_id = 1. ¿Violan por ello una clave foránea?

Ver respuesta razonada

No. Varios pedidos pueden referirse al mismo cliente. La clave foránea exige que exista el cliente 1; una restricción UNIQUE adicional impediría repetir esa referencia.

Responde antes de abrir la explicación. Si necesitaste ayuda, cierra la respuesta y vuelve a explicarlo con tus palabras antes de dar la lección por aprendida.

Qué debes recordar

  • La clave primaria identifica una fila de la tabla referenciada.
  • La clave foránea guarda el valor —o los valores— que referencian la clave de una fila relacionada.
  • Una relación uno-a-muchos evita repetir los datos descriptivos de la entidad principal.

A continuación: Continúa con Une coincidencias con INNER JOIN.

Conceptos relacionados

Para decidir qué datos pertenecen a cada tabla, continúa con la normalización de bases de datos: 1FN, 2FN y 3FN. El ejemplo conserva precios históricos y reconstruye pedidos con JOIN.