1.º DAM · 2025–2026

DataLab Solutions
EcoVerde SmartCity

Diseña e implementa la base de datos de la primera ciudad inteligente de España. Un proyecto real donde el reloj ya ha comenzado a contar.

Scroll

La Misión

🏙️ EcoVerde, Madrid

El Ayuntamiento de Madrid tiene un proyecto ambicioso: convertir un nuevo barrio residencial de 50.000 habitantes en la primera SmartCity totalmente digitalizada de España.

Eres parte de DataLab Solutions S.L., la empresa consultora que ha ganado el concurso público. El Director del Proyecto os convoca: debéis entregar en tres semanas el diseño completo de la base de datos y un prototipo funcional.

⚠️ El alcalde ha advertido que si el sistema falla durante la inauguración ante los medios nacionales, la empresa perderá todos los contratos futuros con el Ayuntamiento.
Servidor de base de datos

El sistema debe cumplir simultáneamente:

🌐 Integración total

Ciudadanos, sensores IoT, vehículos, edificios, comercios y servicios públicos en una sola base de datos.

📐 Normalización 3FN

Diseño completamente normalizado hasta Tercera Forma Normal para garantizar la coherencia de datos.

< 100 ms

Las consultas del panel del alcalde deben ejecutarse en menos de 100 ms. Demostrado con EXPLAIN ANALYZE.

⚙️ Automatización

Procedimientos almacenados y triggers que automaticen las operaciones críticas del sistema.

🔒 LOPDGDD

Cumplimiento legal en el tratamiento de datos personales de los 50.000 ciudadanos del barrio.

💰 Budget 2.000 €

MySQL 8.0 Community Edition (gratuito). Máximo 2.000 € en herramientas. Justificación obligatoria.

La Tarea

Tu equipo (grupos de 3–4 alumnos) asumirá el rol del equipo técnico de DataLab Solutions S.L. encargado de diseñar e implantar la base de datos de EcoVerde.

El producto final es un Expediente Técnico de Base de Datos (ETBD) completo, acompañado de un esquema SQL funcional y ejecutable en MySQL 8.0, junto a una demostración en vivo ante el «Comité Técnico Municipal».

Dashboard análisis de datos

📋 Entregable Principal: ETBD — 8 apartados obligatorios

⛔ Restricciones del Proyecto

🛢️ Solo MySQL 8.0 Community Edition. No se permite Oracle, SQL Server ni PostgreSQL. Coste de licencia: 0 €.
💳 Máximo 2.000 € en herramientas de pago. MySQL Workbench y DBeaver son gratuitos. Justificación obligatoria para cualquier herramienta de pago.
📏 Mínimo 3FN obligatoria. El diseño con tablas en 2FN o inferior no superará el nivel de suficiente.
🔐 LOPDGDD obligatoria. Tabla de auditoría de accesos y campo de consentimiento documentado en datos personales de ciudadanos.
Panel del alcalde < 100 ms. Las 3 consultas más frecuentes deben demostrarse con EXPLAIN ANALYZE.
📊 Mínimo 12 entidades + 20 relaciones + 15 tablas. Modelo que contemple toda la complejidad de EcoVerde.
💬 Todo el SQL debe ir comentado con cabecera (propósito, parámetros, autor) y comentarios de línea en fragmentos complejos.
📅 5 sesiones de trabajo. La entrega final es en la sesión 5. No se admiten entregas fuera de plazo salvo causa justificada.

El Proceso

El proceso se estructura en 5 sesiones de 2 horas cada una. El trabajo se realiza en grupos de 3-4 estudiantes con roles definidos y rotativos.

👥 Distribución de Roles en el Equipo

🏗️

Arquitecto/a de Datos

Lidera el diseño conceptual (E-R) y lógico (modelo relacional). Verifica la normalización. Coordina el ETBD.

💻

Desarrollador/a SQL

Escribe y depura todos los scripts SQL (DDL, DML, DQL). Implementa los procedimientos y triggers.

🔒

Analista de Seguridad

