Professor: Elias Ferreira Alunos: Luis Henrique, Edy Laus, Igor Pereira, Waldir Junior Gestão da Tecnologia da Informação - Módulo IV - Matutino Especificação dos Requisitos de Dados I. Introdução Esse documento exibe todas as especificações necessárias para o banco de dados da aplicação como entidades, campos e tipos dos atributos, os quais foram analisados para que a especificação dos requisitos de dados contemplasse a possibilidade de análise do nível de depreciação dos ativos no decorrer do tempo. O documento Contém: Modelo Conceitual Modelo Lógico Scripts SQL Consultas utilizadas II. Modelo Conceitual III. Modelo Lógico Produto Atributo id_prod uto nome Tipo SERIAL VARCH AR Taman ho 30 Decim ais Restriç ões NOT NULL NOT NULL 1 descric ao TEXT Movimentacao Taman Atributo Tipo ho id_mov id_prod uto tipo_mo v SERIAL INTEG ER data quantid ade DATE INTEG ER NUME RIC INTEG ER valor_u saldo CHAR 1 10 Decim ais Restriç ões NOT NULL NOT NULL NOT NULL NOT NULL NOT 2 NULL IV. Modelo Físico V. SQL's Utilizadas nas Aplicação Salvar Entrada de produtos 2 INSERT INTO produto(nome,descricao) VALUES(?,?); INSERT INTO movimentacao(id_produto) SELECT id_produto FROM produto WHERE id_produto = (SELECT MAX(id_produto) FROM produto); UPDATE movimentacao SET tipo_mov = ?, data = ?, quantidade = ?, valor_u = ?, saldo = ? WHERE id_mov = (SELECT MAX(id_mov) FROM movimentacao); Salvar Saida de produtos INSERT INTO movimentacao (id_produto,tipo_mov,data,quantidade,valor_u) VALUES ((SELECT MAX(produto.id_produto) FROM produto INNER JOI movimentacao ON produto.id_produto = movimentacao.id_produto WHERE nome LIKE ?AND movimentacao.saldo > 0 ), ?, ?, ?, (SELECT valor_u FROM movimentacao WHERE id_produto = (SELECT MAX(produto.id_produto) FROM produto INNER JOIN movimentacao ON produto.id_produto = movimentacao.id_produto WHERE nome LIKE ? AND saldo > 0 AND tipo_mov = 'E') AND tipo_mov = 'E')); UPDATE movimentacao SET saldo = (SELECT saldo FROM movimentacao WHERE id_produto = (SELECT MAX(produto.id_produto) FROM produto INNER JOIN movimentacao ON movimentacao.id_produto = produto.id_produto WHERE produto.nome LIKE ? AND movimentacao.tipo_mov = 'E' AND movimentacao.saldo > 0)AND tipo_mov = 'E' AND saldo > 0) - (SELECT quantidade FROM movimentacao WHERE id_mov = (SELECT MAX(id_mov) FROM movimentacao)) WHERE tipo_mov = 'E' AND id_produto =(SELECT MAX(produto.id_produto) FROM produto INNER JOIN movimentacao ON movimentacao.id_produto = produto.id_produto WHERE produto.nome LIKE ?AND movimentacao.tipo_mov = 'E' AND movimentacao.saldo > 0); Tabela de Entrada SELECT id_mov, produto.nome, movimentacao.id_produto, tipo_mov, data, quantidade, valor_u, saldo FROM movimentacao INNER JOIN produto ON produto.id_produto = movimentacao.id_produto WHERE produto.nome LIKE ? AND tipo_mov = 'E' ORDER BY id_mov ASC; Tabela de Saída SELECT id_mov, produto.nome, movimentacao.id_produto, tipo_mov, data, quantidade, valor_u, saldo FROM movimentacao INNER JOIN produto ON produto.id_produto = movimentacao.id_produto WHERE produto.nome LIKE ? AND tipo_mov = 'S' ORDER BY id_mov ASC; Tabela de Saldo SELECT produto.nome, quantidade,saldo, valor_u FROM movimentacao INNER JOIN produto ON produto.id_produto = movimentacao.id_produto WHERE tipo_mov = 'E' AND produto.nome LIKE ? ORDER BY id_mov ASC; Tabela de Total de Entrada 3 SELECT SUM(quantidade) quantidade, SUM(valor_u) valor_u, SUM(total) total FROM totalEntrada WHERE nome LIKE ?; Tabela de Total de Saída SELECT SUM(quantidade) quantidade, SUM(valor_u) valor_u, SUM(total) total FROM totalSaida WHERE nome LIKE ? Tabela de Total de Saldo SELECT SUM(saldo) saldo, SUM(total) total FROM totalSaldo WHERE nome LIKE ?; Verificar qual é o ultimo valor SELECT saldo FROM estoque_entrada WHERE nome LIKE ? AND saldo > 0 AND id_produto = (SELECT MAX(id_produto) FROM estoque_entrada WHERE nome LIKE ? AND saldo > 0); Somar o estoque total do produto SELECT SUM(saldo) FROM movimentacao INNER JOIN produto ON produto.id_produto = movimentacao.id_produto WHERE tipo_mov = 'E' AND produto.nome = ?; View para estoque de entrada CREATE OR REPLACE VIEW estoque_entrada AS SELECT movimentacao.id_mov, produto.id_produto, movimentacao.data, movimentacao.tipo_mov, produto.nome, movimentacao.valor_u, movimentacao.quantidade, movimentacao.saldo FROM produto JOIN movimentacao ON produto.id_produto = movimentacao.id_produto WHERE movimentacao.tipo_mov = 'E' ORDER BY movimentacao.id_mov; View para estoque de saída CREATE OR REPLACE VIEW estoque_saida AS SELECT movimentacao.id_mov, produto.id_produto, movimentacao.data, movimentacao.tipo_mov, produto.nome, movimentacao.valor_u, movimentacao.quantidade, movimentacao.saldo FROM produto JOIN movimentacao ON produto.id_produto = movimentacao.id_produto WHERE movimentacao.tipo_mov = 'S' ORDER BY movimentacao.id_mov; View para Total da Tabela Entrada CREATE OR REPLACE VIEW totalentrada AS SELECT produto.id_produto, produto.nome, movimentacao.quantidade, movimentacao.valor_u, movimentacao.quantidade * movimentacao.valor_u AS total FROM movimentacao JOIN produto ON produto.id_produto = movimentacao.id_produto WHERE movimentacao.tipo_mov = 'E' ORDER BY produto.id_produto; View para Total da Tabela Saída CREATE OR REPLACE VIEW totalsaida AS SELECT produto.id_produto, produto.nome, movimentacao.quantidade, movimentacao.valor_u, 4 movimentacao.quantidade * movimentacao.valor_u AS total FROM movimentacao JOIN produto ON produto.id_produto = movimentacao.id_produto WHERE movimentacao.tipo_mov = 'S' ORDER BY produto.id_produto; View para Total da Tabela Saldo CREATE OR REPLACE VIEW totalsaldo AS SELECT produto.id_produto, produto.nome, movimentacao.valor_u, movimentacao.saldo, movimentacao.saldo * movimentacao.valor_u AS total FROM movimentacao JOIN produto ON produto.id_produto = movimentacao.id_produto WHERE movimentacao.tipo_mov = 'E' ORDER BY produto.id_produto; 5