Análisis de Resultados




Resultado de imagen para tec logo

Proyecto I 


Bases de datos 

I Semestre 2018 

Wilson Lopez , Oscar Cortez 

Prefesor : Franco Quiros



Análisis de Resultados

Tiempo invertido: 60.43 Horas o 3626 minutos.
El tiempo invertido es un aproximado del tiempo de trabajo , se considera tiempo de trabajo individual y se incluye tiempo de investigación.

Solución al problema: En el siguiente análisis se realizara una leve explicación de cada una de las tablas presentes en nuestro proyecto , así como su funcionalidad y los datos que contienen. También se explicara la funcionalidad de cada uno de los procedimientos almacenados que se realizaron para darle solución al problema.

Tablas:
-Estudiante: Contiene el nombre , apellido , correo y carne de todos los estudiantes que están registrados en la base de datos.

-EstadoEstudiante: Es una tabla catalogo y contiene varios estados en los que puede estar un estudiante , estos son (Aprobado, Reprobado,Retirado,Abandonado)

-Profesor: Contiene los datos de un profesor , como nombre , email y contraseña


-EstadoGrupo: Es una tabla catalogo y representa los posibles estados que puede tener un grupo , entre dichos estados tenemos : (Activo , Inactivo , cancelado, Congelado)
-Rubros: Rubros también es una tabla catalogo y esta contiene todos los tipos de evaluaciones que se pueden realizar normalmente en un curso , por ejemplo exámenes, quices, tares , etc.
-Periodo: En esta tabla se almacenan todos los periodos lectivos registrados , los datos relevantes de esta tabla son la fecha iniciar y la fecha final del semestre así mismo tiene asociado un estado que nos dice si el periodo esta activo o no.
-Grupo: En un periodo hay grupos o cursos que se imparten durante dicho periodo , esos se representan en la presente tabla , por eso la tabla periodo tiene un FK_Periodo , asi mismo el grupo debe ser impartido por algún profesor , así que existe un FK_Profesor , por ultimo tenemos el nombre del grupo y el código que lo representa.
-GruposxEstudiante: En este punto ya existen estudiantes y grupos pero ante la pregunta ¿A que grupo pertenece cada estudiante ? nace esta tabla que asocia al estudiante con un grupo , ademas nos dice el estado de ese estudiante , pues queremos saber si aprobó o reprobó , para eso usamos la tabla que definimos anteriormente y la referencia con un FK_EstadoEstudiante , ademas tenemos el FK_Estudiante y el FK_Grupo y una nota acumulada que nos permite saber cual fue la nota del estudiante en ese grupo.
-GrupoXRubro: En cada grupo se deben hacer evaluaciones , y esta tabla tenemos almacenado el resultado de todas las evaluaciones que se han realizado ,tenemos esta tabla que nos permite determinar que rubros se van a evaluar en un grupo, los rubros pueden ser fijos o variantes por ejemplo la cantidad de quicez puede variar pero exámenes sabemos que son tres , por eso tenemos una tupla para saber si la cantidad es fija  , también el valor que tiene cada rubro y la cantidad que se realizan así como la nota obtenida.
-Evaluación: En la tabla que se definió  anteriormente tenemos las evaluaciones que se van a realizar a cada grupo y las asociamos mediante FK_Grupos , sin embargo para saber que evaluaciones existen tenemos esta tabla que nos da detalladamente cada evaluación con datos como fecha , el valor porcentual y la descripción de cada evaluación.

-EvaluacionxEstudiante: Tenemos evaluaciones y las evaluaciones que se le realizaron a cada grupo , pero cuanto obtuvo de nota cada estudiante es lo que se encarga de almacenar esta tabla , que tiene el dato de Estudiante por grupo , el detalle de cual evaluación se efectúa y la nota obtenida , se utiliza para calcular la nota final.

Procedimientos almacenados: Se crearon varios procedimientos almacenados , a continuación voy a detallar algunos de los mas importantes , no voy a considerar los que pertenecen al CRUD pues su función esta clara por su definición así como procedimientos que hagan lo mismo con diferentes tablas , solo serán considerados una vez para la definición para mas referencias buscar en el blog.

calculo de promedio: Este store procedure se encarga de leer todas las evaluaciones que ha hecho un estudiante en determinado grupo y calcula la nota final , funciona en la simulacion y en asociacion con updategrupoxEstudiante
-EvaluacionesDelGrupo:Se encarga de obtener las evaluaciones de un grupo determinado y retornarlas a la pagina.
-obtenerCursosEstudiante: Se encarga de obtener los cursos de un estudiante determinado y retornarlas a la pagina.
-obtenerCursosProfesor:Se encarga de obtener los cursos de un profesor determinado y retornarlas a la pagina.
-readXML: Existen varios procesos de lectura de xml , uno para cada tabla , este se encarga de leer de manera iterativa los datos seleccionados a partir de los simulados XML , por lo general están asociados con la iteracion y se realizan uno después de anterior , empezando por Periodos y terminando con evaluacionesxestudiante
-updategrupoxEstudiante: Es parte del CRUD de la tabla grupo por estudiante sin embargo cuenta con unas pequeñas modificaciones para el proceso masivo.
VaciarTablas:Elimina todos los datos de las tablas y pone los ids de todas en  0.
-ValidarUsuario_Profesor:Se encarga de verificar los datos de un profesor y dar acceso a la pagina
-ValidarUsuario_Estudiante: Se encarga de verificar los datos de un estudiante y dar acceso a la pagina

Problemas encontrados: 
 Inicialmente tuvimos problemas con la lectura de los xml ya que los compañeros no utilizan identitys y desde un inicio nosotros consideramos el uso de los mismos , sin embargo en cierto nos dimos cuenta que las fk se corrompían.
Solución : dejar de usar identitys y usar el ID de los datos simulados.
Problemas con Visual studio a la hora de iniciar un nuevo proyecto , debido a que era una versión muy vieja.
Solución: Reinstalar el programa.
Observaciones:
En el diagrama la representación del teléfono se debe realizar de una manera distinta pues con la representación que se utiliza en la presente tarea , cada estudiante no podría tener mas de un teléfono.

La representación de un usuario y su contraseña adentro de la misma base de datos principal junto con todos los datos representan un serio problema de seguridad , en la vida real esto se suele poner en una base de datos aparte de la original.

El estado del Periodo se debería manejar como una tabla aparte y diferenciarlo con un FK_EstadoPeriodo , sin embargo por simplicidad se hace de esta manera.

Extras:
-No eliminación de datos: En las bases de datos lo correcto es no eliminar la información realmente si no esconderla , pues la premisa es que los datos son valiosos , por ese motivo en todas las tablas se agrego una tupla de visibilidad  que indica si los datos son o no visibles.

-Control de movimientos: Constantemente en la base de datos hay movimientos , que puede afectar las tablas así que para eso se implementa un plan de seguridad que permite recuperar un estado de los datos antes de haber sido editados , esa es la tabla de evento de mantenimiento que registra cuando una tabla es editada , su esta previo su esta después y la fecha de cuando fue afectada.



Diagrama:




Comentarios