Escolar Documentos
Profissional Documentos
Cultura Documentos
FACULDADE ANHANGUERA-FACNET
SISTEMAS DE INFORMAÇÃO
BRASÍLIA, 2014
ITEM REQUERIMENTO
CONCEITOS BÁSICOS
-- -----------------------------------------------------
-- Table `mydb`.`Produto`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `PadariaBD`.`Produto` (
`idProduto` INT AUTO_INCREMENT NOT NULL,
`codProduto` INT NOT NULL,
`nmProduto` VARCHAR(45) NOT NULL,
`unidade` varchar (15) NOT NULL,
`precoCustoProd` FLOAT NOT NULL,
`precoVendaProd` FLOAT NOT NULL,
PRIMARY KEY (`idProduto`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Entrada`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `PadariaBD`.`Entrada` (
`idEntrada` INT AUTO_INCREMENT NOT NULL,
`dataOperacao` DATETIME NOT NULL,
`qtdEstoque` INT NOT NULL,
`Produto_idProduto` INT NOT NULL,
PRIMARY KEY (`idEntrada`, `Produto_idProduto`),
INDEX `fk_Entrada_Produto1_idx` (`Produto_idProduto` ASC),
CONSTRAINT `fk_Entrada_Produto1`
FOREIGN KEY (`Produto_idProduto`)
REFERENCES `mydb`.`Produto` (`idProduto`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Saida`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `PadariaBD`.`Saida` (
`idSaida` INT AUTO_INCREMENT NOT NULL,
`qtdVenda` INT NOT NULL,
`vlrVenda` FLOAT NOT NULL,
`subTotalVenda` FLOAT NOT NULL,
`Produto_idProduto` INT NOT NULL,
PRIMARY KEY (`idSaida`, `Produto_idProduto`),
INDEX `fk_Saida_Produto1_idx` (`Produto_idProduto` ASC),
CONSTRAINT `fk_Saida_Produto1`
FOREIGN KEY (`Produto_idProduto`)
REFERENCES `mydb`.`Produto` (`idProduto`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Movimentacao`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `PadariaBD`.`Movimentacao` (
`idMovimentacao` INT AUTO_INCREMENT NOT NULL,
`dataHoraMov` DATETIME NOT NULL,
`vlrRecebido` FLOAT NOT NULL,
`Saida_idSaida` INT NOT NULL,
PRIMARY KEY (`idMovimentacao`, `Saida_idSaida`),
INDEX `fk_Movimentacao_Saida1_idx` (`Saida_idSaida` ASC),
CONSTRAINT `fk_Movimentacao_Saida1`
FOREIGN KEY (`Saida_idSaida`)
REFERENCES `mydb`.`Saida` (`idSaida`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`TabLog`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `PadariaBD`.`TabLog` (
`idLog` INT NOT NULL AUTO_INCREMENT,
`descrMsg` VARCHAR(45) NOT NULL,
`dataLog` TIMESTAMP NULL,
`idProduto` int,
PRIMARY KEY (`idLog`),
CONSTRAINT `idProduto`
FOREIGN KEY (idProduto)
REFERENCES `PadariaBD`.`Produto` (idProduto)
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;
Selecione todos os campos da tabela Produto onde o valor da venda está entre 10 e
30 reais.
Mostre o valor da soma de todas as vendas
Mostre o código do produto e o seu respectivo nome que comece com a letra Q
Qual a hora, dia, mês e ano da última movimentação no banco?
Mostre o nome dos produto, código e quantidade em estoque dos produtos com
idSaida entre 125 e 127
Procedure e Trigger
Sempre que um produto estiver com estoque menor que 5, um registro no banco de
dados deverá acusar o código do produto e a mensagem Estoque baixo e Sempre que
um produto estiver com estoque maior que 300, um registro no banco de dados deverá
acusar o código do produto e a mensagem Estoque Alto.
Foi feito uma trigger para fazer a deleção do estoque toda vez que uma venda for
efetuada.
A procedure complementa a trigger inserindo as mensagens na tabLog.
O código abaixo executa este comando:
DELIMITER //
DELIMITER //
begin
call inserir(new.Produto_idProduto);
end //
DELIMITER ;
DELIMITER //
BEGIN
if(select qtdEstoque from Entrada where Produto_idProduto =
produto)>300 then
insert into tabLog(descrMsg,idProduto,dataLog) values ('Estoque
Alto',Produto,now());
elseif(select qtdEstoque from Entrada where Produto_idProduto = produto)
<= 5 then
insert into tabLog(descrMsg,idProduto,dataLog) values ('Estoque Baixo',
produto);
end if;
END//
DELIMITER ;