0Pricing
SQL Academy · Lección

Claves primarias y unicidad

Comprenda las claves primarias, las claves sustitutas frente a las naturales, las claves compuestas y por qué cada fila necesita un identificador único fiable.

Claves primarias y unicidad es una lección gratuita de SQL Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de SQL Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de SQL Academy incluye 4 lecciones en total.

Por qué cada fila necesita un ID único

Para actualizar o eliminar una fila específica de forma segura, debe poder identificarla sin ambigüedades.

  • Puede haber dos usuarios llamados "Alice Adams"
  • Pero NO puede haber dos usuarios con id = 42
  • El identificador único se denomina clave primaria

Declarar una clave primaria

Marque una columna como clave primaria al crear la tabla:

CREATE TABLE products (
  id    BIGSERIAL PRIMARY KEY,
  sku   VARCHAR(50) NOT NULL,
  name  VARCHAR(200) NOT NULL,
  price NUMERIC(10,2) NOT NULL
);

Clave primaria = NOT NULL + UNIQUE

Una PRIMARY KEY impone automáticamente:

  • NOT NULL: los valores de la clave primaria no pueden faltar
  • UNIQUE: ninguna fila puede compartir el mismo valor de clave primaria con otra

La base de datos también crea un índice único sobre la clave primaria, por lo que las búsquedas por id son rápidas.

Claves sustitutas frente a claves naturales

Tiene dos opciones para la clave primaria:

  • Sustituta: un ID sintético que genera la base de datos (BIGSERIAL, UUID). Es la opción más común en las aplicaciones modernas.
  • Natural: un identificador del mundo real (correo electrónico, ISBN). Es arriesgada: las personas cambian de correo electrónico.

Práctica recomendada: use un ID sustituto y añada una restricción UNIQUE a la clave natural.

BIGSERIAL: enteros autoincrementales

En PostgreSQL, BIGSERIAL crea una columna autoincremental de 64 bits respaldada por una secuencia.

CREATE TABLE orders (
  id BIGSERIAL PRIMARY KEY,
  user_id BIGINT NOT NULL,
  total NUMERIC(10,2) NOT NULL
);

-- You omit id on insert and the DB fills it in:
INSERT INTO orders (user_id, total) VALUES (7, 99.50);

Claves primarias UUID

Una alternativa es un UUID de 128 bits, útil cuando los ID deben ser únicos entre sistemas o generarse en el cliente.

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

CREATE TABLE sessions (
  id    UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
  user_id BIGINT NOT NULL,
  ip    INET
);

Claves primarias compuestas

A veces, el identificador natural es una combinación de columnas:

CREATE TABLE order_items (
  order_id  BIGINT NOT NULL,
  product_id BIGINT NOT NULL,
  quantity  INT NOT NULL,
  PRIMARY KEY (order_id, product_id)
);

-- The pair (order_id, product_id) must be unique
-- A product can appear at most once per order

Restricciones UNIQUE frente a la clave primaria

Puede declarar otras columnas como únicas sin convertirlas en la clave primaria:

CREATE TABLE users (
  id    BIGSERIAL PRIMARY KEY,
  email VARCHAR(255) NOT NULL UNIQUE,
  username VARCHAR(50) UNIQUE
);

-- INSERT below fails on the second row:
INSERT INTO users (email, username) VALUES ('a@x.com', 'alice');
INSERT INTO users (email, username) VALUES ('a@x.com', 'bob');  -- ERROR

Qué ocurre al insertar un duplicado

Si intenta insertar una clave primaria duplicada, la base de datos rechaza la instrucción completa:

ERROR:  duplicate key value violates unique constraint "users_pkey"
DETAIL:  Key (id)=(42) already exists.

Esto es positivo: evita la corrupción silenciosa de los datos.

Buscar filas por clave primaria es rápido

El índice único de la clave primaria permite búsquedas O(log n) incluso a escala de miles de millones de filas.

-- Index Scan using users_pkey on users (cost=0.43..8.45 rows=1)
SELECT email FROM users WHERE id = 42;

No reutilice los ID

Incluso si elimina una fila, NO reutilice su clave primaria. Es posible que otras tablas o sistemas externos todavía hagan referencia a ella. Deje que la secuencia siga avanzando: los ID son baratos.

Repaso

Las claves primarias proporcionan a cada fila un identificador estable y único.

  • Prefiera las claves sustitutas (BIGSERIAL o UUID)
  • Use UNIQUE para las claves naturales que no deben duplicarse
  • Las claves primarias compuestas representan que "este par debe ser único"

Comprobación rápida

¿Qué se impone implícitamente mediante una PRIMARY KEY?

Preguntas frecuentes

¿La lección «Claves primarias y unicidad» es gratis?

Sí — el texto completo de «Claves primarias y unicidad» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de SQL Academy, actualiza a CoddyKit PRO. El curso de SQL Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Claves primarias y unicidad»?

Comprenda las claves primarias, las claves sustitutas frente a las naturales, las claves compuestas y por qué cada fila necesita un identificador único fiable. Practicas SQL Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar SQL Academy?

No se requiere experiencia previa. SQL Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Claves primarias y unicidad»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de SQL Academy?

Sí. Cada lección de SQL Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Qué es un RDBMS y por qué importan las tablas
  2. Claves primarias y unicidad
  3. NULL: el tercer valor de verdad
  4. Introducción a los tipos de datos: INT VARCHAR DATE BOOLEAN
← Volver a SQL Academy