Introducción al Curso - Actividades

☰ Main Menú

UF2214-Introducción

Esta unidad formativa se centra en el desarrollo de competencias para implementar y utilizar bases de datos, con especial énfasis en la extracción de información mediante lenguajes y herramientas de consulta específicos.

Objetivos principales

  • Estudio prćtico de las Bases de Datos Relacionales
  • Implementar métodos de acceso eficientes
  • Conocer los lenguajes de consulta y extracción de datos
  • Analizar y aplicar el lenguaje SQL para Bases de Datos Relacionales
Realizaciones Profesionales y Criterios de Realización

Realizaciones Profesionales (RP) y Criterios de Realización (CR)

RP2: Extraer informaciones contenidas en gestores de datos

Utilizar herramientas y lenguajes de consulta y manipulación de la información, de acuerdo a especificaciones técnicas y funcionales.

CR2.1: Selección de herramientas y lenguajes

Las herramientas y lenguajes de consulta y manipulación para extraer la información se seleccionan según especificaciones del modelo y la tecnología del gestor de datos.

Ejemplo práctico

Para una base de datos relacional como MySQL, se seleccionaría SQL como lenguaje principal, mientras que para MongoDB se usaría su API de consultas o el lenguaje de agregación.

Consideraciones

Es fundamental conocer las capacidades y limitaciones de cada sistema gestor para elegir las herramientas más adecuadas.

CR2.2: Uso de herramientas de manipulación

Las herramientas de manipulación de la información se utilizan para extraer y presentar la información según especificaciones técnicas, necesidades de la organización y normativa legal vigente.

-- Ejemplo de consulta SQL para extraer información
SELECT cliente.nombre, COUNT(pedido.id) AS total_pedidos
FROM clientes JOIN pedidos ON clientes.id = pedidos.cliente_id
WHERE pedidos.fecha BETWEEN '2023-01-01' AND '2023-12-31'
GROUP BY cliente.nombre
ORDER BY total_pedidos DESC;

CR2.3: Codificación de instrucciones

La codificación de las instrucciones correspondientes a los lenguajes de consulta y manipulación se utiliza para realizar los procedimientos de consulta, de acuerdo a las especificaciones requeridas y la normativa legal vigente.

Buenas prácticas en la codificación

  • Usar nombres descriptivos para tablas y columnas
  • Comentar el código SQL para facilitar su mantenimiento
  • Validar los datos de entrada para prevenir inyección SQL
  • Optimizar las consultas para mejorar el rendimiento

CR2.4: Interpretación de documentación

La documentación inherente a las herramientas y lenguajes de consulta se interpreta para obtener la funcionalidad deseada en el proceso de extracción de información.

CR2.5: Documentación de procedimientos

Los procedimientos de extracción y consulta realizados se documentan para su registro según normas de la organización.

CR2.6: Interpretación de documentación técnica en lengua extranjera

La documentación técnica específica asociada a las herramientas y lenguajes de consulta se interpreta, en su caso, en la lengua extranjera de uso más frecuente en el sector.

Capacidades y Criterios de Evaluación

Capacidades y Criterios de Evaluación

C1: Distinguir características y funciones de lenguajes y herramientas de consulta

Identificar las funcionalidades de los lenguajes y herramientas de consulta de los sistemas gestores de datos, según sus especificaciones técnicas.

CE1.1: Funcionalidades de lenguajes de consulta

Determinar las funcionalidades y características de los lenguajes de consulta utilizados en los gestores de datos.

SQL

  • Lenguaje estándar para bases de datos relacionales
  • Soporta consultas, actualizaciones, definición de datos
  • Incluye operaciones de agregación, joins, subconsultas

OQL (Object Query Language)

  • Para bases de datos orientadas a objetos
  • Permite consultas sobre objetos y sus relaciones
  • Sintaxis similar a SQL pero adaptada a OOP

JPQL (Java Persistence Query Language)

  • Lenguaje de consulta para JPA (Java Persistence API)
  • Consulta entidades en lugar de tablas
  • Portable entre diferentes bases de datos

CE1.2: Funcionalidades de herramientas

Clasificar las funcionalidades y características de las herramientas utilizadas en los gestores de datos.