Diseña el plan de seguridad (usuarios, privilegios, LOPDGDD). Documenta la auditoría de accesos.

📈

Especialista en Rendimiento

Diseña los índices, analiza planes de ejecución (EXPLAIN) y verifica el cumplimiento del SLA de 100 ms.

🗓️ Planificación de las 5 Sesiones

S1
SESIÓN 01

Análisis de Requisitos y Modelado E-R

⏱ 2 horas

Objetivos: Comprender los requisitos de EcoVerde · Identificar entidades y relaciones · Construir el diagrama E-R extendido completo.

  • Lectura y análisis del Dossier de Requisitos de EcoVerde (7 servicios del barrio inteligente).
  • Tormenta de ideas grupal (20 min): propuesta de entidades candidatas, debate y consenso para seleccionar las 12 mínimas obligatorias.
  • Definición de atributos: simples, compuestos, multivaluados y derivados. Identificación de claves primarias.
  • Identificación y documentación de las 20 relaciones: nombre, cardinalidad (1:1, 1:N, N:M) y participación.
  • Diseño del Diagrama E-R extendido en MySQL Workbench o draw.io. Incluir entidades débiles y relaciones ternarias.
E1 — Diagrama E-R en PDF + Documento de análisis de requisitos
S2
SESIÓN 02

Modelo Relacional y Normalización

⏱ 2 horas

Objetivos: Transformar E-R a esquema relacional · Normalizar hasta 3FN · Documentar dependencias funcionales.

  • Revisión de las reglas de transformación E-R → modelo relacional (entidades fuertes, débiles, relaciones 1:1, 1:N y N:M).
  • Aplicación sistemática: cada integrante aplica las reglas a un subconjunto de entidades y pone en común los resultados.
  • Verificación de 1FN: eliminación de grupos repetitivos y atributos multivaluados.
  • Verificación de 2FN: identificación y eliminación de dependencias parciales en tablas con clave compuesta.
  • Verificación de 3FN: identificación y eliminación de dependencias transitivas.
  • Revisión cruzada entre equipos (15 min): intercambio de modelos para detección de errores de normalización.
E2 — Esquema relacional normalizado + Documento de normalización justificado
S3
SESIÓN 03

Implementación SQL — DDL, DML y Consultas Básicas

⏱ 2 horas

Objetivos: Crear el script SQL DDL completo · Poblar la BD con datos realistas · Desarrollar consultas básicas y de resumen.

  • Configuración del entorno MySQL 8.0: creación del esquema ecoverde_db y usuarios con privilegios diferenciados (admin, app_user, read_only).
  • Codificación del script DDL: CREATE TABLE con todas las restricciones (PK, FK, NOT NULL, UNIQUE, CHECK). Convención de nomenclatura acordada.
  • Creación de índices sobre las columnas más frecuentemente consultadas.
  • Creación de al menos 2 vistas (VIEW) que simplifiquen las consultas más complejas del panel del alcalde.
  • Script DML de datos de prueba: mínimo 10 filas en tablas principales con datos coherentes (coordenadas GPS, lecturas de sensores...).
  • Consultas SQL básicas: 2 simples, 2 resumen con GROUP BY/HAVING, 2 JOIN (INNER y LEFT).
E3 — Script SQL (DDL + DML) ejecutable + 6 consultas básicas documentadas
S4
SESIÓN 04

Consultas Avanzadas, Procedimientos y Triggers

⏱ 2 horas

Objetivos: Consultas DQL complejas · Implementar procedimientos almacenados y triggers · Verificar rendimiento con EXPLAIN ANALYZE.

  • Consultas DQL avanzadas: 2 multitabla (3+ tablas), 1 subconsulta correlacionada, 1 no correlacionada.
  • sp_registrar_incidencia(p_tipo, p_descripcion, p_sensor_id) — registra incidencias del sistema e incrementa el contador de alertas.
  • sp_informe_consumo_energetico(p_fecha_ini, p_fecha_fin) — informe de consumo por edificio con estadísticas (max, min, avg).
  • tr_before_delete_ciudadano — antes de borrar un ciudadano, almacena copia en ciudadanos_historico.
  • tr_after_insert_sensor_lectura — actualiza automáticamente ultima_lectura y estado del sensor.
  • Análisis de rendimiento: EXPLAIN ANALYZE sobre las 3 consultas del panel. Ajuste de índices si supera 100 ms.
E4 — Scripts SP + Triggers + Informe EXPLAIN (3 consultas) + Catálogo DQL completo
S5
SESIÓN 05

Seguridad, LOPDGDD, Revisión Final y Presentación

⏱ 2 horas

Objetivos: Completar el plan de seguridad y cumplimiento LOPDGDD · Ensamblar el ETBD completo · Presentar y defender ante el Comité Técnico Municipal.

  • Implementación del plan de seguridad MySQL: 3 roles (admin_ecoverde, app_ecoverde, reporting_ecoverde) con GRANT/REVOKE. Demostrar que app_ecoverde no puede hacer DROP TABLE.
  • Revisión LOPDGDD: campo consentimiento_rgpd, trigger de auditoría, procedimiento sp_anonimizar_ciudadano (derecho al olvido).
  • Ensamblado del ETBD completo: integrar entregables E1–E4 con el plan de seguridad.
  • Ensayo de presentación (15 min): demostración en vivo del script completo, procedimientos, triggers y consulta < 100 ms.
  • Presentación ante el Comité Técnico Municipal (12 min + 8 min preguntas). Todos los miembros participan obligatoriamente.
  • Coevaluación entre pares: cada equipo cumplimenta la rúbrica del equipo que acaba de presentar.
E5 (FINAL) — ETBD completo en PDF + Script SQL único ejecutable + Presentación (slides)

Recursos de Apoyo

Los recursos se organizan por bloques. Los marcados como obligatorios deben consultarse antes de la sesión indicada.

📚 Documentación Técnica MySQL 8.0

🎨 Diseño de Bases de Datos

🛠️ Herramientas del Proyecto

📦 Materiales Proporcionados por el Docente

  • Dossier de Requisitos de EcoVerde (PDF, 10 páginas) con descripción detallada de los 7 servicios del barrio inteligente.
  • Plantilla del Expediente Técnico de Base de Datos (ETBD) en formato Word.
  • Checklist de normalización hasta 3FN (12 ítems de verificación).
  • Checklist de cumplimiento LOPDGDD para bases de datos municipales (10 ítems).
  • Guion de demostración en vivo para la sesión 5 (flujo de prueba del sistema).
  • Rúbrica de evaluación detallada y rúbrica de coevaluación entre pares.

Sistema de Evaluación

La evaluación es continua, formativa y sumativa. Se valoran los entregables parciales, la calidad técnica del producto final y las competencias transversales. Ponderación alineada con los criterios de evaluación del módulo.

25%
Entregables
Parciales E1–E4
35%
ETBD Final
completo
25%
Script SQL
ejecutable
10%
Presentación
y Defensa oral
5%
Coevaluación
entre pares

Rúbrica: Diseño E-R y Modelo Relacional

Criterio Excelente (9–10) Bien (7–8) Suficiente (5–6) Insuficiente (<5)
Diagrama E-R ≥12 entidades, ≥20 relaciones, cardinalidades y participación correctas, notación consistente. 10–11 entidades, 18–19 relaciones, alguna cardinalidad imprecisa. 8–9 entidades, relaciones básicas identificadas, cardinalidades con errores. <8 entidades o diagrama incompleto.
Modelo Relacional Transformación perfecta con todas las reglas aplicadas y documentadas. Integridad referencial completa. Transformación correcta con alguna omisión menor. Integridad referencial cubierta. Transformación básica, alguna tabla con error de claves. Transformación incorrecta o incompleta.
Normalización 3FN Todas las tablas en 3FN verificadas con dependencias funcionales documentadas. La mayoría en 3FN, 1–2 tablas en 2FN justificadas. La mayoría en 2FN, algunas en 1FN. Tablas sin normalizar o documentación ausente.

