Desafio Estacionamento

Mateus Toni
3 min readJan 20, 2022

--

Proposta de Exercício

Para treinar conexão de banco de dados (MySql) com a linguagem de programação que estou estudando (Python), me colocaram em um desafio de construir a princípio um banco de dados para um estacionamento e seu back-end.

Foi proposto construir um banco de dados que continha as informações do veículo (Placa, marca, modelo e cor) e também as informações da vaga (Bloco, andar, seção, número da vaga, data de entrada e hora de entrada), no exercício precisavam ter 4 blocos, cada bloco com 3 andares, duas seções por andar, e cada andar deve ser composto por vagas comuns, vagas de moto e vagas P.C.D.

Primeiras Tentativas

Comecei complicando um pouco, queria criar uma vaga no banco de dados assim que eu tivesse uma ocorrência de veículo, ou seja, assim que entrasse um veículo qualquer eu faria as verificações para ver onde ele se encaixava e geraria uma vaga para esse veículo. Também pensei em criar uma tabela para carros, para motos, para veículos P.C.D e uma para as vagas com todos os dados referentes ao veículo estacionado, como um ID de veículo ou importar a placa dele, nessa tabela de vagas também iriam ser inseridos os dados de hora e data.

Porém essa ideia ia me dar muito trabalho com muitas linhas de código e eu tinha apenas duas semanas de estudos com banco de dados, então eu abandonei essa ideia de onde estava e comecei de novo do zero.

O início da solução

Logo eu tive uma ideia que parecia ser melhor. Decidi gerar um for” para criar todas as vagas dentro da minha tabela de vagas, construindo assim todos os blocos (1–4), andares (1–3), vagas (1–80) e seções (a — f). Desse modo eu só precisaria agora criar uma query de “update” na vaga com as informações do carro ou moto e da mesma forma gerar outra query de “update” quando esse carro saísse do estacionamento.

Então assim eu gerei ofor” com 50 vagas comuns, 20 vagas para motos e 10 vagas P.C.D. Criei na tabela de vagas uma “foreing key” com a referência no ID do veículo na tabela de veículos.

Começo da construção do Back-end

Com as tabelas certas e animado por ter conseguido sair da estaca zero eu comecei a construção do back-end. Procurei por uma biblioteca externa do Python que eu conseguisse fazer a conexão do Python com o meu banco de dados e encontrei a “mySql-connector-Python” e com a ajuda de alguns vídeos eu sabia quais comandos usar e comecei de fato a programar. Criei algumas funções básicas como a de abrir o banco e gerar um carro na tabela de veículos, a mesma coisa para motos e carros P.C.D, também gerei a função de atualizar a vaga segundo a entrada de um veículo.

Na parte das “querys” de atualizar a vaga eu tive alguns problemas, pois as primeiras tentativas que eu fiz, elas estavam colocando o mesmo veículo em todas as vagas. Então gerei algumas novas colunas na tabela de vagas como: tipo do veículo (carro ou moto), tipo de vaga (P.C.D ou comum) e status da vaga (livre ou ocupado) e em seguida criei novas condições nas “querys” e limitei para só acontecer uma vez usando o “Limmit 1”

Começo do fim

Depois das “querys” estarem certas e funcionando, construí toda a lógica da parte de entrada e saída de veículo. Fiz também um tratamento de erro e usei “RegEx” para validar as placas, tanto Mercosul quanto as antigas.

Levei 4 dias para finalizar todo o desafio e fiquei bem contente com o resultado, de fato foi difícil, mas achei que pela demanda do desafio e pelo pouco contato que tive com banco de dados eu cheguei em uma solução prática e funcional.

--

--