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
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!