- Esquema de base de datos
A. Cuáles serían los tipos de datos de cada campo de cada tabla?
Dejo los tipos de datos definidos en el DER
B. Realizarías algún cambio en el modelo? (justificar cualquiera sea la respuesta)
Normalicé las tablas docentes y asignaturas, en la tabla cursos generé una clave compuesta con los ids id_docente y id_asignatura para así no poder ingresar un docente con las misma asignatura en el mismo curso, luego llevo esa llave compuesta a la tabla inscripciones dejando como clave primaria los campos id_docente, id_asignatura, id_alumno y fechaInscripcion
C. Sugerirías realizar algo en la BD para mejorar la performance de las consultas sobre las tablas?
Sugeriría agregar índices a los campos con claves foraneas y primary keys
2. Proveer consultas para determinar:
A. Cursos a los que está inscripto y cursando un alumno dado en el ciclo lectivo actual.
select concat(a.nombre, ' ', a.apellido) as Alumno, asig.descripcion as Asignatura, d.nombre as Docente, 'Inscripto' as Estado from inscripciones i inner join asignaturas asig on i.id_asignatura = asig.id inner join alumnos a on i.id_alumno = a.id inner join docentes d on i.id_docente = d.id where i.estado = 1 and a.id = 1
B. Alumnos inscriptos a una asignatura dada.
select concat(a.nombre, ' ', a.apellido) as Alumno, asig.descripcion as Asignatura, d.nombre as Docente, 'Inscripto' as Estado from inscripciones i inner join asignaturas asig on i.id_asignatura = asig.id inner join alumnos a on i.id_alumno = a.id inner join docentes d on i.id_docente = d.id where i.estado = 1 and asig.id = 1
C. Cursos a los que el alumno puede inscribirse en el ciclo lectivo actual.
Ir al archivo PCR_CURSOS_PERMITIDOS_CURSAR_ALUMNO.sql en el codigo fuente
D. Alumnos que recursen una materia
Ir al archivo PCR_ALUMNOS_RECURSANTES.sql en el codigo fuente
3. Desarrollar una aplicación que:
A. Registre y edite alumnos
El código fuente se encuentra en este repositorio y la aplicacion se puede probar desde el siguiente enlace:
http://jpcastro087.ddns.net:8080/Inscripciones-0.0.1-SNAPSHOT/altaAlumno
Screenshot:
B. Provea los siguientes reportes:
i. Estado académico de un alumno dado (estado de materias cursadas,
materias no regularizadas y materias por cursar)
ii. Para una asignatura dada, los alumnos inscriptos y el docente
correspondiente.
No se pudo implementar por falta de tiempo
C. Permita a un alumno inscribirse a una materia.
Están implementadas las llamadas rest
http://localhost:8080/Inscripciones/user/{username}/{password}
y
http://localhost:8080/Inscripciones/curso/permitidoscursaralumno/{id}
la idea era ensamblar las llamadas para que el alumno pueda inscribirse via mobile ios/android nativo en una aplicación de prueba desarrollada con react-native en la página https://snack.expo.io, la implementacion de las llamadas se pueden ver en el paquete controllers.