Herramienta Tipo de BD Características principales
MySQL Workbench Relacional (MySQL) Diseño visual, consultas SQL, administración
MongoDB Compass NoSQL (MongoDB) Consulta documentos, agregaciones, visualización
pgAdmin Relacional (PostgreSQL) Administración, consultas, monitoreo
Oracle SQL Developer Relacional (Oracle) Desarrollo SQL, modelado, migración

CE1.3: Comparación de funcionalidades

Comparar las funcionalidades de lenguajes y herramientas para su selección según necesidades funcionales.

Criterios de comparación

  • Compatibilidad con el sistema gestor
  • Capacidad de consulta (simples/complejas)
  • Rendimiento y optimización
  • Facilidad de uso y aprendizaje
  • Integración con otros sistemas

C2: Aplicar procedimientos de extracción y consulta de información

Utilizar lenguajes de consulta específicos según necesidades dadas para extraer información de bases de datos.

CE2.1: Uso de gramática y sintaxis

Utilizar la gramática, sintaxis y semántica del lenguaje de consulta para la creación de procedimientos de extracción.

-- Ejemplo de sintaxis SQL correcta
SELECT p.nombre AS producto, c.nombre AS categoria,
    SUM(v.cantidad) AS unidades_vendidas
FROM productos p
    JOIN categorias c ON p.categoria_id = c.id
    JOIN ventas v ON v.producto_id = p.id
WHERE v.fecha >= '2023-01-01'
GROUP BY p.nombre, c.nombre
HAVING SUM(v.cantidad) > 100
ORDER BY unidades_vendidas DESC;

CE2.2: Supuesto práctico de extracción y consulta

En un supuesto práctico, extraer y consultar información utilizando lenguajes de consulta específicos según un diseño especificado.

Pasos clave en el supuesto práctico

  1. Identificar las fuentes de información
  2. Crear procedimientos para formular consultas
  3. Recuperar y archivar procedimientos existentes
  4. Establecer formatos de presentación
  5. Depurar y verificar los procedimientos
  6. Documentar los procedimientos creados

CE2.3: Interpretación de documentación técnica

Interpretar la documentación inherente al lenguaje de consulta incluso si está editada en lengua extranjera.

Términos técnicos comunes en inglés

  • Query: Consulta
  • Join: Unión
  • Index: Índice
  • Constraint: Restricción
  • Transaction: Transacción
  • Stored procedure: Procedimiento almacenado
Contenidos de la UF2214

Contenidos de la UF2214

1. Diseño de Bases de Datos

Etapas del diseño de bases de datos

  1. Requisitos y análisis
  2. Diseño conceptual (modelo ER)
  3. Diseño lógico (modelo relacional)
  4. Diseño físico (implementación)

Teoría de la normalización

Primera Forma Normal (1FN)

Eliminar grupos repetitivos y asegurar que cada columna contenga valores atómicos.

Segunda Forma Normal (2FN)

Debe estar en 1FN y todos los atributos no clave deben depender de toda la clave primaria.

Tercera Forma Normal (3FN)

Debe estar en 2FN y no debe existir dependencia transitiva de los atributos no clave.

Forma Normal de Boyce-Codd (FNBC)

Versión más fuerte de 3FN donde toda determinante es una clave candidata.

Cuarta Forma Normal (4FN)

Eliminar dependencias multivaluadas no triviales.

Quinta Forma Normal (5FN)

Descomposición sin pérdida en relaciones más pequeñas.

Aplicación de la normalización

Proceso de transformación de un modelo conceptual en un esquema relacional normalizado.

Desnormalización

Proceso intencional de introducir redundancia controlada para mejorar el rendimiento en situaciones específicas.

2. Métodos de acceso a una Base de Datos

Implementación de accesos por posición

Técnicas para acceder a registros por su ubicación física en el almacenamiento.

Implementación de accesos por valor

Técnicas para localizar registros basados en el valor de sus atributos.

Índices

Estructuras que mejoran la velocidad de las operaciones de búsqueda.

Árboles B+

Estructura de datos en árbol optimizada para sistemas de bases de datos.

Dispersión (Hashing)

