Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Plataforma de Cursos Online — SQL y Modelado Dimensional

Proyecto de portfolio centrado en modelado dimensional, transformación de datos y análisis con SQL sobre una plataforma ficticia de cursos online.

El objetivo es demostrar de forma práctica el diseño de un modelo analítico en estrella, un flujo de carga desde una tabla de staging y el uso de SQL para obtener métricas y análisis sobre un escenario de negocio.

Qué demuestra el proyecto

  • Modelado dimensional con tabla de hechos y dimensiones
  • Carga y transformación desde una capa RAW / staging
  • Claves primarias y foráneas
  • Reglas de negocio y segmentaciones
  • Funciones y vistas SQL
  • Agregaciones y JOINs
  • CTEs y funciones ventana
  • Consultas de validación
  • Análisis exploratorio con SQL

Datos

El proyecto utiliza 24 registros sintéticos creados específicamente para fines educativos y de demostración.

No se ha importado ningún dataset de Kaggle, Udemy ni otra fuente externa, por lo que las métricas incluidas no representan datos reales de ninguna plataforma.

Modelo de datos

El modelo utiliza una tabla de hechos central, fact_courses, conectada con las siguientes dimensiones:

  • dim_course
  • dim_subject
  • dim_level
  • dim_price_segment
  • dim_date

El grano de fact_courses es un registro por curso cargado en el dataset de ejemplo.

La dimensión temporal representa la fecha de publicación del curso. Por este motivo, los análisis temporales agrupan las métricas por año de publicación y no representan una serie histórica de la demanda.

Estructura

01_schema.sql

Crea la base de datos y el modelo dimensional:

  • dimensiones
  • tabla de hechos
  • claves y relaciones
  • función get_price_segment()
  • vista vw_courses_summary

El script elimina y recrea la base de datos course_platform_dw. Debe ejecutarse únicamente en un entorno destinado a esta práctica.

La vista utiliza dim_price_segment como fuente de verdad para el segmento de precio. La función get_price_segment() se conserva como ejemplo de lógica reutilizable y se utiliza de forma demostrativa en el EDA.

02_data.sql

Construye la capa de staging y realiza la carga de los datos sintéticos:

  1. recreación y carga de la tabla RAW
  2. limpieza del modelo dimensional
  3. transformación de atributos
  4. carga de dimensiones
  5. carga de la tabla de hechos
  6. ajustes de datos
  7. confirmación de la transacción

La tabla RAW se recrea antes de iniciar la transacción porque las operaciones DDL utilizadas para crearla producen commits implícitos en MySQL.

La transacción cubre la limpieza mediante DELETE, la carga de dimensiones y hechos y los ajustes posteriores hasta COMMIT.

No se implementa un mecanismo automático de ROLLBACK mediante handlers. Si las sentencias se ejecutan manualmente y se detecta un error antes del COMMIT, el rollback debe ejecutarse explícitamente.

auxiliares.sql

Incluye consultas sencillas para comprobar:

  • número de registros RAW
  • número de registros de la tabla de hechos
  • carga de las dimensiones
  • contenido de la vista
  • presencia de claves dimensionales obligatorias en fact_courses

03_eda.sql

Contiene el análisis exploratorio realizado directamente en SQL:

  • KPIs generales
  • distribución del catálogo
  • demanda por categoría
  • engagement y valoraciones
  • análisis según año de publicación
  • segmentación de precios
  • rankings mediante funciones ventana
  • análisis mediante CTEs
  • estimaciones económicas hipotéticas

Requisitos

  • MySQL 8.0 o superior
  • Cliente compatible con DELIMITER para la creación de la función SQL

El proyecto utiliza sintaxis específica de MySQL y no está diseñado para ejecutarse sin cambios en PostgreSQL, SQL Server o SQLite.

Orden de ejecución

  1. 01_schema.sql
  2. 02_data.sql
  3. auxiliares.sql — validación opcional
  4. 03_eda.sql

Notas sobre el análisis

Las métricas económicas son estimaciones hipotéticas construidas sobre datos sintéticos y supuestos simplificados. No representan ingresos reales.

Los análisis relacionados con suscriptores y fechas agrupan las métricas existentes según el año de publicación del curso. No constituyen una serie histórica de la evolución de la demanda.

La CTE utilizada en el EDA selecciona categorías con menos de cinco cursos y las ordena por suscriptores acumulados. No aplica ningún criterio adicional de “alta demanda” ni pretende demostrar por sí sola una oportunidad de negocio.

El objetivo del repositorio es demostrar competencias de SQL, modelado dimensional y razonamiento analítico, no reproducir el comportamiento real de una plataforma comercial.

Licencia

Este proyecto se distribuye bajo la licencia MIT. Consulta LICENSE para más información.

About

SQL and dimensional modeling project with a star schema, staging workflow and analytical queries on synthetic data.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors