Controlar correlativas de materias

Espero que me puedas dar una gran ayuda con unas consultas donde estoy estancado hace varios días
Estoy perdido en como armar las tablas para que un alumno pueda autogestionar sus inscripciones y como consultar por sus respectivas materias
Lo que necesito es que el usuario seleccione un año en que se va anotar y el sistema muestre:
* Materias de ese año que pueden anotarse por que no poseen correlativas
* Materias que posen correlativas pero el alumno ya aprobo sus correspondientes correlativas
* Materias de años anteriores que no aprobó y debe recursar.
Te muestro las tablas que pensé
(Voy a quitar algunos campos como carrera, legajo y demás para hacerlo más legible a lo que busco)
Materias: ( id_materia, nombre, curso)
Correlativas: (id_correlativa, id_materia,correlativa01...(hasta 4))
Notas: (id_nota, id_materia, Estado - estado no existe, tengo 4 notas + la nota final y despues validaria si esta aprobada o no, pero vamos suponer que si es = a 3 aprobo si = a 2 la tiene firmada en la libreta pero la tiene que rendir y si es = 1 debera recursarla)
Inscripciones (id_inscripcion, id_legajo, id_materaia) - tabla donde voy a guaradar las inscripciones -
Bueno soy bastante nuevo con las base de datos, no se si estarán bien planteadas las tablas (eso es una de las cosas que necesito ayuda; que alguien me diga estas tablas están mal por POR razón o si más o menos pueden servir).
Y la otra cosa es la consulta que pueda recuperarme las materias en que puede anotarse el alumno, o sea que controle que la materia no sea mostrada si alguna correlativa impide su inscripción o si ya fue cursada y aprobada.
Bueno espero que se haya entendido y puedas orientarme, la verdad que yo me pierdo mucho con los Inner Join o subconsultas así que no logro descifrar como tengo que hacer esa consulta.

1 Respuesta

Respuesta
1
Recién puedo leer tu mensaje, dime, ya solucionaste el tema.
Gracias por responder Brownsea, aun no resolví mi problema.
Plantie del siguiente modo las tablas (no se si sera lo correcto)
Materias (id_materia , Nombre_materia, curso, id_correlativa)
Correlativas (id_correlativa, Id_materia, Correlativa)
Notas (Id_nota, nota1,nota2,nota3,nota4,notafinal,id_materia, Id_legajo)
InscripcioMateria (id_isncripcion, id_materia, id_legajo)
* El id_legajo es el identificador del alumno (de mi tabla de alumnos) y tengo 4 notas por que son 3 parciales y un recuperatorio si tiene 3 notas mayor a 4 aprobo el cursado y puede rendir el final.
Ahora lo que no se como hacer es la consulta: que traiga de la tabla Materias todas las materias de POR año, de ahí que se fije cuales no tiene que mostrar por que están aprobadas, cuales tienen correlativas, y si la tiene que se fijen si la correlativa fue aprobada y tambiéntraiga las materias que no tienen correlativas y que no fueron cursadas aun.
Bueno espero que me puedas orientar, te dejo un saludo y gracias por responder.
Por las dudas:Me refiero a Materia correlativa cuando una materia necesita tener aprobada antes otra materia.
Nuevamente Gracias y espero que me puedas ayudar
No entiendo bien tu lógica ya que en mi país no usamos los mismos términos, pero lo que si es único es el transact SQL así que por lo que puedo ver entre MAterias y Correlativas tendrías que usar una tabla asociativa de la siguiente manera:
- Materias(id_materia, nombre_materia, curso)
- Correlativas(id_correlativa, correlativa)
-Materia_Correlativa(id_materia, id_correlativa, <alguna dato mas comun a la union de ambas>)
Con respecto a las notas no es correcto manejarlo de esa manera, te recomiendo que uses una tabla llamada tipo:
- Tipo_Nota(id_tipo, desc_tipo)  <1, parcial, 2 - practica - 3, final>...etc
De esta manera puedes manejar las notas por alumno de manera vertical y no horizontal
- Notas(id_nota, id_materia, id_correlativa, id_legajo, nota)
Con esto que te planteo puedes reorganizar tus tablas y ver si puedes responder las dudas que tienes, en caso que no, puedes enviar de nuevo una consulta que te contestare a la brevedad.
Hola Brownsea te pido disculpas estos días no pude conectarme y responderte.
Voy a tratar de ejemplificarte que son en mi país las materias correlativas.
En el segundo año (grado) de la Carrera Análisis de Sistemas un alumno para inscribirse/cursar "Sistemas de datos" deberá tener antes cursada y aprobada la materia del primer año "Estructura de datos". En el tercer año para inscribirse/cursar "Análisis de Sistemas" antes deberá tener aprobada las materias "Sistemas informáticos" y "Sistemas de computación", o sea en este caso "Sistemas de Datos" tiene 1 materia correlativa "Estructura de datos" y "Análisis de Sistemas" pose 2 correlativas "Sistemas informáticos" y "Sistemas de computación".
*No todas las materias tiene que tener una correlativa, hay materias como "Etica profesional" que no tiene correlativa y no van a cargarse en la tabla "correlativas"
Mi tabla de "Correlativas" la plante así
----------------------------------------------------------------------------------------------------------------
   Id_correlativa                      id_materia                                    Correlativa
01 23 (Sistemas de datos) 12 (Estructura de datos)
02 40 (Análisis de Sistemas) 34 (Sistemas informáticos)
03 40 (Análisis de Sistemas) 15 (Sistemas de computación)
... ... ...
----------------------------------------------------------------------------------------------------------------
¿Mi planteo de la tabla correlativas esta mal?
Otra; ¿Podrías explicarme lo de manejar las notas por alumno de manera vertical y no horizontal? (No me quedo muy claro como es eso)
Por Ultimo y lo que más te agradecería que me puedas responder.
Como realizo una consulta (SELECT Nombre_materia...) que me cumpla las siguientes condiciones:
* Materias de ese año que pueden anotarse por que no poseen correlativas (por Ejemplo Etica Profesional)
* Materias que posen correlativas pero el alumno ya aprobo sus correspondientes correlativas
* Materias de años anteriores que no aprobó y debe recursar.
Yo voy a tener una pantalla en Visual Basic lo que quiero es que el alumno al apretar "Inscripciones materias" solo vea las materias que le corresponden, el único dato que le pediría es que seleccione el curso al que dese inscribirse, con eso estoy demasiado perdido, como cargo el recordset solo con las materias que le corresponden, imagino que hay que usar inner join, pero no la puedo hacer funcionar. (no manejo muy bien los inner join o left/right join o subconsultas)
Espero que me puedas ayudar, desde ya muchas gracias y disculpame por la demora.
Saludos!
Lamento recién poder contestarte, he tenido demasiado trabajo y recién puedo respirar, cuéntame, ¿sigues con el problema?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas