Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

UNINASSAU 
ANÁLISE e DESENVOLVIMENTO de SISTEMAS 
Banco de Dados 
Marcelo Silva Lorenço - 01503244 
Atividade Contextualizada 
Enunciado: 
Uma equipe de desenvolvimento, para implantação de um banco de dados, se 
deparou com o seguinte cenário: uma agência de locação de veículos possui toda a 
organização do negócio, como controle de retiradas e recebimento dos veículos, 
lavagens e manutenção, lançamentos financeiros, dados de clientes e veículos 
registrados em planilhas eletrônicas, além de documentos de textos, nos 
 quais, diversas vezes, ocorrem problemas de integridades ou 
inconsistências nas informações. 
Todos os funcionários envolvidos na locação possuem acesso irrestrito aos 
documentos e planilhas, independentemente do seu setor, para consultas e 
atualização dos registros referentes a suas atividades no negócio. Portanto, não há 
qualquer separação ou restrição para acesso a essas informações, que são 
compartilhadas e que deveriam ser melhor geridas. 
Após o devido estudo de viabilidade e levantamento dos requisitos, ficou 
acertado que um novo projeto de reestruturação e implantação de um banco de dados 
será implementado. O projeto contemplará todas as fases de banco de dados do 
modelo conceitual, passando pelo lógico, até o modelo físico, para organização e 
manipulação geral dos principais cadastros e eventos envolvidos no negócio, além do 
controle de usuários e níveis de acesso e emprego de restrica0 de integridade para 
qualidade das informações manipuladas. As entidades importantes levantadas foram: 
Clientes, veículos, Funcionários, Movimento (aluguel, retirada e devolução do veículo) 
e Oficina (Lavagem e manutenção dos veículos). 
A partir de tais informações, elabore um projeto de banco de dados completo, 
com toda a documentação necessária, com diagramas para o modelo conceitual, 
modelo lógico e scripts para o modelo físico e prints constatando sua implementação 
junto ao banco de dados, incluindo aspectos de segurança e restrição de integridade 
para os dados do banco. 
1 - Deve ser apresentado um projeto completo do banco de dados, com os modelos 
conceitual, lógico e físico bem definidos, além de implementação de aspectos de 
restrição de integridade, e segurança do banco de dados. 
2 - O projeto deverá contemplar a criação de, no mínimo, cinco usuários com 
privilégios diferentes para acessarem o banco de dados criado. 
3 - As tabelas deverão ser populadas com, no mínimo, cinco registros cada uma. 
4 - Para o modelo conceitual, deve ser entregue uma proposta de DER simplificado 
sem a necessidade de indicar todos os atributos. 
5 - O modelo Lógico deve ser representado em um diagrama com tabelas que 
demonstrem todos detalhes dos atributos, destacando tipos de campos, chaves 
primárias e estrangeiras, relacionamentos com cardinalidades bem definidas para as 
tabelas que necessitarem, além do esquema relacional de todas as tabelas. 
6 - O modelo físico deve contemplar todos os scripts SQL de todos objetos envolvidos, 
incluindo prints das telas dos objetos populados no SGBD, para formar toda a 
documentação banco de dados proposto 
 
 
MODELO CONCEITUAL 
 
 
 
 
MODELO LÓGICO 
 
 
 
 
 
 
 
 
 
 
 
MODELO FÍSICO 
 
● Scripts de criação das tabelas 
 
CREATE TABLE Cliente ( 
 CPF BIGINT PRIMARY KEY, 
 Nome VARCHAR(100) NOT NULL, 
 Idade INT NOT NULL 
); 
 
CREATE TABLE Veiculo ( 
 Chassi VARCHAR(30) PRIMARY KEY, 
 Placa VARCHAR(100) NOT NULL, 
 Modelo VARCHAR(100) NOT NULL, 
 Cor VARCHAR(100) NOT NULL 
); 
 
