Arostik Logo
ArostikVLARCK

Micro-Technology Solutions

Bases de DatosNivel: Principiante15 min de lección

¿Qué es una Clave Primaria y una Clave Foránea en SQL?

Aprende qué son las claves primarias y foráneas, cómo definirlas con restricciones de integridad, qué tipos de identificadores usar (SERIAL vs UUID) y cómo funcionan las políticas de borrado en cascada (ON DELETE CASCADE).

¿Qué es una Clave Primaria y una Clave Foránea en SQL?
AROS STUDENT
E
Equipo de Ingeniería ArostikEspecialista en Sistemas y TI · Actualizado el 20 mar 2026
¿Qué es y para qué sirve?

Una Clave Primaria (Primary Key o PK) es una columna o conjunto de columnas cuyos valores identifican de forma unívoca y no nula cada fila dentro de una tabla; una Clave Foránea (Foreign Key o FK) es una columna que establece un vínculo referencial formal entre los datos de esa tabla y la clave primaria de otra tabla.

¿Por qué deberías aprenderlo y usarlo?

Constituyen el fundamento de la integridad referencial en el modelo relacional: impiden la existencia de registros huérfanos (como un pedido asociado a un cliente inexistente) y garantizan que las relaciones entre datos sean siempre coherentes y confiables a nivel de motor.

Analogía de la Vida Real

Imagina tu documento nacional de identidad (DNI o cédula) y un pasaje de avión: tu DNI es tu Clave Primaria (no existen dos personas con el mismo DNI y nadie puede carecer de uno). El billete de avión tiene una casilla que dice 'DNI del pasajero': esa casilla es una Clave Foránea que apunta a tu DNI oficial en el registro civil. Si alguien intenta comprar un billete con un DNI falso o inventado, el sistema del aeropuerto rechaza la operación de inmediato.

Explicación Paso a Paso del Tema

1

Definir una Clave Primaria sólida (SERIAL vs UUID)

Elige la estrategia de identificación adecuada para tus entidades.

Históricamente se usaban enteros autoincrementales (`SERIAL` o `BIGINT GENERATED ALWAYS AS IDENTITY`). Son rápidos y ocupan poco espacio (4 u 8 bytes), pero son predecibles (cualquiera puede adivinar que el usuario 5 existe probando `api/usuarios/5`). Los identificadores universales únicos (UUID v4 o v7) son cadenas criptográficamente aleatorias de 128 bits generadas sin colisión en cualquier máquina, ideales para sistemas distribuidos y seguridad.

Comando de Terminal / Código
CREATE TABLE cuentas ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), titular VARCHAR(100) );
Desglose de Parámetros:
Parámetro / FlagTipo / RolSignificado y Uso
UUID PRIMARY KEYTipo de identificadorEstablece un identificador de 128 bits no predecible como clave única
gen_random_uuid()Función criptográficaGenera automáticamente un UUID versión 4 aleatorio al insertar la fila
Consejo Profesional:

Usa claves sustitutas (surrogate keys) como IDs numéricos o UUIDs que carezcan de significado de negocio para garantizar estabilidad perpetua.

Error Común a Evitar:

Usar datos del mundo real que pueden cambiar (como el número de teléfono o el correo) como clave primaria; si el usuario cambia de correo, actualizarás cientos de relaciones.

2

Vincular tablas mediante Claves Foráneas

Aplica restricciones que impidan guardar referencias inexistentes.

La cláusula `REFERENCES tabla_padre(columna_pk)` obliga al motor a validar en cada inserción que el ID exista. Si intentas insertar un pedido con `cliente_id = 9999` y ese cliente no existe en la tabla de clientes, la base de datos abortará la transacción con un error de violación de clave foránea.

Comando de Terminal / Código
ALTER TABLE facturas ADD CONSTRAINT fk_facturas_cliente FOREIGN KEY (cliente_id) REFERENCES clientes(id);
Desglose de Parámetros:
Parámetro / FlagTipo / RolSignificado y Uso
FOREIGN KEYRestricción referencialDeclara formalmente que la columna local depende de una tabla externa
REFERENCES clientes(id)Destino referencialIndica exactamente qué tabla y qué columna primaria validan la existencia
Consejo Profesional:

Crea siempre un índice en las columnas que sean Claves Foráneas (`CREATE INDEX idx_pedidos_cliente ON pedidos(cliente_id)`); esto acelerará drásticamente los JOINs.

