Segue abaixo a resolução que estipulei para o desafio, fiquei em dúvida apenas no 2º desafio se da maneira que montei deixa margem para algum erro futuro no código ou se não há problema em manter desta forma.
1º Desafio
SELECT pr.nome_professor, tr.nome_turma from Turmas tr
join Professores pr
on pr.id_professor = tr.ID_Professor_Orientador;
2º Desafio
SELECT al.nome_aluno, nt.nota from Notas nt
join Alunos al
on nt.ID_Aluno = al.ID_Aluno
join Disciplinas dp
on nt.ID_Disciplina = dp.ID_Disciplina
where nt.ID_Disciplina = (SELECT dp.ID_Disciplina from Disciplinas dp where nome_disciplina like 'Matemática')
group by nt.Nota
order by nt.Nota desc
limit 1;
3º Desafio
SELECT ID_Turma, COUNT(ID_Aluno) AS total_alunos
FROM Turma_Alunos
GROUP BY ID_Turma;
4º Desafio
SELECT al.nome_aluno, dp.nome_disciplina from Alunos al
join Turma_Alunos ta
on al.ID_Aluno = ta.ID_Aluno
join Turma_Disciplinas td
on ta.ID_Turma = td.ID_Turma
join Disciplinas dp
on td.ID_Disciplina = dp.ID_Disciplina;
5º Desafio
CREATE view View_Nome_Disciplina_Notas as
SELECT al.nome_aluno, dp.nome_disciplina, nt.Nota FROM Alunos al
JOIN Turma_Alunos ta
ON al.ID_Aluno = ta.ID_Aluno
JOIN Turma_Disciplinas td
ON ta.ID_Turma = td.ID_Turma
JOIN Disciplinas dp
ON td.ID_Disciplina = dp.ID_Disciplina
JOIN Notas nt
ON al.ID_Aluno = nt.ID_Aluno AND dp.ID_Disciplina = nt.ID_Disciplina;
SELECT * from View_Nome_Disciplina_Notas