Saltar al contenido
Bases de datos con SQL
Todos los cursos

Ejercicio: Diseñar tablas

  • ⏱ 35 minutos
  • 📶 Nivel: principiante

Objetivo

Crear una tabla con claves y restricciones, comprobar que rechaza datos incorrectos y normalizar un diseño con datos repetidos.

Cómo se trabaja

Escribe las instrucciones en un archivo proveedores.sql y ejecútalas con sqlite3 prueba.db y .read proveedores.sql. Si no tienes SQLite a mano, escríbelas en papel y compáralas con la solución. Es normal tener que repetir el CREATE TABLE: si te equivocas, ejecuta DROP TABLE IF EXISTS proveedores; primero.

Pasos

Marca cada paso a medida que lo completes. Tu avance se guarda en este navegador.

💡 Pista 1: orden de las palabras

Primero el nombre de la columna, luego el tipo y al final las restricciones: email TEXT NOT NULL UNIQUE.

💡 Pista 2: restringir a 0 o 1

Usa CHECK (activo IN (0, 1)), o CHECK (activo = 0 OR activo = 1).

✅ Ver una solución posible

Intenta resolverlo antes de mirar. Tu versión puede ser distinta y también correcta.

proveedores.sql
CREATE TABLE proveedores (
  id       INTEGER PRIMARY KEY,
  nombre   TEXT    NOT NULL,
  email    TEXT    NOT NULL UNIQUE,
  telefono TEXT,
  activo   INTEGER NOT NULL DEFAULT 1 CHECK (activo IN (0, 1))
);

INSERT INTO proveedores (nombre, email)
VALUES ('Tecno Perú SAC', 'ventas@tecnoperu.example');

SELECT * FROM proveedores;

Resultado esperado del SELECT:

idnombreemailtelefonoactivo
1Tecno Perú SACventas@tecnoperu.exampleNULL1
  • Paso 3: la restricción UNIQUE de email (SQLite: UNIQUE constraint failed: proveedores.email).
  • Paso 4: la restricción CHECK (SQLite: CHECK constraint failed: activo IN (0, 1)).
  • Paso 5: ALTER TABLE proveedores ADD COLUMN ciudad TEXT;
  • Paso 6: clientes(id, nombre, email), productos(id, nombre, precio), ventas(id, cliente_id, fecha) y lineas_venta(venta_id, producto_id, cantidad). Así el cliente se guarda una vez y los productos de cada venta son filas, no una lista en una celda.

💡 🏁 Reto extra (opcional)

Diseña en papel la base de datos de una biblioteca: libros, socios y préstamos. Para cada tabla escribe sus columnas, su clave primaria y qué restricciones pondrías.