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