UD01 · Prácticas
RA1 Reconoce los elementos de las bases de datos analizando sus funciones y valorando la utilidad de los sistemas gestores. 10 CE
- RA1.a Se han analizado los sistemas lógicos de almacenamiento y sus características.
- RA1.b Se han identificado los distintos tipos de bases de datos según el modelo de datos utilizado.
- RA1.c Se han identificado los distintos tipos de bases de datos en función de la ubicación de la información.
- RA1.d Se ha evaluado la utilidad de un sistema gestor de bases de datos.
- RA1.e Se ha reconocido la función de cada uno de los elementos de un sistema gestor de bases de datos.
- RA1.f Se han clasificado los sistemas gestores de bases de datos.
- RA1.g Se ha reconocido la utilidad de las bases de datos distribuidas.
- RA1.h Se han analizado las políticas de fragmentación de la información.
- RA1.i Se ha identificado la legislación vigente sobre protección de datos.
- RA1.j Se han reconocido los conceptos de Big Data y de la inteligencia de negocios.
RA2 Crea bases de datos definiendo su estructura y las características de sus elementos según el modelo relacional. 1 CE
- RA2.a Se ha analizado el formato de almacenamiento de la información.
| Práctica | Tipo | Nivel | CE principales |
|---|---|---|---|
| 1.1 De la hoja de cálculo al SGBD | Guiada | ●○○ | RA1.a, RA1.d |
| 1.2 Primer contacto con Oracle | Guiada | ●●○ | RA1.e, RA2.a |
| 1.3 Elegir un SGBD para cada caso | Autónoma | ●●○ | RA1.b, RA1.f |
| 1.4 Diseño de la distribución de datos | Autónoma | ●●○ | RA1.c, RA1.g, RA1.h |
| 1.5 Auditoría de protección de datos | Reto | ●●● | RA1.i |
| 1.6 De los datos a las decisiones | Autónoma | ●○○ | RA1.j |
| Proyecto EduGest · UD01 | Proyecto | ●●○ | RA1.d, RA1.i |
Práctica 1.1 · De la hoja de cálculo al SGBD
Objetivo
Detectar los problemas que provoca guardar la información en ficheros independientes y justificar con argumentos técnicos por qué una organización necesita un sistema gestor de bases de datos.
Contexto
La academia de idiomas Lingua gestiona todo con una hoja de cálculo que comparten la secretaria y dos profesores por correo electrónico. Cada fila representa la inscripción de un alumno en un curso:
| fila | alumno | telefono | curso | profesor | tlf_profesor | precio | pagado | |
|---|---|---|---|---|---|---|---|---|
| 1 | Ana Ruiz | 611222333 | ana@mail.com | Inglés B1 | John Smith | 699111222 | 90 € | Sí |
| 2 | Ana Ruiz | 611222333 | ana.ruiz@mail.com | Francés A2 | Marie Blanc | 699333444 | 80 € | No |
| 3 | Luis Gil | 622333444 | luis@mail.com | Inglés B1 | John Smith | 699111222 | 90 € | Sí |
| 4 | Eva Mora | 633444555 | eva@mail.com | Inglés B1 | Jhon Smith | 699111000 | 95 € | Sí |
| 5 | Luis Gil | 622333444 | luis@mail.com | Alemán A1 | 100 | Sí |
Además, el profesor de inglés guarda una copia propia del fichero en su portátil, donde añade las notas de sus alumnos.
Requisitos
- Haber leído los apartados 3 y 4 de la teoría (ficheros tradicionales y SGBD).
- Una hoja de cálculo para reproducir la tabla (opcional).
Enunciado
Analiza la hoja y responde de forma razonada:
- Localiza al menos cuatro inconsistencias en los datos. Indica la fila y la columna de cada una.
- Identifica la redundancia: ¿qué datos se repiten y cuántas veces habría que modificar la hoja si John Smith cambia de teléfono?
- Describe una anomalía de inserción, una de modificación y una de borrado con ejemplos concretos de esta hoja.
- ¿Qué problemas provoca la copia propia del profesor de inglés?
- ¿Qué ocurre si la secretaria y un profesor abren y guardan el fichero a la vez?
- Redacta un párrafo dirigido a la dirección de la academia que justifique el uso de un SGBD. Usa al menos cinco de las funciones de un SGBD que aparecen en la teoría.
Desarrollo
Busca valores distintos para un mismo hecho. Recorre la hoja columna a columna. Pregúntate: «¿Este dato puede tener un único valor correcto?». Por ejemplo, el correo de una persona o el precio de un curso.
Cuenta las repeticiones. Para cada entidad (alumno, profesor, curso), anota cuántas filas repiten sus datos. Eso es redundancia.
Piensa en operaciones, no en datos. Para encontrar anomalías imagina tres situaciones: dar de alta un curso nuevo que todavía no tiene alumnos, cambiar el precio del inglés B1 y dar de baja a la única alumna de un curso.
Relaciona cada problema con una función del SGBD. Por ejemplo: redundancia ↔ diseño integrado de los datos; acceso simultáneo ↔ control de concurrencia.
Pista para el apartado 3
- Inserción: ¿se puede registrar el curso Italiano A1 con su precio si todavía no hay ningún alumno inscrito?
- Modificación: si el inglés B1 sube a 95 €, ¿cuántas filas hay que cambiar? ¿Qué pasa si se olvida una?
- Borrado: si Luis Gil se da de baja de alemán (fila 5), ¿qué información sobre el curso de alemán desaparece?
Comprobación
Tu respuesta es completa si:
- Encuentras las inconsistencias del correo de Ana (filas 1 y 2), del nombre y el teléfono del profesor (fila 4), del precio de inglés B1 (fila 4) y del formato del precio (fila 5, sin «€»).
- Indicas que el teléfono de John Smith habría que cambiarlo en 3 filas.
- Las tres anomalías se explican con un ejemplo de la hoja, no con una definición genérica.
- El párrafo final menciona concurrencia, integridad, seguridad, independencia de los datos y copias de seguridad.
🔒 Solución orientativa
Errores habituales
- Confundir redundancia con inconsistencia. La redundancia es repetir un dato; la inconsistencia es que sus copias no coincidan. La primera provoca la segunda.
- Responder con definiciones copiadas en lugar de ejemplos de la hoja. El criterio RA1.d pide evaluar la utilidad del SGBD en un caso concreto.
Ampliación
Propón cómo dividirías la hoja en varias tablas para que cada dato aparezca una sola vez. No hace falta usar la notación formal: basta con indicar qué columnas iría en cada tabla y cómo se relacionan. Guarda la propuesta: la revisaremos en la UD04 (normalización).
Práctica 1.2 · Primer contacto con Oracle: dentro de un SGBD
Objetivo
Instalar un SGBD real y reconocer en él los elementos estudiados en la teoría: instancia y base de datos, procesos, memoria, ficheros de datos, diccionario de datos, usuarios y sesiones.
Contexto
Te incorporas al departamento de sistemas de EduGest. Antes de empezar a desarrollar, tu responsable te pide que pongas en marcha el entorno y que redactes una breve ficha técnica del servidor de bases de datos.
Requisitos
- Docker Desktop (Windows/macOS) o Docker Engine (Linux) funcionando.
- 8 GB de RAM y 15 GB libres en disco.
- La guía de instalación del entorno.
Desarrollo
Instala y arranca Oracle AI Database 26ai Free siguiendo la guía del entorno. Espera al mensaje
DATABASE IS READY TO USE!.Conéctate como
SYSTEMal servicioFREEPDB1y activa el registro de la sesión para conservar las evidencias:SPOOL p1_2_salida.txt SHOW USER SHOW CON_NAMEIdentifica la versión y la instancia. Una instancia es el conjunto de procesos y memoria que da servicio; la base de datos son los ficheros en disco.
SELECT banner_full FROM v$version; SELECT instance_name, host_name, version_full, status, startup_time FROM v$instance; -- Bases de datos conectables (multitenant) SELECT con_id, name, open_mode FROM v$pdbs;Observa los procesos en segundo plano. Cada uno corresponde a un componente de la teoría:
SELECT name, description FROM v$bgprocess WHERE paddr <> '00' AND name IN ('PMON', 'SMON', 'DBW0', 'LGWR', 'CKPT', 'MMON', 'RECO') ORDER BY name;Revisa la memoria y el tamaño de bloque. El bloque es la unidad mínima de lectura y escritura en disco (nivel interno de ANSI/SPARC).
SELECT name, value FROM v$parameter WHERE name IN ('db_block_size', 'sga_target', 'pga_aggregate_target', 'processes');Localiza los ficheros físicos de la base de datos conectable:
SELECT tablespace_name, file_name, ROUND(bytes / 1024 / 1024) AS mb FROM dba_data_files ORDER BY tablespace_name; SELECT tablespace_name, contents, status FROM dba_tablespaces;Comprueba que existen de verdad desde la terminal de tu equipo:
docker exec oracle26ai ls -lh /opt/oracle/oradata/FREE/FREEPDB1Consulta el diccionario de datos. Es la base de datos que describe la base de datos (metadatos).
SELECT COUNT(*) AS vistas_diccionario FROM dictionary; SELECT table_name, comments FROM dictionary WHERE table_name IN ('USER_TABLES', 'USER_CONSTRAINTS', 'DBA_USERS', 'V$SESSION');Identifica a los usuarios y las sesiones abiertas:
SELECT username, account_status, created FROM dba_users WHERE oracle_maintained = 'N' ORDER BY created; SELECT sid, username, program, status FROM v$session WHERE username IS NOT NULL;Abre una segunda conexión (por ejemplo, SQL Developer y SQLcl a la vez) y repite la última consulta. ¿Qué cambia?
Cierra el registro con
SPOOL OFF.
Las vistas que empiezan por
V$son vistas dinámicas de rendimiento: muestran el estado de la instancia en memoria en ese momento. Las que empiezan porDBA_,ALL_yUSER_forman el diccionario de datos: describen los objetos guardados en la base de datos.
Preguntas
- ¿Qué diferencia hay entre la instancia
FREEy la base de datosFREEPDB1? - Asocia cada proceso del paso 4 con una función del SGBD (escritura de datos, registro de transacciones, recuperación tras un fallo…).
- ¿Cuál es el tamaño de bloque? ¿Por qué un SGBD lee bloques y no filas sueltas?
- ¿En qué nivel de la arquitectura ANSI/SPARC situarías los ficheros
.dbfdel paso 6? ¿Y la vistaUSER_TABLES? - ¿Cuántos usuarios no mantenidos por Oracle hay? ¿Qué usuario usarías para trabajar en el proyecto y por qué no deberías usar
SYSTEM?
Comprobación
-
v$versionmuestra Oracle AI Database 26ai Free. -
v$pdbsmuestraFREEPDB1en modoREAD WRITE. - Aparecen al menos los procesos
PMON,SMON,DBW0,LGWRyCKPT. - El fichero
p1_2_salida.txtcontiene la salida de todas las consultas. - Al abrir la segunda conexión aparece una sesión más en
v$session.
🔒 Solución de las preguntas
Errores habituales
| Error | Causa | Solución |
|---|---|---|
ORA-00942: table or view does not exist al consultar v$... | Estás conectado con un usuario sin privilegios de administración | Conéctate como SYSTEM |
ORA-12514 | La base de datos todavía arranca o has escrito mal el servicio | Espera y usa FREEPDB1 |
docker: Error response from daemon: Conflict | Ya existe un contenedor con ese nombre | docker start oracle26ai en lugar de docker run |
Ampliación
Ejecuta docker stats oracle26ai mientras lanzas varias consultas. Anota la memoria que consume el contenedor y relaciónala con el parámetro sga_target. Después ejecuta el script edugest_00_usuario.sql del proyecto EduGest y comprueba que el nuevo usuario aparece en dba_users.
Práctica 1.3 · Elegir un SGBD para cada caso
Objetivo
Clasificar los SGBD con criterios técnicos y justificar cuál conviene en situaciones profesionales distintas.
Contexto
Una consultora de desarrollo recibe cuatro encargos y te pide una recomendación razonada del sistema de almacenamiento de cada uno.
Enunciado
| Caso | Descripción |
|---|---|
| A. App de recetas sin conexión | Aplicación Android que guarda recetas y listas de la compra en el móvil. Debe funcionar sin Internet. Un único usuario. |
| B. Tienda online | Catálogo de 5000 productos, pedidos, pagos y facturas. Varios empleados trabajan a la vez. Los pagos no pueden quedar a medias. |
| C. Red profesional | Millones de usuarios. La función principal es recomendar contactos de «segundo y tercer grado» (amigos de amigos). |
| D. Monitorización de invernaderos | 3000 sensores envían temperatura y humedad cada 10 segundos. Se consultan gráficas por rangos de tiempo. |
Para cada caso:
- Clasifica la necesidad según el modelo de datos, el número de usuarios, la ubicación y el propósito (OLTP, OLAP u otro).
- Propón dos SGBD concretos y compáralos en una tabla: modelo, licencia, despliegue (local, nube), soporte de transacciones y última versión estable (consulta la web oficial).
- Recomienda uno y justifica la decisión en un párrafo. Indica también qué perderías con la otra opción.
Termina con una tabla resumen y una conclusión: ¿existe un SGBD que sea el mejor para todo?
Comprobación
- Cada caso tiene clasificación, comparativa, recomendación y la desventaja de la alternativa.
- Las versiones y licencias proceden de fuentes oficiales y están citadas con fecha de consulta.
- Al menos un caso usa un SGBD relacional y al menos otro uno no relacional.
- El caso B justifica la necesidad de transacciones ACID.
Pista: por dónde empezar
- Fíjate en las palabras clave de cada enunciado: «sin conexión» y «un único usuario» → embebido; «pagos no pueden quedar a medias» → transacciones; «amigos de amigos» → relaciones entre nodos; «cada 10 segundos» y «rangos de tiempo» → series temporales.
- DB-Engines clasifica cientos de SGBD por modelo y popularidad. Úsalo como punto de partida, pero contrasta los datos en la web oficial de cada producto.
Errores habituales
Elegir el SGBD «más popular» o «el que conozco» no es una justificación. Cada recomendación debe apoyarse en una característica del caso.
Ampliación
Añade un caso E propuesto por ti, a partir de una empresa real de tu entorno (por ejemplo, la de tus prácticas en empresa), y resuélvelo con el mismo esquema.
Práctica 1.4 · Diseño de la distribución de datos
Objetivo
Decidir cuándo distribuir una base de datos y diseñar una política de fragmentación que cumpla las reglas de completitud, reconstrucción y disyunción.
Contexto
FarmaRed es una cadena de farmacias con sedes en Valencia, Alicante y Castellón. Cada sede tiene su propio servidor. La tabla central de clientes es:
CLIENTE(id_cliente, dni, nombre, apellidos, telefono, provincia,
historial_dispensaciones, alergias, puntos_fidelidad)- Cada farmacia atiende sobre todo a clientes de su provincia.
- El departamento de marketing (en Valencia) necesita
id_cliente,nombre,provinciaypuntos_fidelidadde todos los clientes. - Solo el personal farmacéutico puede consultar
historial_dispensacionesyalergias.
Enunciado
- Justifica si tiene sentido una base de datos distribuida o si basta con una centralizada. Considera la disponibilidad si cae la conexión entre sedes.
- Diseña una fragmentación horizontal de
CLIENTEpor provincia. Escribe la condición de cada fragmento y en qué nodo se guarda. - Diseña una fragmentación vertical que separe los datos sanitarios. ¿Qué columna debe repetirse en todos los fragmentos? ¿Por qué?
- Combínalas en una fragmentación mixta y dibuja el resultado (nodos y fragmentos).
- Escribe en SQL conceptual cómo se reconstruiría la tabla completa (usa
UNION ALLyJOIN). - Comprueba que tu diseño cumple las tres reglas de la fragmentación.
- ¿Replicarías algún fragmento? Justifica la respuesta.
Comprobación
- Cada fragmento horizontal tiene una condición, y entre todas cubren todas las provincias sin solaparse.
- Los fragmentos verticales comparten la clave primaria
id_cliente. - La reconstrucción usa
UNION ALLpara los fragmentos horizontales yJOINpara los verticales. - El diseño tiene en cuenta que los datos sanitarios son una categoría especial según el RGPD.
🔒 Solución parcial: reconstrucción
Ampliación
Investiga qué es el sharding en MongoDB y qué papel tiene la clave de fragmentación (shard key). ¿Qué campo elegirías como clave en FarmaRed? ¿Qué pasaría si eligieras dni?
Práctica 1.5 · Auditoría de protección de datos
Objetivo
Identificar la legislación de protección de datos que afecta a una base de datos y traducir sus principios en medidas técnicas concretas.
Contexto
El instituto va a sustituir sus hojas de cálculo por EduGest. La dirección te pide una auditoría previa que garantice que el diseño cumple el RGPD desde el principio.
Enunciado
Usa el enunciado de EduGest y estas nuevas peticiones del centro:
- El departamento de orientación quiere registrar diagnósticos de necesidades educativas especiales.
- Se quiere guardar una fotografía del alumnado para el carné.
- Una empresa de autoescuelas ha ofrecido dinero por los correos y teléfonos del alumnado mayor de edad.
- Los datos de los antiguos alumnos se guardan «para siempre».
Elabora un informe con:
- Inventario de datos personales de EduGest: tabla con el dato, la persona interesada, si es una categoría especial y su finalidad.
- Un registro simplificado de la actividad de tratamiento (art. 30 RGPD): responsable, finalidades, categorías de datos e interesados, destinatarios, plazos de conservación y medidas de seguridad.
- Para cada nueva petición, indica si es lícita, qué condiciones exigiría y qué cambios implicaría en la base de datos.
- Al menos seis medidas técnicas que aplicarás en las unidades siguientes, indicando la unidad (por ejemplo: «vista sin datos de contacto para el profesorado, UD05»).
- El procedimiento que seguiría el centro ante una brecha de seguridad.
Comprobación
- Se citan correctamente el Reglamento (UE) 2016/679 y la Ley Orgánica 3/2018.
- Los diagnósticos se identifican como datos de salud (categoría especial).
- Se rechaza la cesión a la autoescuela y se explica por qué.
- Se propone un plazo de conservación y qué hacer cuando termine (supresión o anonimización).
- Las medidas técnicas son concretas y verificables.
Pista: dónde encontrar la información
La AEPD publica guías prácticas para centros educativos y modelos de registro de actividades de tratamiento. Busca en aepd.es la sección dedicada a educación. Recuerda que la base legal del tratamiento de los datos académicos en un centro público es el cumplimiento de una misión de interés público, no el consentimiento.
Ampliación
Diseña cómo anonimizarías los datos de los antiguos alumnos para poder seguir haciendo estadísticas (por ejemplo, tasa de aprobados por ciclo y año) sin conservar datos personales.
Práctica 1.6 · De los datos a las decisiones
Objetivo
Reconocer qué es un proceso de inteligencia de negocios y en qué se diferencia un uso analítico (OLAP) de uno transaccional (OLTP).
Contexto
La jefatura de estudios quiere saber si el porcentaje de aprobados en Bases de datos depende del turno o del ciclo.
Enunciado
- Crea en una hoja de cálculo una tabla con estas columnas y al menos 40 filas inventadas:
curso_academico,ciclo,turno,modulo,nota. - Con una tabla dinámica, calcula la nota media y el número de aprobados por ciclo y turno.
- Crea un gráfico que lo represente.
- Escribe tres conclusiones que podría usar la jefatura de estudios para tomar decisiones.
- Responde: ¿por qué no conviene lanzar estos análisis directamente sobre la base de datos con la que secretaría matricula cada día? Relaciónalo con OLTP/OLAP.
Comprobación
- La tabla dinámica agrupa por dos dimensiones (ciclo y turno).
- Las conclusiones se apoyan en los datos y no en opiniones.
- La respuesta del punto 5 menciona el impacto en el rendimiento y los datos históricos.
Lo que acabas de hacer con la tabla dinámica es una consulta resumen. En la UD07 la escribirás en SQL con
GROUP BYyAVG.
Proyecto EduGest · UD01: informe de análisis
Objetivo
Iniciar el proyecto transversal con un análisis del sistema actual y la justificación técnica de la solución.
Enunciado
Lee el enunciado de EduGest y redacta 01-analisis.md con estos apartados:
- Situación actual. El centro usa una hoja de cálculo por ciclo y otra de faltas por cada profesor. Describe tres problemas concretos que provoca.
- Usuarios del sistema. Identifica los perfiles (secretaría, profesorado, tutoría, jefatura, alumnado, administrador de la base de datos) y qué necesita hacer cada uno. Relaciónalos con los perfiles de usuario de un SGBD.
- Solución propuesta. Tipo de SGBD (modelo, ubicación, licencia) y justificación. Explica por qué usaremos Oracle para la parte relacional.
- Protección de datos. Resumen de las conclusiones de la práctica 1.5 aplicadas a EduGest.
- Glosario. Diez términos de la unidad con tu propia definición.
Comprobación
El documento está en el repositorio, en Markdown, y se lee bien en GitHub o GitLab.
Cada perfil de usuario tiene al menos dos operaciones concretas.
La elección del SGBD se apoya en características del caso, no en preferencias.