Diseña una BD SQL con DBeaver
Actividad práctica guiada: Diseña tu primera base de datos relacional en SQL con DBeaver
Objetivo
Crear una base de datos sencilla desde cero para entender cómo se aplican conceptos básicos como: tipos de datos, claves primarias y foráneas, buenas prácticas en el diseño, y consultas SQL simples.
Escenario del ejemplo
Vas a modelar una base de datos para una biblioteca digital, donde debes registrar:
- Información de los usuarios
- Los libros disponibles
- Los préstamos realizados
Esto te ayudará a comprender cómo se relacionan distintas entidades (usuarios, libros y préstamos) y cómo se estructuran en SQL.
PASO A PASO EXPLICADO
1. Crear la base de datos en DBeaver
Instrucción:
CREATE DATABASE biblioteca_db;
¿Por qué? Este paso crea el contenedor principal donde estarán tus tablas. Así mantienes tu información organizada y separada de otras bases de datos.
2. Seleccionar la base de datos que vas a usar
USE biblioteca_db;
¿Por qué? Indica al sistema que todas las operaciones siguientes se realizarán sobre esta base de datos.
3. Crear las tablas con buenas prácticas
Tabla: usuarios
CREATE TABLE usuarios (
id INT PRIMARY KEY AUTO_INCREMENT,
nombre VARCHAR(50),
correo VARCHAR(100) UNIQUE
);
¿Por qué se usa así?
ides la clave primaria, identifica de forma única a cada usuario.AUTO_INCREMENTpermite que se genere automáticamente un nuevo ID.correoesUNIQUEpara evitar que se repita el mismo correo en varios registros.
Tabla: libros
CREATE TABLE libros (
id INT PRIMARY KEY AUTO_INCREMENT,
titulo VARCHAR(100),
autor VARCHAR(50),
anio_publicacion INT,
disponible BOOLEAN
);
¿Por qué se eligen estos tipos?
titulo,autor: texto de longitud razonable.anio_publicacion: un número entero, no una fecha completa.disponible: campo booleano (sí/no) que indica si el libro puede prestarse.
Tabla: prestamos
CREATE TABLE prestamos (
id INT PRIMARY KEY AUTO_INCREMENT,
id_usuario INT,
id_libro INT,
fecha_prestamo DATE,
devuelto BOOLEAN,
FOREIGN KEY (id_usuario) REFERENCES usuarios(id),
FOREIGN KEY (id_libro) REFERENCES libros(id)
);
¿Qué aprendes aquí?
- Cómo usar claves foráneas para conectar esta tabla con las otras.
fecha_prestamo: se guarda con tipoDATE.devuelto: indica si el libro fue devuelto.
4. Insertar datos de prueba
INSERT INTO usuarios (nombre, correo)
VALUES ('Camila López', 'camila@example.com'),
('Pedro Ruiz', 'pedro@example.com');
INSERT INTO libros (titulo, autor, anio_publicacion, disponible)
VALUES ('1984', 'George Orwell', 1949, true),
('El principito', 'Antoine de Saint-Exupéry', 1943, true);
INSERT INTO prestamos (id_usuario, id_libro, fecha_prestamo, devuelto)
VALUES (1, 2, '2025-07-20', false),
(2, 1, '2025-07-21', true);
¿Por qué hacerlo? Estos datos de prueba te permiten visualizar cómo funciona la base de datos con información real. Sin ellos, no puedes hacer consultas ni validar si las relaciones están bien hechas.
5. Hacer consultas simples
Ver todos los libros disponibles
SELECT * FROM libros WHERE disponible = true;
Aprendes a: filtrar datos según condiciones.
Ver los préstamos de un usuario específico
SELECT u.nombre, l.titulo, p.fecha_prestamo, p.devuelto
FROM prestamos p
JOIN usuarios u ON p.id_usuario = u.id
JOIN libros l ON p.id_libro = l.id
WHERE u.nombre = 'Camila López';
Aprendes a:
- Usar
JOINpara unir varias tablas. - Relacionar entidades mediante claves foráneas.
- Consultar información combinada de distintas fuentes.
6. (Opcional) Crear el modelo visual del esquema
Puedes usar la herramienta visual de DBeaver o una plataforma como dbdiagram.io para representar gráficamente el diseño de tu base de datos.
¿Por qué es útil?
- Refuerza la comprensión de relaciones entre tablas.
- Te permite detectar errores de diseño fácilmente.
- Es una práctica común en proyectos reales.
Resultado esperado
Al finalizar esta actividad deberías tener:
- Una base de datos funcional con tres tablas relacionadas.
- Datos de ejemplo insertados correctamente.
- Capacidad para hacer consultas simples.
- Claridad sobre los tipos de datos usados, las claves primarias y foráneas, y el diseño general de tu esquema.