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.
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.
Ciudadanos, sensores IoT, vehículos, edificios, comercios y servicios públicos en una sola base de datos.
Diseño completamente normalizado hasta Tercera Forma Normal para garantizar la coherencia de datos.
Las consultas del panel del alcalde deben ejecutarse en menos de 100 ms. Demostrado con EXPLAIN ANALYZE.
Procedimientos almacenados y triggers que automaticen las operaciones críticas del sistema.
Cumplimiento legal en el tratamiento de datos personales de los 50.000 ciudadanos del barrio.
MySQL 8.0 Community Edition (gratuito). Máximo 2.000 € en herramientas. Justificación obligatoria.
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».
Identificación de al menos 12 entidades con sus atributos, relaciones y cardinalidades extraídas del dossier de EcoVerde.
Modelado con notación Chen o crow's foot usando MySQL Workbench u otra herramienta justificada. Entidades débiles y relaciones ternarias incluidas.
Transformación E-R → modelo relacional con justificación de reglas aplicadas. Verificación de 1FN, 2FN y 3FN en todas las tablas.
Todas las tablas con restricciones, claves primarias y ajenas, índices y al menos 2 vistas optimizadas. Ejecutable en MySQL 8.0.
Inserción de datos realistas en todas las tablas (mínimo 10 filas por tabla principal): nombres, fechas, coordenadas GPS, lecturas de sensores IoT.
Mínimo 8 consultas que incluyan todos los tipos de JOIN, funciones de agregado, subconsultas y uso de vistas.
Mínimo 2 procedimientos almacenados + 2 triggers con documentación completa y casos de prueba (sp_registrar_incidencia, sp_informe_consumo, tr_before_delete_ciudadano, tr_after_insert_sensor).
Gestión de usuarios MySQL con privilegios diferenciados (admin, app_user, read_only) + medidas LOPDGDD para datos de ciudadanos.
EXPLAIN ANALYZE.
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.
Lidera el diseño conceptual (E-R) y lógico (modelo relacional). Verifica la normalización. Coordina el ETBD.
Escribe y depura todos los scripts SQL (DDL, DML, DQL). Implementa los procedimientos y triggers.
Diseña el plan de seguridad (usuarios, privilegios, LOPDGDD). Documenta la auditoría de accesos.
Diseña los índices, analiza planes de ejecución (EXPLAIN) y verifica el cumplimiento del SLA de 100 ms.
Objetivos: Comprender los requisitos de EcoVerde · Identificar entidades y relaciones · Construir el diagrama E-R extendido completo.
MySQL Workbench o draw.io. Incluir entidades débiles y relaciones ternarias.Objetivos: Transformar E-R a esquema relacional · Normalizar hasta 3FN · Documentar dependencias funcionales.
Objetivos: Crear el script SQL DDL completo · Poblar la BD con datos realistas · Desarrollar consultas básicas y de resumen.
ecoverde_db y usuarios con privilegios diferenciados (admin, app_user, read_only).CREATE TABLE con todas las restricciones (PK, FK, NOT NULL, UNIQUE, CHECK). Convención de nomenclatura acordada.GROUP BY/HAVING, 2 JOIN (INNER y LEFT).Objetivos: Consultas DQL complejas · Implementar procedimientos almacenados y triggers · Verificar rendimiento con EXPLAIN ANALYZE.
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.EXPLAIN ANALYZE sobre las 3 consultas del panel. Ajuste de índices si supera 100 ms.Objetivos: Completar el plan de seguridad y cumplimiento LOPDGDD · Ensamblar el ETBD completo · Presentar y defender ante el Comité Técnico Municipal.
admin_ecoverde, app_ecoverde, reporting_ecoverde) con GRANT/REVOKE. Demostrar que app_ecoverde no puede hacer DROP TABLE.consentimiento_rgpd, trigger de auditoría, procedimiento sp_anonimizar_ciudadano (derecho al olvido).Los recursos se organizan por bloques. Los marcados como obligatorios deben consultarse antes de la sesión indicada.
Manual oficial completo en inglés. Referencia definitiva para todos los aspectos de MySQL 8.0.
dev.mysql.com/doc/refman/8.0/en/Guía de uso de MySQL Workbench para modelado EER y administración visual de bases de datos.
dev.mysql.com/doc/workbench/en/Sintaxis completa de CREATE, ALTER y DROP TABLE en MySQL. Imprescindible para la sesión 3.
Guía oficial de procedimientos almacenados y triggers en MySQL 8.0. Imprescindible para la sesión 4.
dev.mysql.com/doc/refman/8.0/en/stored-objects.htmlUso de EXPLAIN y EXPLAIN ANALYZE para optimización de consultas. Clave para el SLA de 100 ms.
Referencia rápida de SQL con ejemplos interactivos. Ideal para repasar sintaxis de forma ágil.
w3schools.com/sql/Capítulos 6 y 7 del libro Fundamentos de Bases de Datos. Disponible en la biblioteca del centro.
📖 Biblioteca del centroTutorial completo con ejemplos paso a paso desde 1FN hasta BCFN. Perfecto para la sesión 2.
guru99.com/database-normalization.htmlGuía visual de notación crow's foot y Chen con ejemplos interactivos y plantillas descargables.
lucidchart.com/pages/er-diagramsEjemplos resueltos de normalización 1FN, 2FN, 3FN con ejercicios prácticos para reforzar.
databasestar.com/database-normalization/SGBD principal del proyecto. Gratuito (open source). Instalación obligatoria en todos los equipos.
dev.mysql.com/downloads/mysql/Herramienta de modelado, diseño EER y administración visual de MySQL. 100% gratuita.
dev.mysql.com/downloads/workbench/Cliente SQL multiplataforma gratuito. Alternativa y complemento a Workbench.
dbeaver.io/download/Diagramas E-R online, gratuito. Alternativa a Workbench si hay problemas de instalación.
drawio.comEntorno online para probar SQL MySQL sin instalación. Ideal para pruebas rápidas de consultas.
db-fiddle.comControl de versiones para los scripts SQL del proyecto. Recomendado para trabajo colaborativo.
github.comLa 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.
| 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. |
| 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. |
| 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. |
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.
Reflexionad individualmente sobre las siguientes preguntas antes de cerrar el proyecto:
«Un buen diseño de base de datos es invisible cuando funciona bien y devastador cuando no existe.»