Diccionario

Clave primaria

La columna (o grupo de columnas) que identifica cada fila de una tabla sin repetirse nunca, como un número de cliente.

La clave primaria distingue cada registro: dos clientes pueden llamarse igual, pero no tener el mismo identificador. No admite valores repetidos ni vacíos.

Lo habitual es un número que la base de datos asigna sola. Otras tablas lo usan para referirse a esa fila mediante claves foráneas.

Un ejemplo

En la tabla clientes, la columna id es la clave primaria: el cliente 7 es siempre el mismo, aunque cambie de nombre o de correo.

Por qué importa

La clave primaria identifica de forma única cada fila de una tabla. Sin ella, dos clientes llamados «Ana García» serían indistinguibles y no sabrías a cuál se refiere un pedido. Suele ser una columna numérica que el propio gestor incrementa solo (AUTO_INCREMENT, SERIAL o IDENTITY, según el sistema), o un identificador universal (UUID).

Cumple dos reglas: no puede repetirse ni valer nulo. Además, el gestor crea automáticamente un índice sobre ella, por lo que buscar una fila por su clave primaria es muy rápido. Es también el punto al que apuntan las claves foráneas de otras tablas, así que es la base de todas las relaciones de tu modelo. Elegirla bien al diseñar la tabla evita muchos problemas más adelante.

Confusiones frecuentes

Se confunde con cualquier columna que parezca única, como el correo o el DNI. Esos datos pueden cambiar, repetirse por error o ser privados, por lo que muchos diseñadores prefieren una clave artificial (un número sin significado) y marcar el correo como único con una restricción UNIQUE. También se confunde con la clave foránea: la primaria identifica la propia fila, la foránea referencia la primaria de otra tabla. Y puede ser compuesta, formada por varias columnas juntas, algo habitual en tablas intermedias de relaciones muchos a muchos.

Preguntas frecuentes

¿Puede una tabla tener dos claves primarias?

No, solo una por tabla. Pero esa clave puede ser compuesta por varias columnas. Para otras columnas únicas se usa la restricción UNIQUE.

¿Es mejor un número o un UUID?

Un número autoincremental es más compacto y rápido. Un UUID evita colisiones al generar datos en varios sitios a la vez, a cambio de ocupar más espacio.