Curso de Bases de Datos
Bienvenido al Curso completo de Bases de Datos. Es una base exhaustiva para estudiantes de ciclos formativos (DAM, DAW, ASIR) y de universidad (grados de Informática), y para cualquier persona que quiera aprender a diseñar y explotar bases de datos relacionales con rigor profesional.
El curso recorre todo el camino: desde los sistemas de almacenamiento y la historia de las bases de datos, pasando por el diseño conceptual con el modelo Entidad/Relación extendido y el diseño lógico con el modelo relacional y la normalización, hasta el lenguaje SQL completo: definición (DDL), manipulación (DML) y control de datos (DCL).
📘 Concepto: El lenguaje de referencia de todo el curso es SQL sobre Oracle Database. Todos los ejemplos usan el mismo esquema de prueba, EMPRESA, que puedes crear en tu propia base de datos con los scripts que se proporcionan en el módulo 22.
💡 Consejo: Este curso trata solo SQL. La programación dentro de la base de datos (bloques, procedimientos, funciones, cursores y triggers) se estudia en el Curso de Oracle PL/SQL.
¿Qué vas a aprender?
Al finalizar este curso serás capaz de:
- Conocer los distintos sistemas de almacenamiento de información y la evolución histórica de las bases de datos
- Comprender la arquitectura y las funciones de un Sistema Gestor de Bases de Datos (SGBD)
- Analizar requisitos y diseñar el esquema conceptual de un sistema con el modelo Entidad/Relación extendido: entidades, atributos, relaciones, cardinalidades, entidades débiles, jerarquías y restricciones
- Transformar un diagrama E/R en un esquema relacional y aplicar las reglas de integridad
- Manejar el álgebra relacional, las dependencias funcionales y la normalización (1FN, 2FN, 3FN, FNBC, 4FN y 5FN)
- Crear y modificar tablas, restricciones, vistas, índices y secuencias con DDL en Oracle
- Escribir consultas SQL de cualquier complejidad con DML: filtros, funciones, agrupaciones, combinaciones, subconsultas, operadores de conjuntos, CTE, funciones analíticas y consultas jerárquicas
- Insertar, modificar y borrar datos, y controlar las transacciones
- Gestionar usuarios, privilegios y roles con DCL
- Resolver un caso completo de principio a fin: de los requisitos a la base de datos en funcionamiento
Versión del curso
Los ejemplos están escritos para Oracle AI Database 26ai (la versión actual, cuya edición gratuita Free puedes instalar con Docker) y funcionan también en Oracle 19c y 21c, las versiones que se siguen usando en muchos centros. Cuando una característica solo existe a partir de Oracle 23ai/26ai (por ejemplo, el tipo BOOLEAN o DROP TABLE IF EXISTS), se indica expresamente.
Estructura del curso
El curso se divide en 39 módulos agrupados en seis bloques. El diseño conceptual, núcleo de la asignatura, se estudia con especial profundidad: cada tipo de relación y la agregación tienen su propio módulo.
Bloque 1: Sistemas de almacenamiento y bases de datos (Módulos 00-03)
| Módulo | Tema | Descripción |
|---|---|---|
| 00 | Introducción | Datos, información y conocimiento, qué es una base de datos y por qué estudiarlas |
| 01 | Sistemas de almacenamiento | Soportes, RAID, copias de seguridad, ficheros y su organización (secuencial, directa, indexada), limitaciones de los sistemas de ficheros |
| 02 | Historia y tipos de bases de datos | Modelos jerárquico, en red, relacional, orientado a objetos, NoSQL, NewSQL, analíticas, distribuidas, en la nube y vectoriales |
| 03 | Sistemas gestores de bases de datos | Arquitectura ANSI/SPARC, independencia de datos, componentes, usuarios, transacciones y SGBD del mercado |
Bloque 2: Diseño conceptual. El modelo Entidad/Relación extendido (Módulos 04-15)
| Módulo | Tema | Descripción |
|---|---|---|
| 04 | El proceso de diseño | Ciclo de vida, fases del diseño (conceptual, lógico y físico) y análisis de requisitos |
| 05 | Entidades y atributos | Entidades, atributos y sus tipos, dominios, claves y notaciones del modelo E/R |
| 06 | Relaciones: conceptos generales y cardinalidades | Concepto, grado, papeles, tipo de correspondencia, cardinalidades mínimas y máximas y sus convenciones |
| 07 | Relaciones binarias | 1:1, 1:N y N:M con todas las combinaciones de participación, atributos de relación y casos especiales |
| 08 | Relaciones reflexivas | Papeles, jerarquías, grafos, listas de materiales, simetría, ciclos y restricciones |
| 09 | Relaciones ternarias y n-arias | Cálculo de cardinalidades, tipos de ternarias, ternaria frente a binarias y relaciones de grado superior |
| 10 | Entidades débiles | Dependencia en existencia y en identificación, claves parciales y casos típicos |
| 11 | Generalización y especialización | Jerarquías, cobertura total/parcial y exclusiva/solapada, herencia, discriminantes y categorías |
| 12 | Agregación | Relaciones tratadas como entidades, agregación frente a ternaria y frente a entidad débil |
| 13 | Restricciones avanzadas | Exclusividad, inclusión, exclusión, trampas de diseño, ciclos y datos históricos |
| 14 | Metodología y herramientas | Método paso a paso, comparación de notaciones, herramientas de modelado y errores frecuentes |
| 15 | Casos prácticos E/R | Supuestos completos resueltos y comentados de dificultad creciente |
Bloque 3: Diseño lógico. El modelo relacional (Módulos 16-21)
| Módulo | Tema | Descripción |
|---|---|---|
| 16 | El modelo relacional | Relaciones, dominios, claves, valores nulos, integridad de entidad y referencial, reglas de Codd |
| 17 | Del modelo E/R al relacional | Reglas de transformación de entidades, relaciones, entidades débiles, jerarquías y agregaciones |
| 18 | Álgebra relacional | Operadores básicos y derivados, expresiones, cálculo relacional y equivalencia con SQL |
| 19 | Dependencias funcionales | Concepto, axiomas de Armstrong, cierres, claves y recubrimiento mínimo |
| 20 | Normalización | Anomalías, 1FN, 2FN, 3FN, FNBC, 4FN, 5FN, descomposición y desnormalización |
| 21 | Casos prácticos de diseño lógico | Supuestos completos: del E/R al esquema relacional normalizado e introducción al diseño físico |
Bloque 4: Lenguaje de Definición de Datos (DDL) (Módulos 22-26)
| Módulo | Tema | Descripción |
|---|---|---|
| 22 | SQL y el entorno Oracle | Historia y estándares de SQL, sublenguajes, instalación de Oracle, herramientas y esquema EMPRESA |
| 23 | Tablas y tipos de datos | CREATE TABLE, tipos de datos de Oracle, valores por defecto, columnas identidad y virtuales |
| 24 | Restricciones de integridad | NOT NULL, PRIMARY KEY, UNIQUE, FOREIGN KEY, CHECK, acciones referenciales, restricciones diferidas y aserciones |
| 25 | Modificación y borrado de objetos | ALTER TABLE, DROP, TRUNCATE, RENAME, papelera de reciclaje y comentarios |
| 26 | Vistas, índices y otros objetos | Vistas, índices, secuencias, sinónimos, vistas materializadas y diccionario de datos |
Bloque 5: Lenguaje de Manipulación de Datos (DML) (Módulos 27-36)
| Módulo | Tema | Descripción |
|---|---|---|
| 27 | Consultas básicas | SELECT, FROM, WHERE, operadores, valores nulos, ORDER BY y limitación de filas |
| 28 | Funciones de una fila | Funciones de caracteres, numéricas, de fecha, de conversión, NVL, COALESCE, DECODE y CASE |
| 29 | Agrupación y funciones de agregado | COUNT, SUM, AVG, MAX, MIN, GROUP BY, HAVING, ROLLUP, CUBE y LISTAGG |
| 30 | Consultas multitabla | Producto cartesiano, INNER, NATURAL, OUTER, SELF y CROSS JOIN, sintaxis tradicional de Oracle |
| 31 | Subconsultas | Escalares, de fila y de tabla, IN, ANY, ALL, EXISTS, correlacionadas, en FROM y división relacional |
| 32 | Operadores de conjuntos y CTE | UNION, INTERSECT, MINUS, cláusula WITH y consultas recursivas |
| 33 | Consultas avanzadas | Funciones analíticas, consultas jerárquicas con CONNECT BY, PIVOT, UNPIVOT y JSON |
| 34 | Inserción, modificación y borrado | INSERT, UPDATE, DELETE y MERGE con subconsultas |
| 35 | Transacciones y concurrencia | COMMIT, ROLLBACK, SAVEPOINT, propiedades ACID, bloqueos y niveles de aislamiento |
| 36 | Colección de ejercicios de SQL | Más de 100 ejercicios resueltos y exámenes tipo de FP y universidad |
Bloque 6: Control de datos y proyecto final (Módulos 37-38)
| Módulo | Tema | Descripción |
|---|---|---|
| 37 | Lenguaje de Control de Datos (DCL) | Usuarios, privilegios de sistema y de objeto, GRANT, REVOKE, roles y perfiles |
| 38 | Proyecto final | Caso integral: requisitos, modelo E/R, esquema relacional normalizado, DDL, carga de datos, consultas y seguridad |
El esquema de prueba EMPRESA
Todos los ejemplos de SQL del curso trabajan sobre el mismo esquema, que modela una empresa que vende productos informáticos:
| Tabla | Contenido |
|---|---|
DEPARTAMENTOS | Departamentos de la empresa y su presupuesto |
EMPLEADOS | Empleados, su oficio, salario, comisión, jefe (autorrelación) y departamento |
CLIENTES | Clientes y su comercial asignado |
CATEGORIAS | Categorías de productos organizadas en jerarquía |
PRODUCTOS | Catálogo de productos con precio y stock |
PEDIDOS | Pedidos de los clientes |
LINEAS_PEDIDO | Líneas de cada pedido (clave primaria compuesta) |
PROYECTOS | Proyectos internos de cada departamento |
ASIGNACIONES | Empleados asignados a proyectos (relación N:M con atributos) |
Scripts para descargar: empresa_crear.sql, empresa_datos.sql y empresa_borrar.sql.
Requisitos
- Ningún conocimiento previo de bases de datos
- Manejo básico del ordenador
- Para la parte de SQL: acceso a una base de datos Oracle (instalación local con Docker o el servicio gratuito en línea FreeSQL); se explica en el módulo 22
Convenciones utilizadas
A lo largo del curso encontrarás estos indicadores:
📘 Concepto: Explicación teórica de un concepto importante.
💻 Ejemplo: Código de ejemplo que puedes copiar y ejecutar.
✏️ Ejercicio: Práctica para que resuelvas por tu cuenta.
⚠️ Importante: Información crucial que debes recordar.
💡 Consejo: Trucos y buenas prácticas profesionales.
Table of contents
- 00 - Introducción
- 01 - Sistemas de almacenamiento
- 02 - Historia y tipos de bases de datos
- 03 - Sistemas gestores de bases de datos
- 04 - El proceso de diseño
- 05 - Entidades y atributos
- 06 - Relaciones: conceptos generales y cardinalidades
- 07 - Relaciones binarias
- 08 - Relaciones reflexivas
- 09 - Relaciones ternarias y n-arias
- 10 - Entidades débiles
- 11 - Generalización y especialización
- 12 - Agregación
- 13 - Restricciones avanzadas
- 14 - Metodología y herramientas
- 15 - Casos prácticos E/R
- 16 - El modelo relacional
- 17 - Del modelo E/R al relacional
- 18 - Álgebra relacional
- 19 - Dependencias funcionales
- 20 - Normalización
- 21 - Casos prácticos de diseño lógico
- 22 - SQL y el entorno Oracle
- 23 - Tablas y tipos de datos
- 24 - Restricciones de integridad
- 25 - Modificación y borrado de objetos
- 26 - Vistas, índices y otros objetos
- 27 - Consultas básicas
- 28 - Funciones de una fila
- 29 - Agrupación y funciones de agregado
- 30 - Consultas multitabla
- 31 - Subconsultas
- 32 - Operadores de conjuntos y CTE
- 33 - Consultas avanzadas
- 34 - Inserción, modificación y borrado
- 35 - Transacciones y concurrencia
- 36 - Colección de ejercicios de SQL
- 37 - Lenguaje de Control de Datos (DCL)
- 38 - Proyecto final