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
id INTEGER PRIMARY KEY
email TEXT UNIQUE
stock INTEGER NOT NULL CHECK (stock >= 0)Primer ejemplo guiado
| id | nombre | ciudad | |
|---|---|---|---|
| 1 | Ana | Madrid | ana@ejemplo.es |
| 2 | Luis | Valencia | luis@ejemplo.es |
| 3 | Marta | Madrid | NULL |
| 4 | Omar | Sevilla | omar@ejemplo.es |
| 5 | Nora | Bilbao | nora@ejemplo.es |
| id | nombre | categoria | precio | stock |
|---|---|---|---|---|
| 1 | Teclado | Accesorios | 35 | 12 |
| 2 | Monitor | Pantallas | 189 | 5 |
| 3 | Ratón | Accesorios | 22 | 0 |
| 4 | Portátil | Equipos | 899 | 3 |
| 5 | Webcam | Accesorios | 59 | 8 |
Analiza la consulta antes de comprobar el resultado:
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
- PRIMARY KEY exige identidad única.
- NOT NULL impide ausencia.
- UNIQUE evita nombres repetidos.
Error frecuente
Consulta o razonamiento problemático
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
Resuelve una sola dificultad cada vez
Define una tabla tareas con id primario, titulo obligatorio y completada con valor predeterminado 0.
Solución razonada
CREATE TABLE tareas (id INTEGER PRIMARY KEY, titulo VARCHAR(200) NOT NULL, completada INTEGER DEFAULT 0);Cada restricción expresa una regla distinta del dominio.
Comprueba: identifica qué parte recupera, filtra, transforma, relaciona o modifica los datos.
Ahora sin guía
Transfiere lo aprendido
Añade a inscripciones una FOREIGN KEY que relacione curso_id con cursos.id.
Comparar con una solución posible
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.