Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
4
respostas

[Projeto] Realizando consultas com SQL: Joins, Views e transações | Mão na massa: gerenciamento escolar com banco de dados relacional

Olá, pessoal.

Vou transcrever aqui as minhas soluções para os exercícios do curso Realizando consultas com SQL: Joins, Views e transações, para quem possa interessar e também para minha própria referencia futura. Estou aberto a revisões e sugestões também.

-- Consulta 1: Buscar o nome do professor e a turma que ele é orientador
SELECT Nome_Professor Professor_Orientador, Nome_Turma Turma FROM Professores
JOIN Turmas ON Professores.ID_Professor = Turmas.ID_Turma;

-- Consulta 2: Retornar o nome e a nota do aluno que possui a melhor nota na disciplina de Matemática
SELECT Alunos.Nome_Aluno, MAX(Notas.Nota) Maior_Nota FROM Notas
JOIN Disciplinas ON Notas.ID_Disciplina = Disciplinas.ID_Disciplina
JOIN Alunos ON Notas.ID_Aluno = Alunos.ID_Aluno
WHERE Disciplinas.Nome_Disciplina = "Matemática";

-- Consulta 3: Identificar o total de alunos por turma
SELECT Nome_Turma, COUNT(*) Total_Alunos FROM Turmas
JOIN Turma_Alunos ON Turmas.ID_Turma = Turma_Alunos.ID_Turma
GROUP BY Turmas.ID_Turma;

-- Consulta 4: Listar os Alunos e as disciplinas em que estão matriculados
SELECT Alunos.Nome_Aluno, Disciplinas.Nome_Disciplina FROM Alunos
JOIN Turma_Alunos ON Alunos.ID_Aluno = Turma_Alunos.ID_Aluno
JOIN Turma_Disciplinas ON Turma_Alunos.ID_Turma = Turma_Disciplinas.ID_Turma
JOIN Disciplinas ON Turma_Disciplinas.ID_Disciplina = Disciplinas.ID_Disciplina;

-- Consulta 5: Criar uma view que apresenta o nome, a disciplina e a nota dos alunos
CREATE VIEW vw_aluno_disciplina_nota AS
SELECT Alunos.Nome_Aluno, Disciplinas.Nome_Disciplina, Notas.Nota FROM Alunos
JOIN Notas ON Alunos.ID_Aluno = Notas.ID_Aluno
JOIN Disciplinas ON Notas.ID_Disciplina = Disciplinas.ID_Disciplina;
4 respostas
solução!

Olá, Myke! Como vai?

Parabéns pela resolução da atividade!

Vi que você explorou o JOIN para relacionar tabelas com SQL, utilizou muito bem a VIEW para organizar consultas e ainda compreendeu a importância da transação para consistência dos dados.

Continue postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Uma dica interessante para o futuro é aplicar aliases mais claros nas colunas, assim:

SELECT p.Nome_Professor AS Professor_Orientador, 
       t.Nome_Turma AS Turma
FROM Professores p
JOIN Turmas t ON p.ID_Professor = t.ID_Turma;

Isso facilita a leitura e manutenção das consultas.

Se quiser aprofundar ainda mais, algumas boas práticas são:

  • Normalização: manter a estrutura das tabelas organizada para evitar redundâncias.
  • Views: usar views para simplificar consultas complexas e garantir segurança de dados.
  • Índices: criar índices em colunas usadas em joins e filtros para melhorar desempenho.

Alguns materiais podem estar em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Ah, uma pergunta: você prefere praticar SQL criando consultas mais complexas com várias tabelas ou revisar conceitos básicos para consolidar fundamentos antes de avançar?

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Olá, Daniel!

Obrigado pelos seus comentários e dicas, com certeza eu vou levar em consideração;

Respondendo a sua pergunta: Acredito que já consegui rever fundamentos de SQL em um nível intermediario básico. Estou buscando praticar SQL escrevendo consultas mais complexas agora, resolvendo os desafios do leetcode relacionados a banco de dados, em ordem crescente de dificuldade, para manter o contato com o SQL, ao mesmo tempo progredir na capacidade de elaborar consultas mais complexas.

Grato pela atenção dada a minha solução,
Atenciosamente,
Myke Albuquerque Pinto de Oliveira.

Olá, Daniel!

Obrigado pelos seus comentários e dicas, com certeza eu vou levar em consideração;

Respondendo a sua pergunta: Acredito que já consegui rever fundamentos de SQL em um nível intermediario básico. Estou buscando praticar SQL escrevendo consultas mais complexas agora, resolvendo os desafios do leetcode relacionados a banco de dados, em ordem crescente de dificuldade, para manter o contato com o SQL, ao mesmo tempo progredir na capacidade de elaborar consultas mais complexas.

Grato pela atenção dada a minha solução,
Atenciosamente,
Myke Albuquerque Pinto de Oliveira.

Olá, Myke! Tudo bem?

Gostei muito da forma como você descreveu sua estratégia de prática.

Revisar fundamentos de SQL em nível intermediário e, ao mesmo tempo, aplicar esse conhecimento em desafios progressivos no LeetCode é uma excelente forma de consolidar aprendizado e ganhar confiança na elaboração de consultas complexas. Essa combinação de revisão teórica com prática aplicada certamente vai acelerar sua evolução.

Forte abraço e bons estudos por aí!