En las clases anteriores aprendimos a identificar entidades, atributos, claves primarias, relaciones y formas normales. También aprendimos a crear tablas con CREATE TABLE, tipos de datos y restricciones.
Ahora damos un paso fundamental: conectar las tablas entre sí mediante claves foráneas y hacer que PostgreSQL controle que esas conexiones sean válidas.
Idea central: una clave primaria identifica un registro; una clave foránea conecta ese registro con otro registro de otra tabla.
Imagina que tenemos esta tabla:
clientes| cliente_id | nombre |
|---|---|
| 1 | María |
| 2 | Juan |
| 3 | Ana |
Y posteriormente registramos un pedido:
| pedido_id | cliente_id |
|---|---|
| 1001 | 1 |
Tiene sentido porque el cliente 1 existe.
Pero ¿qué pasa si registramos?
| pedido_id | cliente_id |
|---|---|
| 1002 | 999 |
El cliente 999 no existe.
Sin una clave foránea, la base de datos podría aceptar ese registro. Tendríamos entonces un pedido que apunta a un cliente inexistente.
Ese es precisamente el tipo de problema que queremos evitar.
Una clave foránea (Foreign Key o FK) es una columna de una tabla que hace referencia a la clave primaria de otra tabla.
Por ejemplo: