Institución: Politécnico Colombiano Jaime Isaza Cadavid
Asignatura: Bases de Datos II
Profesor: Manolo Pajaro Borras
- Python 3.8+ (el proyecto usa Python 3.14)
- Docker Desktop instalado y ejecutándose
- Jupyter Notebook o JupyterLab
- Dependencias:
pip install -r requirements.txt
Desde la carpeta del proyecto, ejecuta:
docker compose up -dEsto iniciará:
- PostgreSQL 15 en
localhost:5432- BD:
escuela_db - Usuario:
user - Contraseña:
password_postgres
- BD:
- MongoDB 7 en
localhost:27017
Verifica que estén corriendo:
docker compose pspip install -r requirements.txt --quietAbre Jupyter:
jupyter notebook taller4_bd2.ipynbO si usas JupyterLab:
jupyter lab taller4_bd2.ipynbEl notebook tiene 4 fases principales:
| Fase | Descripción | Celdas |
|---|---|---|
| Fase 1 | Limpieza y exportación a JSON | 1-7 |
| Fase 2 | Generación de Diagrama ER | 8 |
| Fase 3 | Migración a PostgreSQL | 9-14 |
| Fase 4 | Migración a MongoDB | 15-16 |
Nota: Las celdas de la Fase 3 requieren que PostgreSQL esté corriendo.
TALLE4BD2/
├── taller4_bd2.ipynb # Notebook principal
├── Base_Datos_Escuela_No_Normalizada_Actualizada (1).xlsx # Datos de entrada
├── requirements.txt # Dependencias Python
├── docker-compose.yml # Configuración Docker
├── script_bd.sql # DDL, vistas, funciones, triggers
├── der_escuela.png # Diagrama ER (generado)
├── datos_limpios.json # Datos normalizados (generado)
└── README.md # Este archivo
El notebook usa estas credenciales:
PostgreSQL:
dbname="escuela_db"
user="user"
password="password_postgres"
host="localhost"
port=5432MongoDB:
mongodb://localhost:27017/
Después de ejecutar todas las celdas, deberías ver:
- ✅ Fase 1: 35 estudiantes, 7 docentes, 10 materias limpias y normalizadas
- ✅ Fase 2: Diagrama ER guardado como
der_escuela.png - ✅ Fase 3: Datos en PostgreSQL con vistas, funciones y triggers funcionando
- ✅ Fase 4: Datos en MongoDB con desnormalización estratégica
❌ Error de conexión: could not connect to server
Solución: Verifica que Docker está corriendo: docker compose ps
❌ Error de conexión a MongoDB: [Errno 111] Connection refused
Solución: Espera 10 segundos después de iniciar Docker, MongoDB tarda en iniciarse.
Solución: Asegúrate de ejecutar las celdas de la Fase 1 antes de la Fase 3.
Solución: El notebook ya está corregido con client_encoding='UTF8'.
El notebook generará:
- Tablas normalizadas en formato DataFrames
- der_escuela.png - Diagrama Entidad-Relación en alta resolución
- datos_limpios.json - Datos en formato JSON
- PostgreSQL - Base de datos relacional con:
- 6 tablas principales
- 2 vistas
- 2 funciones
- 2 triggers
- MongoDB - Base de datos NoSQL con:
- 3 colecciones desnormalizadas
- Datos embebidos estratégicamente
- Los datos se limpian automáticamente (duplicados, valores inconsistentes, etc.)
- El modelo está completamente normalizado a 3FN
- MongoDB incluye desnormalización estratégica para optimizar consultas frecuentes
- La tabla
auditoria_nivelregistra cambios de nivel en PostgreSQL
¿Problemas? Revisa que Docker esté activo y que todos los archivos estén en la carpeta correcta.