1.
Nombre del Proyecto
Proyecto: CodePuno: Sistema de educación informática con tutorías personalizadas
2. Estructura de las Tablas
usuarios:
DROP TABLE IF EXISTS `usuarios`;
CREATE TABLE IF NOT EXISTS `usuarios` (
`usua_ide` int NOT NULL AUTO_INCREMENT,
`usua_perf_ide` int DEFAULT NULL,
`usua_dni` varchar(8) DEFAULT NULL,
`usua_nombres` varchar(100) DEFAULT NULL,
`usua_paterno` varchar(100) DEFAULT NULL,
`usua_materno` varchar(100) DEFAULT NULL,
`usua_celular` varchar(20) DEFAULT NULL,
`usua_email` varchar(255) DEFAULT NULL,
`usua_user` varchar(100) DEFAULT NULL,
`usua_pass` varchar(255) DEFAULT NULL,
`usua_foto` varchar(255) DEFAULT NULL,
`usua_ultimo_acceso` datetime DEFAULT NULL,
`usua_esta_ide` int DEFAULT NULL,
`usua_create_at` datetime DEFAULT NULL,
`usua_update_at` datetime DEFAULT NULL,
`usua_deleted_at` datetime DEFAULT NULL,
PRIMARY KEY (`usua_ide`),
UNIQUE KEY `uk_usuarios_dni` (`usua_dni`),
UNIQUE KEY `uk_usuarios_email` (`usua_email`),
UNIQUE KEY `uk_usuarios_user` (`usua_user`),
KEY `fk_usuarios_perfiles1_idx` (`usua_perf_ide`),
KEY `fk_usuarios_estados1_idx` (`usua_esta_ide`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb3;
cursos:
DROP TABLE IF EXISTS `cursos`;
CREATE TABLE IF NOT EXISTS `cursos` (
`curs_ide` int NOT NULL AUTO_INCREMENT,
`curs_cate_ide` int DEFAULT NULL,
`curs_prof_ide` int DEFAULT NULL,
`curs_nombre` varchar(255) NOT NULL,
`curs_descripcion` text,
`curs_imagen` varchar(255) DEFAULT NULL,
`curs_nivel` enum('BASICO','INTERMEDIO','AVANZADO') DEFAULT 'BASICO',
`curs_esta_ide` int DEFAULT '1',
`curs_create_at` datetime DEFAULT NULL,
`curs_update_at` datetime DEFAULT NULL,
`curs_eliminado_por` int DEFAULT NULL,
`curs_motivo_baja` varchar(255) DEFAULT NULL,
PRIMARY KEY (`curs_ide`),
KEY `fk_cursos_categorias_idx` (`curs_cate_ide`),
KEY `fk_cursos_profesores_idx` (`curs_prof_ide`),
KEY `fk_cursos_estados_idx` (`curs_esta_ide`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb3;
lecciones:
DROP TABLE IF EXISTS `lecciones`;
CREATE TABLE IF NOT EXISTS `lecciones` (
`lecc_ide` int NOT NULL AUTO_INCREMENT,
`lecc_curs_ide` int NOT NULL,
`lecc_secc_ide` int DEFAULT NULL,
`lecc_titulo` varchar(255) NOT NULL,
`lecc_descripcion` text,
`lecc_tipo` enum('VIDEO','TEXTO','ARCHIVO','QUIZ') DEFAULT 'VIDEO',
`lecc_url` varchar(500) DEFAULT NULL,
`lecc_contenido` longtext,
`lecc_archivo_url` varchar(500) DEFAULT NULL,
`lecc_es_preview` tinyint DEFAULT '0',
`lecc_orden` int DEFAULT '0',
`lecc_duracion` int DEFAULT NULL,
`lecc_esta_ide` int DEFAULT '1',
`lecc_create_at` datetime DEFAULT NULL,
PRIMARY KEY (`lecc_ide`),
KEY `fk_lecciones_cursos_idx` (`lecc_curs_ide`),
KEY `fk_lecciones_secciones_idx` (`lecc_secc_ide`),
KEY `fk_lecciones_estados_idx` (`lecc_esta_ide`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb3;
3. Capturas de Pantalla
4. Desarrollo de Consultas SQL e Interpretación
N.° Consulta SQL Tipo de Información Utilidad para el
Consulta Obtenida Sistema
1 SELECT * FROM Operativa Lista de cursos Identificar el
cursos WHERE clasificados como catálogo de inicio
curs_nivel = nivel básico. para nuevos
'BASICO'; usuarios.
2 SELECT * FROM Operativa Categorías que Filtrar solo las
categorias WHERE están actualmente categorías
cate_esta_ide = 1; activas. visibles en el sitio
web.
3 SELECT * FROM Táctica Lecciones Gestionar el
lecciones ORDER ordenadas de la tiempo total de
BY lecc_duracion más larga a la más consumo de
DESC; corta. contenido.
4 SELECT curs_nivel, Estratégica Cantidad de cursos Balancear la
COUNT(*) FROM por cada nivel de oferta académica
cursos GROUP BY dificultad. según la
curs_nivel; demanda.
5 SELECT Táctica Relación entre Mostrar el reporte
c.curs_nombre, nombre de curso y completo de
cat.cate_nombre su categoría. cursos
FROM cursos c categorizados.
JOIN categorias cat
ON c.curs_cate_ide
= cat.cate_ide;
6 SELECT Operativa Lista de lecciones y Validar la
l.lecc_titulo, su curso integridad del
c.curs_nombre pertenenciente. contenido
FROM lecciones l educativo.
JOIN cursos c ON
l.lecc_curs_ide =
c.curs_ide;
5. Reflexión Final
1. ¿Cuál de las consultas desarrolladas considera más importante para su Sistema de
Información?
La consulta 4, ya que permite obtener estadísticas clave sobre la composición del catálogo.
2. ¿Qué información obtenida podría apoyar la toma de decisiones dentro de la
organización?
La cantidad de cursos por nivel permite decidir si se debe invertir más presupuesto en crear
contenido avanzado o básico según la tendencia de los alumnos.
3. ¿Qué mejoras implementaría en la base de datos para obtener información más útil
en el futuro?
Añadiría una tabla de 'progreso_alumnos' para analizar cuánto tiempo real pasan los
estudiantes en cada lección.