Técnica que permite el acceso directo a los registros mediante una función de hash.

Índices agrupados

Índices donde el orden físico de los registros es el mismo que el orden lógico.

Implementación de accesos por diversos valores

  • Accesos directos: Localización inmediata mediante dirección física o lógica
  • Accesos secuenciales: Recorrido ordenado de los registros
  • Accesos mixtos: Combinación de métodos según necesidades

3. Lenguajes de consulta y extracción de datos

Características generales

Los lenguajes de consulta permiten interactuar con la base de datos para recuperar y manipular información.

SQL (Structured Query Language)

Lenguaje estándar para bases de datos relacionales, con operaciones DDL, DML y DCL.

OQL (Object Query Language)

Lenguaje de consulta para bases de datos orientadas a objetos, estandarizado por ODMG.

JPQL (Java Persistence Query Language)

Lenguaje de consulta para la Java Persistence API (JPA), similar a SQL pero orientado a objetos.

XMLQL (XML Query Language)

Lenguaje para consultar datos en formato XML, precursor de XQuery.

HTSQL (Hyper Text Structured Query Language)

Lenguaje que traduce URLs en consultas a bases de datos relacionales.

LINQ (Language Integrated Query)

Componente de .NET que añade capacidades de consulta a los lenguajes .NET.

4. Análisis del lenguaje de consulta para BD relacionales

Sentencias de definición de datos (DDL)

CREATE TABLE clientes (
  id INT PRIMARY KEY,
  nombre VARCHAR(100) NOT NULL,
  email VARCHAR(100) UNIQUE,
  fecha_registro DATE DEFAULT CURRENT_DATE
);

Sentencias de manipulación de datos (DML)

-- INSERT: Añadir nuevos registros
INSERT INTO clientes (id, nombre, email)
VALUES (1, 'Juan Pérez', 'juan@example.com');

-- UPDATE: Modificar registros existentes
UPDATE clientes
SET email = 'nuevoemail@example.com'
WHERE id = 1;

-- DELETE: Eliminar registros
DELETE FROM clientes
WHERE id = 1;

Sentencias de concesión y revocación de privilegios (DCL)

-- Conceder permisos
GRANT SELECT, INSERT ON clientes TO usuario1;

-- Revocar permisos
REVOKE INSERT ON clientes FROM usuario1;

Procedimientos almacenados

CREATE PROCEDURE actualizar_saldo(IN cliente_id INT, IN monto DECIMAL(10,2))
BEGIN
  UPDATE cuentas SET saldo = saldo + monto
  WHERE id_cliente = cliente_id;
END;

Disparadores (Triggers)

CREATE TRIGGER registrar_cambio_saldo
AFTER UPDATE ON cuentas
FOR EACH ROW
BEGIN
  INSERT INTO historico_saldos (id_cuenta, saldo_anterior, saldo_nuevo, fecha)
  VALUES (OLD.id, OLD.saldo, NEW.saldo, NOW());
END;
Recursos adicionales

Recursos adicionales

Documentación oficial SQL

  • MySQL: https://dev.mysql.com/doc/
  • PostgreSQL: https://www.postgresql.org/docs/
  • SQL Server: https://docs.microsoft.com/en-us/sql/
  • Oracle: https://docs.oracle.com/en/database/

Herramientas recomendadas

  • MySQL Workbench
  • DBeaver (multi-base de datos)
  • pgAdmin (PostgreSQL)
  • MongoDB Compass
  • SQLite Browser

Plataformas de aprendizaje

  • SQLZoo: https://sqlzoo.net/
  • LeetCode: https://leetcode.com/
  • Mode Analytics SQL Tutorial
  • W3Schools SQL Tutorial
↑ Inicio de Página

UF2214 – Procedimientos de Consulta y Extracción de Información

Situación práctica: La empresa ficticia DataGlobal desea optimizar el acceso a su base de datos de ventas, clientes y productos. Tu tarea como técnico en gestión de datos es diseñar, implementar, probar y documentar procedimientos de consulta eficientes y seguros, además de preparar el informe para su publicación en formatos reutilizables.

1. Diseño y fuentes de datos