CREATE TABLE Funcionario ( 
 CPF BIGINT PRIMARY KEY, 
 Nome VARCHAR(100) NOT NULL, 
 Idade INT NOT NULL 
); 
 
CREATE TABLE Oficina ( 
 Identificador INT PRIMARY KEY, 
 Descricao VARCHAR(100) NOT NULL, 
 Data DATE NOT NULL, 
 Chassi VARCHAR(30), 
 FOREIGN KEY (Chassi) REFERENCES Veiculo(Chassi) 
); 
 
CREATE TABLE Movimento ( 
 Identificador INT PRIMARY KEY, 
 Descricao VARCHAR(100) NOT NULL, 
 Data DATE NOT NULL, 
 CPF_Cliente BIGINT, 
 CPF_Funcionario BIGINT, 
 Chassi VARCHAR(30), 
 FOREIGN KEY (CPF_Cliente) REFERENCES Cliente(CPF), 
 FOREIGN KEY (CPF_Funcionario) REFERENCES Funcionario(CPF), 
 FOREIGN KEY (Chassi) REFERENCES Veiculo(Chassi) 
); 
 
 
 
 
 
 
● Script de povoamento de tabela 
 
INSERT INTO Cliente (CPF, Nome, Idade) VALUES 
(12345678901, 'João da Silva', 30), 
(98765432101, 'Maria Souza', 25), 
(45678912301, 'Carlos Oliveira', 45), 
(78901234501, 'Ana Santos', 28), 
(56789012301, 'Pedro Pereira', 22); 
 
INSERT INTO Veiculo (Chassi, Placa, Modelo, Cor) VALUES 
('ABC123456789', 'XYZ1234', 'Carro A', 'Vermelho'), 
('DEF987654321', 'MNO5678', 'Carro B', 'Azul'), 
('GHI456789123', 'PQR9012', 'Carro C', 'Verde'), 
('JKL789012345', 'STU3456', 'Carro D', 'Preto'), 
('MNO567890123', 'VWX7890', 'Carro E', 'Branco'); 
 
INSERT INTO Funcionario (CPF, Nome, Idade) VALUES 
(11111111111, 'Lucas Lima', 28), 
(22222222222, 'Ana Rodrigues', 35), 
(33333333333, 'Paulo Souza', 40), 
(44444444444, 'Mariana Silva', 22), 
(55555555555, 'Ricardo Santos', 29); 
 
INSERT INTO Oficina (Identificador, Descricao, Data, Chassi) VALUES 
(1, 'Troca de óleo', '2023-08-10', 'ABC123456789'), 
(2, 'Reparo na suspensão', '2023-07-25', 'DEF987654321'), 
(3, 'Substituição de pneus', '2023-09-05', 'GHI456789123'), 
(4, 'Reparo na pintura', '2023-08-15', 'JKL789012345'), 
(5, 'Manutenção geral', '2023-09-20', 'MNO567890123'); 
 
 
INSERT INTO Oficina (Identificador, Descricao, Data, Chassi) VALUES 
(1, 'Troca de óleo', '2023-08-10', 'ABC123456789'), 
(2, 'Reparo na suspensão', '2023-07-25', 'DEF987654321'), 
(3, 'Substituição de pneus', '2023-09-05', 'GHI456789123'), 
(4, 'Reparo na pintura', '2023-08-15', 'JKL789012345'), 
(5, 'Manutenção geral', '2023-09-20', 'MNO567890123'); 
 
INSERT INTO Movimento (Identificador, Descricao, Data, CPF_Cliente, 
CPF_Funcionario, Chassi) VALUES 
(1, 'Aluguel', '2023-08-10', 12345678901, 11111111111, 'ABC123456789'), 
(2, 'Retirada', '2023-07-25', 98765432101, 22222222222, 'DEF987654321'), 
(3, 'Devolução', '2023-09-05', 45678912301, 33333333333, 'GHI456789123'), 
(4, 'Aluguel', '2023-08-15', 78901234501, 44444444444, 'JKL789012345'), 
(5, 'Devolução', '2023-09-20', 56789012301, 55555555555, 'MNO567890123'); 
 
