Skip to content

Repository files navigation

Taller 4 - Bases de Datos II

Migración y Normalización de Datos

Institución: Politécnico Colombiano Jaime Isaza Cadavid
Asignatura: Bases de Datos II
Profesor: Manolo Pajaro Borras


📋 Requisitos previos

  • 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

🚀 Pasos para ejecutar el proyecto

1️⃣ Iniciar los contenedores Docker

Desde la carpeta del proyecto, ejecuta:

docker compose up -d

Esto iniciará:

  • PostgreSQL 15 en localhost:5432
    • BD: escuela_db
    • Usuario: user
    • Contraseña: password_postgres
  • MongoDB 7 en localhost:27017

Verifica que estén corriendo:

docker compose ps

2️⃣ Instalar dependencias de Python

pip install -r requirements.txt --quiet

3️⃣ Ejecutar el Notebook

Abre Jupyter:

jupyter notebook taller4_bd2.ipynb

O si usas JupyterLab:

jupyter lab taller4_bd2.ipynb

4️⃣ Ejecutar las celdas en orden

El 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.


📁 Estructura de archivos

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

🔧 Configuración de conexión

El notebook usa estas credenciales:

PostgreSQL:

dbname="escuela_db"
user="user"
password="password_postgres"
host="localhost"
port=5432

MongoDB:

mongodb://localhost:27017/

✅ Verificación

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

🛑 Solución de problemas

Error de conexión a PostgreSQL

❌ 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

❌ Error de conexión a MongoDB: [Errno 111] Connection refused

Solución: Espera 10 segundos después de iniciar Docker, MongoDB tarda en iniciarse.

Error: FileNotFoundError: datos_limpios.json

Solución: Asegúrate de ejecutar las celdas de la Fase 1 antes de la Fase 3.

Error: UnicodeDecodeError

Solución: El notebook ya está corregido con client_encoding='UTF8'.

📊 Salida esperada

El notebook generará:

  1. Tablas normalizadas en formato DataFrames
  2. der_escuela.png - Diagrama Entidad-Relación en alta resolución
  3. datos_limpios.json - Datos en formato JSON
  4. PostgreSQL - Base de datos relacional con:
    • 6 tablas principales
    • 2 vistas
    • 2 funciones
    • 2 triggers
  5. MongoDB - Base de datos NoSQL con:
    • 3 colecciones desnormalizadas
    • Datos embebidos estratégicamente

📝 Notas importantes

  • 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_nivel registra cambios de nivel en PostgreSQL

¿Problemas? Revisa que Docker esté activo y que todos los archivos estén en la carpeta correcta.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages