Você está na página 1de 18

ATIVIDADE CONTEXTUALIZADA DE BANCO DE DADOS

Nome Completo: Nathanael Augusto Ribeiro da Silva


Matrícula: 01471991
Curso: Análise e desenvolvimento de sistemas

Este trabalho contém o desenvolvimento completo de projeto de banco de


dados, com a modelagem conceitual, modelagem lógica e modelagem física,
para uma empresa fictícia que trabalha com aluguel e serviços de carros.
Foi levantado todos os requisitos que o sistema deveria ter, afim de que
pudesse atender a demanda da empresa em sua plenitude.
Foi utilizado as ferramentas BrModelo para modelagem conceitual, e a
ferramenta Mysql Workbench para desenvolvimento das modelagens lógicas e
físicas.

Etapas do Trabalho
1. Modelo Conceitual
Abaixo, temos a captura de tela do modelo conceitual, desenvolvido na
ferramenta BrModelo, proposto por esta atividade comtemplando suas
entidades levantas e seus principais atributos.
2. Modelo Lógico
Logo abaixo foi anexado a captura de tela do modelo lógico, desenvolvido na
ferramenta Mysql Workbench, proposto por esta atividade comtemplando suas
entidades levantas e todos os seus atributos.
3. Modelo Físico

Ainda utilizando a ferramenta Mysql Workbench, usando a função de geração


automática de Script disponível na ferramenta, foi gerado o código sql abaixo, a
partir do modelo lógico acima demonstrado.

-- MySQL Workbench Forward Engineering

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;


SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS,
FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE,
SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN
_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUB
STITUTION';

-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------

-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET
utf8 ;
USE `mydb` ;

-- -----------------------------------------------------
-- Table `mydb`.`cliente`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`cliente` (
`idcliente` INT NOT NULL AUTO_INCREMENT,
`cpf` CHAR(8) NOT NULL,
`nome` VARCHAR(45) NOT NULL,
`telefone` CHAR(8) NOT NULL,
`email` VARCHAR(45) NULL,
`data_nasc` DATE NULL,
`valor_servico` DOUBLE NULL,
PRIMARY KEY (`idcliente`))
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `mydb`.`veiculo`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`veiculo` (
`idveiculo` INT NOT NULL AUTO_INCREMENT,
`placa` VARCHAR(45) NOT NULL,
`chassi` VARCHAR(45) NULL,
`modelo` VARCHAR(45) NOT NULL,
`ano` INT NULL,
`cor` VARCHAR(45) NULL,
`cliente_idcliente` INT NOT NULL,
PRIMARY KEY (`idveiculo`),
CONSTRAINT `fk_veiculo_cliente1`
FOREIGN KEY (`cliente_idcliente`)
REFERENCES `mydb`.`cliente` (`idcliente`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `mydb`.`funcionario`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`funcionario` (
`idfuncionario` INT NOT NULL AUTO_INCREMENT,
`matricula` INT(10) NOT NULL,
`nome` VARCHAR(45) NOT NULL,
`departamento` VARCHAR(45) NOT NULL,
`salario` VARCHAR(45) NULL,
`data_nasc` VARCHAR(45) NULL,
PRIMARY KEY (`idfuncionario`))
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `mydb`.`serviço`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`serviço` (
`idserviço` INT NOT NULL AUTO_INCREMENT,
`tipo` VARCHAR(45) NULL,
`valor` DOUBLE NULL,
PRIMARY KEY (`idserviço`))
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `mydb`.`oficina`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`oficina` (
`idoficina` INT NOT NULL AUTO_INCREMENT,
`veiculo_idveiculo` INT NOT NULL,
`funcionario_idfuncionario` INT NOT NULL,
`serviço_idserviço` INT NOT NULL,
PRIMARY KEY (`idoficina`),
CONSTRAINT `fk_oficina_veiculo1`
FOREIGN KEY (`veiculo_idveiculo`)
REFERENCES `mydb`.`veiculo` (`idveiculo`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_oficina_funcionario2`
FOREIGN KEY (`funcionario_idfuncionario`)
REFERENCES `mydb`.`funcionario` (`idfuncionario`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_oficina_serviço1`
FOREIGN KEY (`serviço_idserviço`)
REFERENCES `mydb`.`serviço` (`idserviço`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `mydb`.`movimento`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`movimento` (
`idmovimento` INT NOT NULL AUTO_INCREMENT,
`aluguel` DATE NULL,
`retirada` DATE NULL,
`devolucao` DATE NULL,
`oficina_idoficina` INT NOT NULL,
`cliente_idcliente` INT NOT NULL,
PRIMARY KEY (`idmovimento`),
CONSTRAINT `fk_movimento_oficina1`
FOREIGN KEY (`oficina_idoficina`)
REFERENCES `mydb`.`oficina` (`idoficina`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_movimento_cliente1`
FOREIGN KEY (`cliente_idcliente`)
REFERENCES `mydb`.`cliente` (`idcliente`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
4. Incluindo valores na tabela

A atividade propôs a inclusão de 5 registros em cada tabela. Abaixo, estão os


scripts utilizados para inserção desses dados.

USE mydb;

INSERT INTO veiculo

(placa,chassi,modelo,ano,cor,cliente_idcliente,serviço_idse
rviço)

VALUES

("PIJ-4560",789654123, "Punto",2015,"branco",1,1);

INSERT INTO veiculo

(placa,chassi,modelo,ano,cor,cliente_idcliente,serviço_idse
rviço)

VALUES

("PIX-4100",789654123, "Onix Plus",2015,"branco",2,2);

INSERT INTO veiculo

(placa,chassi,modelo,ano,cor,cliente_idcliente,serviço_idse
rviço)

VALUES

("TER-7856",789654123, "Onix Joy",2022,"cinza",3,3);

INSERT INTO veiculo

(placa,chassi,modelo,ano,cor,cliente_idcliente,serviço_idse
rviço)

VALUES

("XEX-3000",789654123, "Strada",2018,"preto",4,4);
INSERT INTO veiculo

(placa,chassi,modelo,ano,cor,cliente_idcliente,serviço_idse
rviço)

VALUES

("NIU-1396",98988988, "Uno Mille",2010,"azul",5,5);

INSERT INTO cliente

(cpf,nome,telefone,email,data_nasc,valor_servico)

VALUES

(044192,"Nathanael", 8699991,"n@gmail.com","1992-12-
22",50);

INSERT INTO cliente

(cpf,nome,telefone,email,data_nasc,valor_servico)

VALUES

(030303,"Geovanio", 8688547,"g@gmail.com","1970-03-04",50);

INSERT INTO cliente

(cpf,nome,telefone,email,data_nasc,valor_servico)

VALUES

(040404,"Victor", 86947856,"v@gmail.com","1999-09-24",50);

INSERT INTO cliente

(cpf,nome,telefone,email,data_nasc,valor_servico)

VALUES

(050505,"Thais", 86987456,"th@gmail.com","2000-12-29",50);

INSERT INTO cliente

(cpf,nome,telefone,email,data_nasc,valor_servico)
VALUES

(050505,"Teresa", 86985024,"te@gmail.com","1971-08-17",50)

INSERT INTO funcionario

(matricula,nome,departamento,salario,data_nasc)

VALUES

(138596,"Augusto", "atendimento",1100,"1990-12-23");

INSERT INTO funcionario

(matricula,nome,departamento,salario,data_nasc)

VALUES

(56987,"José", "detalier",1100,"1995-12-23");

INSERT INTO funcionario

(matricula,nome,departamento,salario,data_nasc)

VALUES

(78965,"João", "detalier",1100,"2001-12-23");

INSERT INTO funcionario

(matricula,nome,departamento,salario,data_nasc)

VALUES

(12365,"Maria", "atendimento",1100,"1999-12-23");

INSERT INTO funcionario

(matricula,nome,departamento,salario,data_nasc)

VALUES

(14789,"Raimundo", "mecanico",2000,"1980-12-23");
INSERT INTO oficina

(veiculo_idveiculo,funcionario_idfuncionario,serviço_idserv
iço)

VALUES

(2, 2,1);

INSERT INTO oficina

(veiculo_idveiculo,funcionario_idfuncionario,serviço_idserv
iço)

VALUES

(3, 1,2);

INSERT INTO oficina

(veiculo_idveiculo,funcionario_idfuncionario,serviço_idserv
iço)

VALUES

(4, 3,3);

INSERT INTO oficina

(veiculo_idveiculo,funcionario_idfuncionario,serviço_idserv
iço)

VALUES

(2, 4,4);

INSERT INTO oficina

(veiculo_idveiculo,funcionario_idfuncionario,serviço_idserv
iço)

VALUES

(5, 5,5)

INSERT INTO movimento


(aluguel, retirada, devolucao, oficina_idoficina,
cliente_idcliente)

VALUES

("2022-06-09", "2022-06-10", "2022-06-12", 2,1 );

INSERT INTO movimento

(aluguel, retirada, devolucao, oficina_idoficina,


cliente_idcliente)

VALUES

("2022-06-09", "2022-06-10", "2022-06-12", 2,2 );

INSERT INTO movimento

(aluguel, retirada, devolucao, oficina_idoficina,


cliente_idcliente)

VALUES

("2022-06-09", "2022-06-10", "2022-06-12", 2,3 );

INSERT INTO movimento

(aluguel, retirada, devolucao, oficina_idoficina,


cliente_idcliente)

VALUES

("2022-06-09", "2022-06-10", "2022-06-12", 2,4 );

INSERT INTO movimento

(aluguel, retirada, devolucao, oficina_idoficina,


cliente_idcliente)

VALUES

("2022-06-09", "2022-06-10", "2022-06-12", 2,5 );


INSERT INTO serviço

(idserviço,tipo)

VALUES

(1,"lavagem");

INSERT INTO serviço

(idserviço,tipo)

VALUES

(2,"troca de óleo");

INSERT INTO serviço

(idserviço,tipo)

VALUES

(3,"revitalização de faróis");

INSERT INTO serviço

(idserviço,tipo)

VALUES

(4,"Polimento");

INSERT INTO serviço

(idserviço,tipo)

VALUES

(5,"alinhamento e balançeamento");
Abaixo, foi anexado as capturas de tela com as tabelas preenchidas.
5. Testes de exclusão de tabelas com chave estrangeira

Para testar se o relacionamento entre as tabelas está funcionando, foi realizado


esse teste de exclusão da tabela “cliente”. O resultado esperado seria a
ferramenta barrar essa exclusão visto que, a tabela “cliente” é chave
estrangeira na tabela “veículo”. A captura de tela confirma a funcionalidade do
código onde de fato, foi impedido a exclusão da tabela “cliente” como era
esperado.

6. Criação de usuários com privilégios diferentes

A atividade propôs a criação de cinco usuários com privilégios diferentes.


Dessa maneira, forma criados os seguintes usuários com permissão exclusiva
ao banco “mydb”, que é o banco criado nesta atividade:

 Usuario1: Permissão de acesso total ao banco;


 Usuario2: Permissão de criar novas tabelas ou bancos de dados;

 Usuario3: Permissão de deletar tabelas ou bancos de dados;


 Usuario4: Permissão de excluir linhas de tabelas;

 Usuario5: Permissão de inserir linhas em tabelas;


O código para criação dos usuários foi este:

CREATE USER 'usuario1'@'localhost' IDENTIFIED BY '1234';

GRANT ALL PRIVILEGES ON mydb.* TO 'usuario1'@'localhost'


with grant option;

CREATE USER 'usuario2'@'localhost' IDENTIFIED BY '1234';

GRANT CREATE ON mydb.* TO 'usuario2'@'localhost' with grant


option;

CREATE USER 'usuario3'@'localhost' IDENTIFIED BY '1234';

GRANT DROP ON mydb.* TO 'usuario3'@'localhost' with grant


option;

CREATE USER 'usuario4'@'localhost' IDENTIFIED BY '1234';

GRANT DELETE ON mydb.* TO 'usuario4'@'localhost' with grant


option;

CREATE USER 'usuario5'@'localhost' IDENTIFIED BY '1234';

GRANT INSERT ON mydb.* TO 'usuario5'@'localhost' with grant


option;
Referências

BR MODELO – Construindo um modelo de banco de dados. Disponível em: <


https://www.youtube.com/watch?v=sItFiqAN5YY>. Acesso em: 09 de jun. de
2022.

Modelagem de Banco de dados utilizado o Mysql Workbench. Disponível em: <


https://www.youtube.com/watch?v=wjDhtGhj9xg&t=6sY>. Acesso em: 09 de
jun. de 2022.

Modelagem de dados – modelo conceitual, lógico e físico. Disponível em: <


https://www.youtube.com/watch?v=8CkMX2qXgdY>. Acesso em: 09 de jun. de
2022.

Utilidade Pública – Modelagem de dados: Modelo conceitual, lógico e físico.


Disponível em: <https://www.luis.blog.br/modelagem-de-dados-modelo-
conceitual-modelo-logico-e-fisico.html>. Acesso em: 08 de jun. de 2022.

Comunnity – Como criar um novo usuário e atribuir permissões no Mysql.


Disponível em: < https://www.digitalocean.com/community/tutorials/como-criar-
um-novo-usuario-e-conceder-permissoes-no-mysql-pt>. Acesso em: 10 de jun.
de 2022.

Instalando MySql Workbench, criação de Banco de Dados, criação de Usuários


e privilégios. Disponível em: https://www.youtube.com/watch?v=6v8k49Bu_nI.
Acesso em: 10 de jun. de 2022.

Você também pode gostar