Article image
Gabriel Sales
Gabriel Sales06/10/2023 18:29
Compartilhe

Gerenciamento de Sistema Escolar com SQL, MySQL e Python

  • #SQL
  • #MySQL
  • #Python

Olá, desenvolvedores! Eu simplesmente não consigo acreditar no que acabei de fazer. Criei um SGBD escolar por meio de SQL, utilizando MySQL e Python, MAS NÃO FOI TÃO SIMPLES! Confere ai abaixo:

Modelagem de Dados com MySQL

O primeiro passo para criar um sistema de gerenciamento escolar eficiente é a modelagem de dados. No nosso caso, utilizamos o MySQL para criar tabelas que representam os principais componentes do sistema. A seguir, apresentamos uma visão geral das principais tabelas:

  • Tabela de Usuários: Armazena informações de autenticação, como nome, email e senha.
  • Tabela de Alunos: Registra dados dos estudantes, incluindo nome, endereço, telefone e status de pagamento.
  • Tabela de Professores e Funcionários: Mantém informações dos membros da equipe, como nome, cargo, email e telefone.
  • Tabela de Cursos: Contém detalhes sobre os cursos oferecidos, como nome, descrição, duração e preço.
  • Tabela de Inscrições: Associa alunos a cursos, permitindo o controle de matrículas.
  • Tabela de Notas e Avaliações: Armazena notas e avaliações dos alunos em diferentes disciplinas.
  • Tabela de Presença: Registra a presença dos alunos em aulas.
  • Tabelas de Taxas, Mensalidades e Descontos: Gerenciam as finanças da escola.
  • Tabela de Eventos: Registra eventos e suas datas.
  • Tabela de Salas de Aula: Mantém informações sobre as salas disponíveis.

Consultas SQL

Com as tabelas definidas, podemos executar consultas SQL para recuperar informações relevantes. Por exemplo, para obter a lista de alunos matriculados em um curso específico, podemos usar uma consulta SELECT com JOIN:

sql

Copy code
SELECT Alunos.Nome, Alunos.Email FROM Alunos INNER JOIN Inscricoes ON Alunos.ID = Inscricoes.AlunoID WHERE Inscricoes.CursoID = 1; 

Esta consulta retornará os nomes e emails dos alunos matriculados no curso com o ID 1.

Automatização com Python

A automação é fundamental para simplificar tarefas repetitivas. Utilizando Python, podemos criar scripts para interagir com o banco de dados de forma programática. Por exemplo, para enviar lembretes de pagamento aos alunos com mensalidades em atraso, podemos usar a biblioteca MySQL Connector e enviar emails com a biblioteca smtplib.

python

Copy code
import mysql.connector import smtplib # Conectar ao banco de dados MySQL db = mysql.connector.connect( host="localhost", user="seu_usuario", password="sua_senha", database="sua_base_de_dados" ) # Consulta para obter alunos com mensalidades em atraso cursor = db.cursor() cursor.execute("SELECT Nome, Email FROM Alunos WHERE PagamentoEmDia = 'Atrasado'") alunos_em_atraso = cursor.fetchall() # Enviar lembretes por email for aluno in alunos_em_atraso: nome, email = aluno # Código para enviar email # Fechar conexões cursor.close() db.close() 

Diagrama

image

Segurança

Galera, a parada é a seguinte: senhas seguras são a base, e só dá acesso pra quem realmente precisa, não exagera nos privilégios. Evita a injeção de SQL, fica de olho em atividades suspeitas, mantém tudo atualizado e faz uns backups de vez em quando, que é pra garantir. E senhas fortes, hein? Ah, e não esquece de cuidar da segurança física dos servidores. É assim que a gente mantém os dados protegidos e o sistema de boa.

CREATE TABLE Usuarios (
  ID INT AUTO_INCREMENT PRIMARY KEY,
  Nome VARCHAR(255) NOT NULL,
  Email VARCHAR(255) NOT NULL UNIQUE,
  Senha VARCHAR(255) NOT NULL
);


-- Permissões para Professores
GRANT SELECT ON Alunos, Inscricoes, NotasAvaliacoes, Presenca, ControlePresenca, Cursos TO professores;


-- Permissões para Financeiro
GRANT SELECT ON TaxasMatricula, Mensalidades, Descontos TO financeiro;


-- Permissões para Proprietários (acesso a todas as tabelas)
GRANT ALL PRIVILEGES ON *.* TO proprietarios;


-- Permissões para Funcionários de Segurança (acesso a todas as tabelas)
GRANT ALL PRIVILEGES ON *.* TO funcionarios_seguranca;

GitHub

Confira todo o projeto no meu repositório

https://github.com/gabrielmgsales/SGBD_SQL_Software_Escolar.git

Conclusão

A modelagem de dados é a base, e as consultas SQL permitem recuperar informações de forma eficiente. A automação com Python pode simplificar tarefas administrativas.

Lembrando que este é um exemplo fictício, mas as técnicas apresentadas são aplicáveis a sistemas reais. Espero que este artigo tenha sido útil para desenvolvedores que desejam trabalhar com bancos de dados escolares complexos. Se você tiver dúvidas ou quiser explorar ainda mais, fique à vontade para perguntar. Happy coding!

Compartilhe
Comentários (4)
Marianna Barbosa
Marianna Barbosa - 07/10/2023 08:37

Legal, gostei muito! Vou tentar usar o diagrama para criar uma WEBAPI em C#, mas usando o migrations. Tem alguma sugestão?

Ivoney Oliveira
Ivoney Oliveira - 07/10/2023 10:41

Meus parabéns !!!!

Sou Professor/Pedagogo há mais de 20 anos e sonho em construir algo semelhante para a rede pública.

Marianna Barbosa
Marianna Barbosa - 09/10/2023 01:42

Segue o início da WebApi baseada no diagrama: https://github.com/mahvalenterj/webapi-sistema-escolar/tree/main/SchoolSystem.git Sintam-se a vontade para sugerir implementações através de forks e pr's. https://github.com/mahvalenterj/webapi-sistema-escolar/tree/main/SchoolSystem

LS

Lucas Soares - 07/10/2023 13:25

Parabéns cara, ficou muito é massa