¿Qué es una base de datos?
Una base de datos (BD) es un conjunto organizado de información relacionada, almacenada para que pueda consultarse, insertarse, actualizarse y eliminarse de forma eficiente.
Conceptos básicos
- SGBD: El software que gestiona la BD (MySQL, PostgreSQL, SQL Server, Oracle, etc.).
- SQL: Lenguaje estándar para hablar con el SGBD.
- Esquema: Diseño lógico (tablas, columnas, tipos, claves, relaciones).
- ACID: Propiedades de transacciones (Atomicidad, Consistencia, Aislamiento, Durabilidad).
- Relaciones: Son las que permiten relacionar una tabla con otra, siempre que tengan un encabezado en común.
- Tablas: Colección de registros organizados por columnas.
- Encabezados: Son los titulos de cada columna, y representan un conjunto de campos en una columna.
- Campos: Son las columnas de cada tabla, siempre comienzan por un encabezado.
Videos sugeridos (4)
Cuatro videos de bases de datos B.D. que te llenarán de conocimiento.
Tablas: qué son y cómo crearlas
Una tabla es como una hoja de cálculo con estructura fija: columnas (campos) y filas (registros).
Partes de una tabla
- Columna: nombre + tipo de dato (INT, VARCHAR, DATE, DECIMAL, etc.).
- Clave primaria (PK): identifica cada fila (única, no nula).
- Índices: aceleran búsquedas.
- Restricciones: NOT NULL, UNIQUE, CHECK, FOREIGN KEY…
Ejemplo: crear tabla
CREATE TABLE clientes (
id INT PRIMARY KEY AUTO_INCREMENT,
nombre VARCHAR(80) NOT NULL,
email VARCHAR(120) UNIQUE,
fechaRegistro DATE NOT NULL DEFAULT (CURRENT_DATE)
);
Sintaxis tipo MySQL/MariaDB. En PostgreSQL se usa SERIAL o
GENERATED.
Normalización (1FN, 2FN, 3FN)
La normalización organiza datos para reducir duplicidad y anomalías.
1FN
- Cada columna es atómica (sin listas ni campos multivalor).
- Sin filas duplicadas; PK definida.
Ejemplo rápido
Mal: columna telefonos con “300…; 301…”.
Bien: tabla clienteTelefono con una fila por teléfono.
2FN
- Está en 1FN.
- Si la PK es compuesta, cada columna no clave depende de toda la PK (no de parte).
Ejemplo rápido
Si PK = (cursoId, alumnoId), la nota depende de ambos, no solo de cursoId.
3FN
- Está en 2FN.
- Sin dependencias transitivas: las columnas no clave dependen solo de la PK.
Ejemplo rápido
Si en clientes guardas ciudadId y además nombreCiudad, este último depende de ciudadId, no directamente de la PK. Muévelo a tabla ciudades.
Desnormalización (cuándo y por qué)
Es romper un poco las formas normales (duplicar o pre-calcular datos) para mejorar rendimiento en lecturas.
- Usa desnormalización cuando los JOIN pesados te matan el tiempo de respuesta.
- Ejemplos: guardar totales en la tabla de pedidos; materializar una vista con agregados.
- Trade-off: + velocidad de lectura, − mayor complejidad para mantener consistencia.
Relaciones entre tablas
1 a 1 (1:1)
Un registro en A coincide con uno en B.
CREATE TABLE usuarios (
id INT PRIMARY KEY, doc VARCHAR(20) UNIQUE
);
CREATE TABLE perfiles (
usuarioId INT PRIMARY KEY,
bio TEXT,
FOREIGN KEY (usuarioId) REFERENCES usuarios(id)
);
1 a muchos (1:N)
Un A tiene varios B; B tiene una FK a A.
CREATE TABLE categorias (
id INT PRIMARY KEY, nombre VARCHAR(60) UNIQUE
);
CREATE TABLE productos (
id INT PRIMARY KEY,
nombre VARCHAR(80) NOT NULL,
categoriaId INT NOT NULL,
FOREIGN KEY (categoriaId) REFERENCES categorias(id)
);
Muchos a muchos (N:M)
Se implementa con una tabla puente.
CREATE TABLE pedidos (
id INT PRIMARY KEY, fecha DATE
);
CREATE TABLE items (
pedidoId INT, productoId INT, cantidad INT,
PRIMARY KEY (pedidoId, productoId),
FOREIGN KEY (pedidoId) REFERENCES pedidos(id),
FOREIGN KEY (productoId) REFERENCES productos(id)
);
SGBD más usados (panorama general)
- MySQL/MariaDB: web apps, hosting compartido, LAMP. Popular, fácil de empezar.
- PostgreSQL: estándar SQL avanzado, tipos potentes, extensiones (PostGIS), muy robusto.
- SQL Server: ecosistema Microsoft, BI, integración con .NET y Azure.
- Oracle: corporativo, rendimiento/escala, muchas características empresariales.
- SQLite: embebido, archivos locales, ideal para apps móviles/desktop o prototipos.
- NoSQL (MongoDB, Redis, Cassandra) existen, pero este módulo se centra en relacionales.
SQL básico: SELECT / INSERT / UPDATE / DELETE / JOIN
Consultas
-- Filtrar y ordenar
SELECT id, nombre, precio
FROM productos
WHERE precio >= 50000
ORDER BY precio DESC
LIMIT 10;
JOIN
SELECT p.id, p.nombre, c.nombre AS categoria
FROM productos p
JOIN categorias c ON c.id = p.categoriaId
WHERE c.nombre = 'Electrónica';
Inserción y cambios
INSERT INTO categorias (id, nombre) VALUES (1, 'Electrónica');
UPDATE productos
SET precio = precio * 1.10
WHERE categoriaId = 1;
DELETE FROM productos WHERE id = 99;
Buenas prácticas
- Usa
BEGIN/COMMITpara transacciones críticas. - Índices en columnas de búsqueda/joins; no indexes a lo loco.
- Evita
SELECT *en producción; pide solo columnas necesarias.
Cuestionario (5 preguntas al azar de 30)
Marca tus respuestas y luego presiona Calificar. Al final verás la retroalimentación.