Identifica las entidades principales de la base de datos relacional para almacenar la información siguiente:

  • Clientes (ID, Nombre, Ciudad, Email)
  • Pedidos (ID, ID_Cliente, Fecha, Total)
  • Productos (ID, Nombre, Precio)
  • DetallePedidos (ID_Pedido, ID_Producto, Cantidad)

Tarea: Diseña un esquema entidad-relación simplificado y justifica tus decisiones. Aplica al menos dos formas normales.

Consejo: Aplica Primera y Segunda Forma Normal. Identifica claves primarias y foráneas.

Clientes(ID, Nombre, Ciudad, Email)
Pedidos(ID, ID_Cliente, Fecha, Total)
Productos(ID, Nombre, Precio)
DetallePedidos(ID_Pedido, ID_Producto, Cantidad)
      

2. Procedimientos de consulta

Instrucción: Crea consultas SQL que devuelvan:

  1. Listado de clientes con el total gastado.
  2. Productos más vendidos (por cantidad).
  3. Pedidos realizados en los últimos 30 días.
-- Clientes con total gastado
SELECT c.Nombre, SUM(p.Total) AS TotalGastado
FROM Clientes c
JOIN Pedidos p ON c.ID = p.ID_Cliente
GROUP BY c.Nombre;

-- Productos más vendidos
SELECT pr.Nombre, SUM(dp.Cantidad) AS TotalVendido
FROM Productos pr
JOIN DetallePedidos dp ON pr.ID = dp.ID_Producto
GROUP BY pr.Nombre
ORDER BY TotalVendido DESC;

-- Pedidos últimos 30 días
SELECT * FROM Pedidos
WHERE Fecha >= CURDATE() - INTERVAL 30 DAY;
      

3. Archivar y documentar procedimientos

Tarea: Guarda las consultas anteriores como procedimientos almacenados en SQL. Añade comentarios descriptivos (en inglés técnico básico).

-- Stored Procedure: GetTopProducts
DELIMITER //
CREATE PROCEDURE GetTopProducts()
BEGIN
  -- Returns the most sold products
  SELECT pr.Nombre, SUM(dp.Cantidad) AS Total
  FROM Productos pr
  JOIN DetallePedidos dp ON pr.ID = dp.ID_Producto
  GROUP BY pr.Nombre
  ORDER BY Total DESC;
END;
//
DELIMITER ;
      

4. Formato de publicación

Tarea: Elabora una tabla HTML que muestre el resultado de la consulta de los pedidos en los últimos 30 días, incluyendo los campos ID, Cliente, Fecha y Total. Añade una leyenda y estilo visual básico.

<table border="1">
  <caption>Pedidos últimos 30 días</caption>
  <tr><th>ID</th><th>Cliente</th><th>Fecha</th><th>Total</th></tr>
  <tr><td>101</td><td>Ana Torres</td><td>2025-04-22</td><td>420.50</td></tr>
  <tr><td>102</td><td>Luis Pérez</td><td>2025-04-25</td><td>690.00</td></tr>
</table>
      

5. Validación técnica

Tarea: Describe 3 métodos para verificar la calidad y precisión de las consultas implementadas.

  • Revisión cruzada con registros de origen (datos reales).
  • Pruebas de unidad con casos límite.
  • Documentación y revisión de código SQL (nombres claros, comentarios).

6. Comprensión de documentación técnica en inglés

Tarea: Lee el siguiente fragmento técnico y responde:

"The SELECT statement is used to retrieve records from one or more tables. The WHERE clause filters records based on specific conditions. The JOIN clause is used to combine rows from two or more tables."

Pregunta: ¿Cuál es el propósito de cada cláusula mencionada?

  • SELECT: recupera registros.
  • WHERE: filtra por condiciones.
  • JOIN: combina datos de varias tablas.
↑ Inicio de Página

Prueba Evaluativa 1: Conocimientos Teóricos

Instrucciones: Seleccione la respuesta correcta para cada pregunta (solo una opción es válida por pregunta).

Sección 1: Diseño de Bases de Datos

1. ¿Cuál es el objetivo principal de la normalización en bases de datos relacionales?
2. Una tabla está en Segunda Forma Normal (2FN) cuando:
3. La desnormalización controlada se utiliza principalmente para:

