Projeto focado na criação de um banco de dados relacional completo para um sistema de gerenciamento de oficinas mecânicas
O objetivo foi construir um esquema de banco de dados funcional para uma rede de oficinas. O processo incluiu a modelagem lógica, a implementação do script SQL para criar a estrutura, a inserção de dados para popular o banco e a elaboração de consultas para extrair informações
O modelo foi projetado para refletir regras de negócio complexas, garantindo integridade e performance:
- Clientes e Carros: Um cliente pode possuir múltiplos veículos.
- Múltiplos Funcionários: Uma Ordem de Serviço pode ter vários funcionários associados a ela (exemplo: um mecânico e um eletricista na mesma ordem de serviço). Isso é controlado pela tabela "EmployeeOrder".
- Custo da Ordem (Peças e Serviços): Uma ordem de serviço é composta por múltiplas peças e múltiplos serviços.
- Preço Calculado: O valor total da ordem de serviço não é armazenado, e sim calculado dinamicamente pela soma dos preços das peças e serviços executados, evitando inconsistência nos dados
O banco de dados "CarWorkshop" é composto pelas seguintes tabelas:
Clients: Armazena os dados dos clientes da oficinaCar: Armazena os veículos de cada clienteWorkshop: Registra as diferentes filiais da oficinaManager: Gerentes responsáveis por cadaWorkshopEmployee: Mecânicos e a oficina onde trabalhamPart: Catálogo de peças e controle de estoqueService: Mão de obra oferecidaServiceOrder: A tabela central que registra cada ordem de serviço abertaEmployeeOrder: Tabela que liga osEmployeesaServiceOrder.OrderPart: Tabela que liga asPartaServiceOrder.ServiceOrderExecuted: Tabela que liga osService(serviços) àServiceOrder.
Foram elaboradas queries para extrair informações estratégicas do banco de dados:
Select concat(fname, ' ', lname) as complete_name, c.carBrand, c.model, c.carPlate
FROM Car as c
JOIN Clients as cl ON c.idClient = cl.idClient
ORDER BY complete_name; Select e.idEmployee, concat(e.fname, ' ', e.lname) as complete_name, e.CPF, e.specialty
FROM Employee as e
JOIN Workshop as w ON e.idWorkshop = w.idWorkshop
WHERE w.WorkshopName = 'Oficina Central';select concat(fname, ' ', lname) as complete_name, COUNT(ca.idCar) as Number_cars
FROM Clients as c
JOIN Car as ca ON c.idClient = ca.idClient
GROUP BY c.idClient;select soe.idServiceOrder, group_concat(S.serviceName SEPARATOR ',') as serviceName, SUM(soe.price) as totalPriceServiceOrder
FROM ServiceOrderExecuted as soe
INNER JOIN Service as s ON soe.idService = s.idService
GROUP BY soe.idServiceOrder;select concat(m.fname, ' ', m.lname) as managerName, m.startDate, w.workshopName, w.location, w.CNPJ
From Manager as m
JOIN workshop as w ON m.idManager = w.idManager;