Claves primarias y foráneas
La clave primaria identifica cada fila; la foránea apunta a una fila de otra tabla.
En una base de datos relacional, la clave primaria (primary key) es la columna, o el conjunto de columnas, que identifica cada fila de forma única. En una tabla customers suele ser un id: el cliente 42 es siempre ese cliente y ningún otro, aunque haya dos personas con el mismo nombre. La base rechaza una segunda fila con la misma clave primaria y no deja que quede vacía.
Una clave foránea (foreign key) es una columna de una tabla que guarda la clave primaria de una fila de otra tabla. La tabla orders tiene una columna customer_id, y cada valor apunta a una fila de customers. Así una base conecta datos sin copiarlos: el pedido no repite el nombre y la dirección del cliente, solo dice "cliente 42", y un JOIN de SQL junta las dos cosas cuando las necesitás.
Las claves foráneas además protegen la coherencia. Si están declaradas en el esquema de base de datos, la base no acepta un pedido del cliente 999 cuando no existe ningún cliente 999, y puede impedir que borres un cliente que todavía tiene pedidos. Muchos sistemas de análisis se saltean estos controles para ir más rápido, y por eso la limpieza de datos encuentra tan seguido filas huérfanas.
Para quedarse
- Clave primaria: única y nunca vacía, una por fila.
- Clave foránea: una columna que hace referencia a la clave primaria de otra tabla.
- Conecta tablas sin duplicar datos; los joins siguen esas referencias.
- Declaradas, evitan registros huérfanos, como un pedido de un cliente que no existe.
Para seguir leyendo
- Clave primaria en Wikipedia
- Clave foránea en Wikipedia
- Restricciones y claves en PostgreSQL (en inglés)