Então Luan, na verdade você precisa pensar na entidade aluno e determinar quais são os atributos dessa entidade. Aluno pode ter provas, média (somando o resultados das provas e dividindo pela quantidade de provas do semestre/ano) faltas, se ele está em qual semestre/ano está, e assim por diante.
Uma alternativa para dividir esses dados, é ter uma tabela de prova, que cada prova tem seu próprio Id, e tem como chave estrangeira o id do aluno. Uma tabela para alunos matriculados, uma para provas e fazer essa junção entre todas essas entidades. Nesta tabela de alunos matriculados terá o id do aluno (chave estrangeira), o id da tabela de provas (chave estrangeira), id da tabela de matérias (chave estrangeira) e valores como média, situação (aprovado, reprovado, recuperação e aguardo, para o semestre que não terminou).
A ideia é separar bem o que é cada objeto/entidade, exemplo aluno, semestre, matéria, prova entre outras tabelas para que os dados sejam bem separados, sem duplicar dados e apenas juntar os dados em tabelas específicas de junção para esses dados.
O aluno tem que ser aprovado em um certo semestre, em uma certa matéria com uma nota mínima. Não faz sentido criar uma tabela de aluno aprovado, porque o aluno ser aprovado é a junção de algumas situações. Ele pode ser aprovado em qualidade de software do 3º semestre, mas pode ter reprovado em desenvolvimento web, também do terceiro semestre.
Sugiro que dê uma lida neste artigo sobre normalização de banco de dados. Isso irá te ajudar a entender as melhores formas de como pensar no seu modelo de banco de dados.