Proyecto Final
La institución educativa Benilda Valencia, ubicada en la vereda Miraflores en el municipio de Donmatías, ha adoptado el Método Doman durante los últimos 4 años, experimentando mejoras notables en el aprendizaje de sus estudiantes. Sin embargo, el método requiere un considerable esfuerzo por parte de los docentes para presentar la gran cantidad de palabras, letras y frases necesarias, lo que limita su implementación en otras instituciones.
Para abordar esta limitación y aprovechar los beneficios del Método Doman en un contexto más amplio, se propone desarrollar un software educativo que sistematice la presentación de palabras, letras y frases de manera sistemática y repetitiva. El objetivo principal es enseñar a los niños a reconocer y comprender el lenguaje escrito desde edades tempranas, siguiendo los principios del Método Doman.
Base de datos "Doman"
- Perfil (idPerfil, Nombre).
- Usuario(idUsuario, usuario, contraseña).
- Prueba(componente, estudiante, respuestaEstudiante).
- Componente(idComponente, Tema, Imagen, Palabra, Sonido, Respuesta).
- Estudiante(idEstudiante, Nombre1, Nombre2, Apellido1, Apellido2, Teléfono).
- Docente( idDocente, Nombre1, Nombre2, Apellido1, Apellido2, Teléfono).
- Acudiente(id, Nombre1, Nombre2, Apellido1, Apellido2, Teléfono).
- Tema(idtema, tipo, descripcion),
- Calificación(Reacción, Fecha, idPrueba).
- Aula(IdAula, idDocente, FechaInicio, FechaFinal).
Modelo entidad relación y Diagrama relacional:


Listado de tablas que llevará la BD. (Cuales son referenciales y cuales son de movimiento):
Referenciales:
- Prueba
- Componente
- Estudiante
- Docente
- Acudiente
- Usuario
De movimiento:
- estudianteDocente
- EstudianteAcudiente
- Calificación
- Tema
- Aula
Diccionario de datos
Base de datos
https://drive.google.com/file/d/1uEItwh0A-y-euhPqSyiOUHXc3fzlxeOk/view?usp=drive_link
Ejercicios
Obtener la duración de la relación entre estudiantes y docentes
Consulta SQL para calcular la duración (en días) de la relación entre cada estudiante y su docente:
SELECT E.idEstudiante, D.idDocente, DATEDIFF(ED.FechaFinal, ED.FechaInicio) AS DuracionDias FROM Estudiante E JOIN EstudianteDocente ED ON E.idEstudiante = ED.idEstudiante JOIN Docente D ON ED.idDocente = D.idDocente;
Obtener las aulas activas en un período específico
Consulta SQL para listar las aulas que estuvieron activas en el periodo 2023-01-01 hasta el 2023-12-31:
SELECT A.idAula, A.idDocente, A.FechaInicio,A.FechaFinal
FROM Aula A WHERE (A.FechaInicio <= '2023-12-31' AND A.FechaFinal >= '2023-01-01');
Trigger para actualizar la fecha final en EstudianteDocente al borrar un estudiante
DELIMITER //
CREATE TRIGGER before_delete_estudiante
BEFORE DELETE ON Estudiante
FOR EACH ROW
BEGIN
UPDATE EstudianteDocente
SET FechaFinal = CURDATE()
WHERE idEstudiante = OLD.idEstudiante AND FechaFinal IS NULL;
END;
//
DELIMITER ;
Trigger para calcular la calificación promedio de un estudiante después de insertar una nueva calificación
DELIMITER //
CREATE TRIGGER after_insert_calificacion
AFTER INSERT ON Calificacion
FOR EACH ROW
BEGIN
DECLARE promedio DECIMAL(5,2);
SELECT AVG(Calificacion)
INTO promedio
FROM Calificacion
WHERE idEstudiante = NEW.idEstudiante;
UPDATE Estudiante
SET promedio = promedio
WHERE idEstudiante = NEW.idEstudiante;
END;
//
DELIMITER ;
Utilizar ENUM para definir el tipo de usuario
ALTER TABLE Usuario
ADD COLUMN tipo_usuario ENUM('admin', 'docente', 'estudiante', 'acudiente') NOT NULL DEFAULT 'estudiante';
Consulta para contar el número de usuarios por tipo
SELECT tipo_usuario, COUNT(*) AS cantidad FROM Usuario
GROUP BY tipo_usuario;
Utilizar SET para definir los intereses de un estudiante
Primero, añadir una columna intereses en la tabla Estudiante que use el tipo de dato SET
ALTER TABLE Estudiante
ADD COLUMN intereses SET('Deportes', 'Música', 'Arte', 'Ciencia', 'Tecnología');
Consulta para buscar estudiantes con intereses específicos
SELECT
idEstudiante, nombre1, nombre2, apellido1, apellido2, intereses FROM Estudiante WHERE
intereses LIKE '%Deportes%' ORintereses LIKE '%Ciencia%';
Utilizar BLOB para almacenar imágenes en la tabla Componente
Primero, añadiremos una columna imagen_blob en la tabla Componente que use el tipo de dato BLOB
ALTER TABLE Componente
ADD COLUMN imagen_blob BLOB;
Insertar una imagen en la tablaUPDATE Componente
SET imagen_blob = LOAD_FILE('C:prueba.jpg.jpg')
WHERE id = 1;
Crear la nueva tabla EstudianteCalificacion apartir de las tablas docente y calificacion
CREATE TABLE EstudianteCalificacion AS
SELECT
E.idEstudiante,
E.nombre1,
E.nombre2,
E.apellido1,
E.apellido2,
C.id_prueba,
C.Calificacion,
C.Fecha FROM Estudiante E
JOIN
Calificacion C ON E.idEstudiante = C.idEstudiante;