Sección 2: Lenguajes de Consulta

4. ¿Cuál de estas sentencias SQL es correcta para obtener los clientes con más de 5 pedidos?
5. En el contexto de SQL, ¿qué significa la cláusula HAVING?

Sección 3: Métodos de Acceso

6. ¿Cuál es la principal ventaja de un índice agrupado (clustered index)?
7. En un árbol B+, las hojas contienen:

Sección 4: Documentación

8. Al interpretar documentación técnica en inglés sobre SQL, el término "stored procedure" se refiere a:

Resultados Prueba Teórica

Puntuación: 0/8

Prueba Evaluativa 2: Caso Práctico

Instrucciones: Analice el siguiente escenario y responda las preguntas utilizando sus conocimientos sobre implementación de bases de datos.

Escenario:

Una empresa de comercio electrónico necesita extraer información de su base de datos relacional que contiene las siguientes tablas:

Clientes(id, nombre, email, fecha_registro)
Productos(id, nombre, precio, categoria_id)
Categorias(id, nombre)
Pedidos(id, cliente_id, fecha, total)
Detalles_Pedido(id, pedido_id, producto_id, cantidad, precio_unitario)

Preguntas:

1. Escriba una consulta SQL que muestre el nombre del cliente, su email y el total gastado en pedidos durante el último trimestre de 2023, ordenados de mayor a menor gasto.
2. Diseñe un procedimiento almacenado llamado actualizar_precio_producto que reciba como parámetros el ID de producto y un porcentaje de aumento, y actualice el precio del producto aplicando dicho aumento.
3. Cree una consulta que muestre las 5 categorías más vendidas (por cantidad de productos) durante el año 2023, incluyendo el nombre de la categoría y la cantidad total de productos vendidos.
4. Explique qué índices recomendaría crear para optimizar las consultas anteriores y por qué.
5. Documente según normas técnicas la consulta de la pregunta 1, incluyendo:
  • Propósito de la consulta
  • Parámetros de entrada (si aplica)
  • Estructura de salida
  • Consideraciones importantes

Resultados Prueba Práctica

↑ Inicio de Página

Análisis de lenguajes y herramientas en sistemas gestores de datos

Actividad 1. Análisis técnico de lenguajes de consulta

Objetivo: Determinar y clasificar las funcionalidades de diversos lenguajes de consulta utilizados en gestores de datos.

Instrucciones: Dada la siguiente lista de lenguajes de consulta:

  • SQL
  • OQL
  • JPQL
  • LINQ
  • XMLQL
  1. Clasifica los lenguajes según el tipo de base de datos que gestionan (relacional, orientada a objetos, XML, etc.).
  2. Indica dos ventajas técnicas de cada uno en procesos de extracción y consulta.
  3. Explica cuál de ellos usarías en una aplicación web moderna que utiliza una base de datos relacional y objetos Java.

Clasificación:

  • SQL – Relacional
  • OQL – Orientado a objetos
  • JPQL – Java + JPA (entornos persistentes)
  • LINQ – Objetos y estructuras de datos .NET
  • XMLQL – Consultas sobre datos XML

Uso recomendado: Para una app Java con BBDD relacional → JPQL

Actividad 2. Normalización y diseño lógico de una BD

Objetivo: Aplicar la teoría de la normalización hasta 3FN a una tabla desnormalizada.

Enunciado: Analiza la siguiente tabla y aplica normalización:

Ventas(ID_Venta, Fecha, Nombre_Cliente, Teléfono, Producto, Precio, Cantidad, Dirección, Zona)
    
  1. Identifica redundancias o inconsistencias potenciales.
  2. Aplica 1FN, 2FN y 3FN, justificando los cambios realizados.
  3. Diseña las tablas resultantes y relaciones clave-externa.

Redundancia: Cliente puede repetirse; Dirección y Teléfono son repetitivos.

Tablas normalizadas:

  • Clientes(ID_Cliente, Nombre, Teléfono, Dirección, Zona)
  • Ventas(ID_Venta, Fecha, ID_Cliente)
  • Productos(ID_Producto, Nombre, Precio)
  • Detalle_Venta(ID_Venta, ID_Producto, Cantidad)