Rúbrica: Script SQL Completo

Criterio Excelente (9–10) Bien (7–8) Suficiente (5–6) Insuficiente (<5)
DDL — Tablas y Restricciones Todas las tablas con PK, FK, NOT NULL, CHECK e índices. Ejecuta sin errores en MySQL 8.0. Tablas correctas con alguna restricción CHECK omitida. Tablas básicas, FK parcialmente definidas. Script con errores de sintaxis o sin restricciones de integridad.
DQL — Consultas 8 consultas con todos los tipos requeridos (JOIN, subconsultas, agregados, vistas). Resultados correctos. 6–7 consultas correctas, algún tipo omitido. 4–5 consultas, JOIN básicos solo. <4 consultas o resultados incorrectos.
Procedimientos y Triggers 2 procedimientos + 2 triggers funcionales con casos de prueba documentados. 3 de los 4 elementos funcionales. 2 de los 4 elementos funcionales. <2 elementos o no funcionales.
Seguridad y LOPDGDD 3 roles MySQL correctos + trigger auditoría + sp_anonimizar funcional + checklist completo. Roles correctos + 2 de los otros elementos. Roles básicos o elemento LOPDGDD básico. Sin gestión de usuarios o sin consideración LOPDGDD.
Rendimiento Las 3 consultas del panel <100 ms demostrado con EXPLAIN ANALYZE + índices optimizados. 2 de 3 consultas <100 ms. Consultas analizadas aunque >100 ms. Sin análisis de rendimiento.

Rúbrica: Presentación y Defensa

Criterio Excelente (9–10) Bien (7–8) Suficiente (5–6) Insuficiente (<5)
Claridad y rigor técnico Exposición fluida, terminología SQL/diseño precisa, todos los miembros participan activamente. Exposición clara, participación mayoritaria del equipo. Comprensible, pero con lagunas técnicas. Confusa o solo habla un miembro.
Defensa ante preguntas Respuestas precisas a preguntas técnicas del comité con capacidad de autocrítica. Respuestas correctas con alguna imprecisión. Respuestas parciales ante preguntas complejas. No responde o respuestas incorrectas.
Demo en vivo Script SQL ejecutado completamente sin errores, panel del alcalde <100 ms demostrado en tiempo real. Demo funcional con ajuste menor en vivo. Demo parcial o con error no crítico. Demo no ejecutada o con errores críticos.

Conclusión y Reflexión

A lo largo de estas 5 sesiones habéis recorrido el ciclo completo de vida de una base de datos real: desde el análisis de los requisitos del cliente hasta la entrega de un sistema funcional, pasando por el modelado conceptual, la normalización, la implementación SQL y la demostración de rendimiento.

Todo ello bajo restricciones reales de presupuesto, tecnología y marco legal. Este proceso es exactamente el que realizaréis en vuestros primeros proyectos profesionales.

Las competencias desarrolladas son directamente transferibles a cualquier SGBD moderno: lo aprendido en MySQL 8.0 se aplica con variaciones menores en PostgreSQL, Oracle, SQL Server o MariaDB. Los principios de normalización, integridad referencial y diseño eficiente son universales.

Equipo trabajando con tecnología

✏️ Diario de Aprendizaje — Reflexiones Finales

Reflexionad individualmente sobre las siguientes preguntas antes de cerrar el proyecto:

  • 🤔 ¿Qué decisión de normalización fue la más difícil de tomar y por qué?
  • 💰 ¿Cómo afectó la restricción del presupuesto de 2.000 € a vuestras elecciones tecnológicas?
  • 👤 ¿Qué diferencia hay entre diseñar una base de datos «ideal» en papel y una que debe funcionar realmente con datos de ciudadanos?
  • 🔗 ¿Cómo se relaciona lo aprendido con el módulo de Programación o con el módulo de Acceso a Datos que cursaréis en 2.º?
«Un buen diseño de base de datos es invisible cuando funciona bien y devastador cuando no existe.»