Error Común a Evitar:

Crear columnas de relación sin declarar la restricción formal de Foreign Key en la base de datos, confiando solo en la validación del código frontend o backend.

3

Configurar acciones de borrado (ON DELETE)

Define qué debe pasar con los registros dependientes cuando se borra un padre.

Tienes tres opciones principales: 1. `ON DELETE RESTRICT` (o NO ACTION, por defecto): Impide borrar el cliente si tiene facturas asociadas. 2. `ON DELETE CASCADE`: Si borras el cliente, el motor borra automáticamente todas sus facturas (usar con extrema cautela). 3. `ON DELETE SET NULL`: Borra el cliente y deja el campo `cliente_id` en NULL en las facturas.

Comando de Terminal / Código
FOREIGN KEY (cliente_id) REFERENCES clientes(id) ON DELETE RESTRICT
Desglose de Parámetros:
Parámetro / FlagTipo / RolSignificado y Uso
ON DELETE RESTRICTPolítica de protecciónBloquea la eliminación del registro padre mientras existan registros hijos dependientes
Consejo Profesional:

En sistemas empresariales, adopta el patrón de borrado lógico (Soft Delete) añadiendo una columna `deleted_at TIMESTAMP NULL` en lugar de borrar filas físicamente.

Error Común a Evitar:

Usar `ON DELETE CASCADE` en tablas críticas de contabilidad, borrando facturas legales por haber eliminado un cliente inactivo.

Casos Prácticos Reales en Producción

Situaciones de ingeniería reales sin mención de presupuestos ficticios.

1Caso de Producción: Erradicación de Registros Huérfanos en Sistema Escolar

Escenario Real:

Un sistema escolar que utilizaba tablas sin claves foráneas tenía más de 14,000 calificaciones registradas de alumnos que habían sido dados de baja años atrás, lo que causaba inconsistencias y caídas continuas al generar actas oficiales de notas.

Solución de Ingeniería Aplicada:

Se limpiaron los registros huérfanos y se aplicaron restricciones estrictas de Claves Foráneas con `ON DELETE RESTRICT` entre las tablas de matrículas, alumnos, cursos y calificaciones.

Fichas Nemotécnicas de Conceptos Clave

Glosario rápido para recordar los términos fundamentales de la lección.

Primary Key (PK)

Identificador único obligatorio de una fila en una tabla; indexado automáticamente por el motor para búsquedas instantáneas.

id SERIAL PRIMARY KEY
Foreign Key (FK)

Columna que apunta a la clave primaria de otra tabla garantizando que el valor exista previamente en la tabla padre.

cliente_id INT REFERENCES clientes(id)
ON DELETE CASCADE

Regla de integridad que elimina automáticamente los registros hijos si el registro padre correspondiente es borrado.

Si se borra un usuario, se borran automáticamente todas sus sesiones activas.
Autoevaluación Rápida3 preguntas

¿Qué es una Clave Primaria y una Clave Foránea en SQL?

Selecciona una opción para autoevaluarte al instante. La respuesta se califica de inmediato.

Aciertos: 0 / 3
1

¿Cuáles son las dos condiciones obligatorias que debe cumplir cualquier columna declarada como Clave Primaria?

2

¿Cuál es la función principal de una Clave Foránea (Foreign Key)?

3

¿Qué ocurre si una relación tiene la regla 'ON DELETE RESTRICT' e intentas borrar el registro padre con hijos existentes?

Preguntas Frecuentes (FAQ)

¿Puede una tabla tener más de una Clave Primaria?

No. Una tabla solo puede tener una única Clave Primaria. Sin embargo, esa clave puede estar compuesta por dos o más columnas juntas (Clave Primaria Compuesta), por ejemplo (estudiante_id, curso_id).

¿Puede una Clave Foránea tener valores nulos (NULL)?

Sí, a menos que le agregues explícitamente la restricción `NOT NULL`. Un valor NULL en una clave foránea simplemente indica que ese registro no está vinculado a ningún padre por el momento.

¿Por qué los UUID v7 son preferibles sobre los UUID v4 en bases de datos?

Porque los UUID v7 incluyen una marca temporal (timestamp) ordenada al inicio, lo que evita la fragmentación de índices B-Tree en disco, manteniendo la velocidad de inserción tan alta como la de los enteros autoincrementales.

Temas relacionados:#Primary Key#Foreign Key#Integridad Referencial#UUID#SQL