Actividad 3. Métodos de acceso a datos

Objetivo: Clasificar e interpretar métodos de acceso en sistemas de bases de datos.

  1. Define qué son los accesos por valor y accesos por posición, indicando una diferencia principal.
  2. Asocia los siguientes métodos con su categoría:
  • Índices agrupados
  • Árboles B+
  • Hash o dispersión
  • Accesos secuenciales

Acceso por valor: se basa en buscar registros por contenido (por ejemplo, índice por nombre).

Acceso por posición: accede directamente a una posición de almacenamiento.

Categoría:

  • Índices agrupados: acceso por valor (rápido y ordenado)
  • Árboles B+: acceso por valor (jerárquico)
  • Dispersión: acceso directo (hash)
  • Secuenciales: acceso por posición (orden físico)
↑ Inicio de Página

Aplicación de procedimientos de consulta en gestores de datos

Actividad 1. Consultas SQL básicas

Objetivo: Aplicar sentencias SQL correctamente utilizando la gramática y sintaxis del lenguaje.

Enunciado: Dada la siguiente base de datos simplificada:

Clientes(ID, Nombre, Ciudad)
Pedidos(ID, ID_Cliente, Fecha, Total)
    
  1. Escribe una consulta para obtener los nombres de los clientes y el total de sus pedidos.
  2. Filtra los clientes que tengan pedidos mayores a 500 euros.
  3. Ordena el resultado por total descendente.
SELECT c.Nombre, SUM(p.Total) AS TotalPedidos
FROM Clientes c
JOIN Pedidos p ON c.ID = p.ID_Cliente
GROUP BY c.Nombre
HAVING SUM(p.Total) > 500
ORDER BY TotalPedidos DESC;
      

Actividad 2. Sentencias DDL y DCL

Objetivo: Usar correctamente sentencias de definición y control de datos.

  1. Escribe una sentencia para crear una tabla llamada Productos con campos: ID, Nombre, Precio.
  2. Otorga privilegios de lectura sobre la tabla a un usuario llamado usuario1.
  3. Revoca el permiso de escritura al mismo usuario.
CREATE TABLE Productos (
  ID INT PRIMARY KEY,
  Nombre VARCHAR(100),
  Precio DECIMAL(10,2)
);

GRANT SELECT ON Productos TO usuario1;
REVOKE INSERT, UPDATE, DELETE ON Productos FROM usuario1;
      

Actividad 3. Procedimientos almacenados y disparadores

Objetivo: Comprender la estructura y uso de procedimientos y triggers.

  1. Escribe un procedimiento almacenado llamado InsertarCliente que reciba nombre y ciudad como parámetros e inserte un nuevo cliente.
  2. Crea un trigger que registre la fecha de modificación cada vez que se actualiza un pedido.
-- Procedimiento
DELIMITER //
CREATE PROCEDURE InsertarCliente(
  IN nombre_cli VARCHAR(100),
  IN ciudad_cli VARCHAR(100)
)
BEGIN
  INSERT INTO Clientes(Nombre, Ciudad) VALUES(nombre_cli, ciudad_cli);
END;
//
DELIMITER ;

-- Trigger
ALTER TABLE Pedidos ADD COLUMN Fecha_Modificacion DATETIME;

DELIMITER //
CREATE TRIGGER actualizar_fecha_mod
BEFORE UPDATE ON Pedidos
FOR EACH ROW
BEGIN
  SET NEW.Fecha_Modificacion = NOW();
END;
//
DELIMITER ;
      

Actividad 4. Comparación de lenguajes de consulta

Objetivo: Analizar y comparar sintaxis y usos de diferentes lenguajes de consulta.

  1. Investiga y redacta una consulta equivalente en SQL, JPQL y LINQ que obtenga clientes cuya ciudad sea "Madrid".
-- SQL
SELECT * FROM Clientes WHERE Ciudad = 'Madrid';

-- JPQL
SELECT c FROM Cliente c WHERE c.ciudad = 'Madrid';

-- LINQ (C#)
var resultado = from c in Clientes where c.Ciudad == "Madrid" select c;
      
↑ Inicio de Página