Módulo 7 · Diseñar estructuras

Restricciones: PRIMARY KEY, FOREIGN KEY, NOT NULL y más

Convierte reglas del problema en restricciones verificadas por la base de datos.

⏱ 26 minNivel: IntermedioRequisito: CREATE TABLE y relaciones

0 de 40 lecciones

Al terminar esta lección podrás

  • Elegir restricciones.
  • Definir claves.
  • Traducir reglas de negocio a integridad.

Antes de empezar: CREATE TABLE y relaciones. Explica en una frase qué recuerdas antes de continuar.

La idea, sin código

Las restricciones protegen la integridad: PRIMARY KEY identifica filas, FOREIGN KEY valida referencias, NOT NULL exige un valor, UNIQUE evita duplicados, DEFAULT aporta un valor y CHECK comprueba una condición.

Pregunta guía: ¿qué representa cada fila antes y después de aplicar este concepto?

Sintaxis mínima

Estructura
id INTEGER PRIMARY KEY
email TEXT UNIQUE
stock INTEGER NOT NULL CHECK (stock >= 0)

Primer ejemplo guiado

Datos de ejemplo: tabla clientes
idnombreciudademail
1AnaMadridana@ejemplo.es
2LuisValencialuis@ejemplo.es
3MartaMadridNULL
4OmarSevillaomar@ejemplo.es
5NoraBilbaonora@ejemplo.es
Datos de ejemplo: tabla productos
idnombrecategoriapreciostock
1TecladoAccesorios3512
2MonitorPantallas1895
3RatónAccesorios220
4PortátilEquipos8993
5WebcamAccesorios598

Analiza la consulta antes de comprobar el resultado:

SQL
CREATE TABLE categorias (
  id INTEGER PRIMARY KEY,
  nombre VARCHAR(80) NOT NULL UNIQUE
);

Qué cambiaría: esta sentencia actúa sobre la estructura o los datos. En el curso se presenta para analizarla; ejecútala únicamente en una base de práctica.

Qué ocurre paso a paso

  1. PRIMARY KEY exige identidad única.
  2. NOT NULL impide ausencia.
  3. UNIQUE evita nombres repetidos.
Comprueba que lo entendiste

¿Qué regla impide referencias a clientes inexistentes?

Error frecuente

Consulta o razonamiento problemático

Revisar
cliente_id INTEGER UNIQUE REFERENCES clientes(id)

UNIQUE impediría que un cliente tuviera más de un pedido. Esa regla no corresponde a la relación uno-a-muchos.

Práctica guiada

Básica · apoyo graduado

Resuelve una sola dificultad cada vez

Define una tabla tareas con id primario, titulo obligatorio y completada con valor predeterminado 0.

Ahora sin guía

Intermedia · práctica autónoma

Transfiere lo aprendido

Añade a inscripciones una FOREIGN KEY que relacione curso_id con cursos.id.

Comparar con una solución posible
SQL
FOREIGN KEY (curso_id) REFERENCES cursos(id)

Puede existir otra solución válida. Comprueba que produce el resultado pedido y que puedes explicar cada cláusula.

Resumen para llevarte

  • Las restricciones previenen datos inválidos.
  • No añadas reglas que contradigan el dominio.
  • La compatibilidad y sintaxis exacta varían entre motores.

Siguiente paso: Continúa con Modificar estructuras con ALTER TABLE.

Consulta rápida