● Script de criação de triggers: Essa triggers foram criadas para cada linha 
removida de uma tabela remova as linhas relacionadas nas demais tabelas do 
banco de dados. 
 
DELIMITER // 
CREATE TRIGGER cliente_delete_trigger AFTER DELETE ON Cliente FOR 
EACH ROW 
BEGIN 
 DELETE FROM Movimento WHERE CPF_Cliente = OLD.CPF; 
END; 
// 
DELIMITER ; 
 
DELIMITER // 
CREATE TRIGGER funcionario_delete_trigger AFTER DELETE ON Funcionario 
FOR EACH ROW 
BEGIN 
 DELETE FROM Movimento WHERE CPF_Funcionario = OLD.CPF; 
END; 
// 
DELIMITER ; 
 
DELIMITER // 
CREATE TRIGGER veiculo_delete_trigger AFTER DELETE ON Veiculo FOR 
EACH ROW 
BEGIN 
 DELETE FROM Movimento WHERE Chassi = OLD.Chassi; 
 DELETE FROM Oficina WHERE Chassi = OLD.Chassi; 
END; 
// 
DELIMITER ; 
 
● Script criação de usuários com privilégios diferentes. 
 
-- Criar usuario administrador 
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'qP7#rL9&m'; 
GRANT ALL PRIVILEGES ON Locacao.* TO 'admin'@'localhost'; 
 
-- Criar usuario com privilégios de cliente 
CREATE USER 'cliente'@'localhost' IDENTIFIED BY 'xT2@nZ5*s'; 
GRANT SELECT ON Locacao.Veiculo TO 'cliente'@'localhost'; 
 
-- Criar usuario com privilégios de funcionario 
CREATE USER 'funcionario'@'localhost' IDENTIFIED BY 'dF6$wH8%p'; 
GRANT SELECT, INSERT, UPDATE ON Locacao.* TO 'funcionario'@'localhost'; 
 
-- Criar usuario com privilégios de gerente administrativo 
CREATE USER 'gerente_admin'@'localhost' IDENTIFIED BY 'jK4#vB1^q'; 
GRANT SELECT, INSERT, UPDATE ON Locacao.* TO 
'gerente_admin'@'localhost'; 
GRANT DELETE ON Locacao.Funcionario TO 'gerente_admin'@'localhost'; 
GRANT DELETE ON Locacao.Veiculo TO 'gerente_admin'@'localhost'; 
 
-- Criar usuario com privilégios de gerente operacionalCREATE USER 'gerente_op'@'localhost' IDENTIFIED BY 'mG3*yD0#t'; 
GRANT SELECT, INSERT, UPDATE ON Locacao.* TO 'gerente_op'@'localhost'; 
GRANT DELETE ON Locacao.Veiculo TO 'gerente_op'@'localhost'; 
 
 
 
 
REFERÊNCIAS BIBLIOGRÁFICAS 
 
DEVMIDIA. Primeiros Passos no MySQL. Disponível em: 
<https://www.devmedia.com.br/primeiros-passos-no-mysql/28438>. Acesso em: 31 
de agosto de 2023. 
 
CARLOS. Como Criar Usuário MySQL e Conceder Privilégios: Guia para Iniciantes. 
Hostinger Tutoriais. Disponível em: <https://www.hostinger.com.br/tutoriais/como-
criar-usuario-mysql-e-conceder-privilegios>. Acesso em: 31 de agosto de 2023. 
 
ORACLE. Trigger Syntax and Examples. MySQL 8.0 Reference Manual. Disponível 
em: <https://dev.mysql.com/doc/refman/8.0/en/trigger-syntax.html>. Acesso em: 31 
de agosto de 2023.

Mais conteúdos dessa disciplina