Buenas, por si alguien lee este hilo: para tener almacenadas las notas de los años escolares necesitamos almacenar junto a la nota el año escolar al que pertenece dicha nota. Por ejemplo supongamos que 20962097 significara año escolar dos mil noventa y seis - dos mil noventa y siete. Parece que lo más razonable sería almacenarlo en la tabla Nota, que tendría como campos:
Nota: CodigoNota FK - CodigoMateria PK - CedulaAlumno FK - Nota - Trimestre - AñoEscolar
De esta forma se podrían consultar las notas de cierto alumno para cierto año escolar (y trimestre si se quiere).
En lo referente al cambio de alumno de curso, dado que CodigoNivel está asociado a un curso y en la tabla Alumno CodigoNivel está presente, basta con cambiar el CodigoNivel en la tabla Alumno para cambiar el alumno de curso.
Desde mi punto de vista faltarían claves para tablas como docente o alumno. Cada docente creo que sería conveniente que llevara un IdDocente y cada alumno un IdAlumno. Podría pensarse en usar la cédula como clave, pero no es recomendable por varios motivos, entre otros que sería un dato a introducir por un humano y por tanto sería susceptible de error, cosa que no ocurre cuando se establece la clave como autoincremental en la base de datos.
Salu2