65
Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Embed Size (px)

Citation preview

Page 1: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Projeto Farmácia Paul

Eduardo Costa

Gabriel Cypriano

Rodrigo Calhau

Page 2: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Escopo do Sistema

• Controle de Estoque– aviso automático de medicamentos com

estoque abaixo de um limite configurável– aviso automático de lotes com validade

próxima do vencimento (configurável)

• Controle de Vendas

• Controle de Funcionários

• Controle de Clientes

Page 3: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Projeto Conceitual – parte 1

Page 4: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Projeto Conceitual – parte 2

Page 5: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Projeto Conceitual (UML com atributos)

Page 6: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Projeto ConceitualDiagrama de Estados - Lote

Page 7: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Mapeamento de heranças

• Herança parcial– Podem existir Vendas que não

sejam VendaEntrega

• Abordagem com apenas uma tabela utilizando flags não serve, pois não suporta atributos not null de VendaEntrega

• Utilizamos abordagem de duas tabelas (superclasse e subclasse)

Page 8: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Mapeamento de heranças• Herança total

– Não podem existir PessoaFisica que não seja das subclasses

• Herança sobreposta– Pode haver PessoaFisica que seja

tanto Cliente quanto Funcionario

• Abordagem com apenas uma tabela utilizando flags não serve, pois não suporta atributos not null de VendaEntrega

• Abordagem com duas tabelas (subclasses) não serve, pois não é uma herança disjunta

• Utilizamos abordagem de três tabelas (superclasse e subclasses)

Page 9: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Outros Mapeamentos

• Relação NxN com atributos ItemVenda foi mapeada para uma tabela item_venda

• Atributo multivalorado Telefones de PessoaFisica foi mapeado para uma tabela telefones_pessoa_fisica (1a. Forma normal)

• Atributos derivados foram mapeados nas Views

Page 10: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Projeto Lógico 1FN – parte 1

Page 11: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Projeto Lógico 1FN – parte 2

Page 12: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Dependências Funcionais(diagrama parcial da 1FN)

• Tabela Medicamento desnormalizada

Page 13: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Dependências Funcionais (diagrama parcial da 3FN)

• Tabela Medicamento desnormalizada

Page 14: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Projeto Lógico 3FN (parcial)

Page 15: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Criação do Schema

• Domínios

Page 16: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Criação do Schema

• Tabelas (1)

Page 17: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Criação do Schema

• Tabelas (2)

Page 18: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Criação do Schema

• Tabelas (3)

Page 19: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Criação do Schema

• Tabelas (4)

Page 20: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Criação do Schema

• Tabelas (5)

Page 21: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Criação do Schema

• Tabelas (6)

Page 22: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Criação do Schema

• Tabelas (7)

Page 23: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Criação do Schema

• Tabelas (8)

Page 24: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Criação do Schema

• Tabelas (9)

Page 25: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Criação do Schema

• Tabelas (10)

Page 26: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Criação do Schema

• Views

Page 27: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Criação do Schema

• Restrições(1)

Page 28: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Criação do Schema

• Restrições(2)

Page 29: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Consultas

• Consulta 1: Dentre os funcionários que trabalham no caixa, recupere seu nome e o valor total de vendas efetuadas (quanto já vendeu), em ordem decrescente do valor de total de vendas.

SELECT nome, SUM (valor_item)

FROM item_venda, venda, pessoa_fisica

WHERE (item_venda.num_boleto_fiscal = venda.num_boleto_fiscal)

GROUP BY venda.cpf_caixa, nome, cpf

HAVING pessoa_fisica.cpf = cpf_caixa

ORDER BY SUM DESC

Page 30: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Item_Venda

Venda

Pessoa_fisica

Resultado

Page 31: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Consultas

• Consulta 2: Recupere o valor total de descontos concedidos, via cupons de desconto, por mês, ordenados por ordem decrescente de valor

SELECT round(SUM(descontos.valor_desconto), 2) AS valor_descontos, descontos.mes

FROM (SELECT (valor_item * 100 / (100 - desconto_medicamento)) AS valor_desconto, to_char(data, 'Month/ YYYY') AS mes

FROM (item_venda NATURAL JOIN venda)) AS descontos

GROUP BY descontos.mes

ORDER BY SUM(descontos.valor_desconto) DESC;

Page 32: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau
Page 33: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Plano de Execução

Page 34: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Consultas

• Consulta 3:

• Enunciado: Recupere para cada funcionário o seu nome e o valor

de descontos concedidos por ele em cada mês. • Consulta:

Page 35: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Consultas

• Consulta 3:VIEW valor_venda

Resultado

Tabela funcionario

Tabela pessoa_fisica

Page 36: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Consultas

• Consulta 4: Dentre os clientes que residem na cidade de Vitória, recupere seu nome e o valor total de compras efetuadas, em ordem decrescente do valor total de compras efetuadas

SELECT nome, SUM(item_venda.valor_item)FROM (((item_venda JOIN venda ON venda.num_boleto_fiscal =

item_venda.num_boleto_fiscal)JOIN endereco ON endereco.cpf_pessoa_fisica =

venda.cpf_cliente)JOIN pessoa_fisica ON pessoa_fisica.cpf = venda.cpf_cliente)

WHERE endereco.cidade = 'Vitoria'GROUP BY pessoa_fisica.nomeORDER BY SUM DESC

Page 37: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Resultado

Page 38: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Consultas

• Consulta 5: Recupere os nomes dos medicamentos mais vendidos, ordenados pelo número de unidades vendidas

• SELECT nome, SUM(item_venda.num_unidades_medicamento)

• FROM ((item_venda JOIN lote ON codigo_lote=codigo)

• JOIN medicamento ON codigo_barras_medicamento=codigo_barras)

• GROUP BY medicamento.nome

• ORDER BY SUM(item_venda.num_unidades_medicamento) DESC;

Page 39: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Resultado

Page 40: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau
Page 41: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Consultas

• Consulta 6:• Enunciado: Recupere para cada funcionário o seu nome e a

quantidade de entregas por ele efetuada, em ordem decrescente do número de entregas.

• Consulta:

Page 42: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Consultas

• Consulta 6:

Resultado da Consulta

Tabela venda_entrega

Tabela funcionario

Tabela pessoa_fisica

Page 43: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Consultas

• Consulta 7: Recupere a razão social e o número de lotes devolvidos por ano de cada distribuidor, em ordem decrescente de lotes devolvidos

SELECT distribuidor.razao_social, COUNT(*) AS nDevolucoes

FROM lote, distribuidor, devolucao_lote

WHERE (lote.cnpj_distribuidor = distribuidor.cnpj

AND devolucao_lote.codigo_lote = lote.codigo)

GROUP BY distribuidor.razao_social

ORDER BY COUNT(*) DESC

Page 44: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Resultado

Page 45: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Consultas

• Consulta 8: Recupere para cada medicamento o seu nome e sua quantidade em estoque

• SELECT nome, SUM(qtde_estoque) AS quantidade_estoque

• FROM (medicamento JOIN lote ON codigo_barras_medicamento=codigo_barras)

• WHERE lote.qtde_estoque > 0

• GROUP BY nome

• ORDER BY SUM(qtde_estoque) DESC;

Page 46: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Resultado

Page 47: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Plano de Execução

Page 48: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Consultas

• Consulta 9:• Enunciado: Recupere para o conhecimento medicamento

‘Gadernal’ as dosagens existentes e a quantidade em estoque de cada uma das dosagens, ordenado pela quantidade em estoque.

• Consulta:

Page 49: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Consultas

• Consulta 9:

Resultado

Tabela lote

Tabela medicamento

Page 50: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Consultas

• Consulta 10: Recupere para as cidades com mais de 5 entregas o seu nome e a quantidade de entrega, em ordem decrescente do numero de entregas.

• SELECT cidade, COUNT(*) AS nEntregas

• FROM (venda_entrega JOIN endereco ON venda_entrega.cpf_endereco = endereco.cpf_pessoa_fisica)

• GROUP BY cidade

• HAVING COUNT(*) > 5

• ORDER BY nEntregas DESC

Page 51: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Resultado

Page 52: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Consultas

• Consulta 11: Para cada cliente, recupere seu nome e a quantidade de cupons de desconto já utilizados por ele, ordenando pela ordem decrescente da quantidade de cupons

• SELECT nome, SUM(item_venda.num_unidades_medicamento)

• FROM ((item_venda JOIN lote ON codigo_lote=codigo)

• JOIN medicamento ON codigo_barras_medicamento=codigo_barras)

• GROUP BY medicamento.nome

• ORDER BY SUM(item_venda.num_unidades_medicamento) DESC

Page 53: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Resultado

Page 54: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Consultas

• Consulta 12:• Enunciado: Recupere a quantidade medicamentos genéricos

contidos em vendas que foram entregues em Vila Velha. • Consulta:

Page 55: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Consultas

• Consulta 12:

Tabela lote

Tabela medicamento

Page 56: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Consultas

• Consulta 12:

Resultado

Tabela venda

Tabela item_venda

Page 57: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Consultas

• Consulta 13: Recupere para cada lote cujo tempo de expiração seja menor que o especificado no medicamento que ele representa o nome do medicamento e a quantidade em estoque dele

SELECT tempo_expiracao_lote.codigo, nome, qtde_estoqueFROM (tempo_expiracao_lote JOIN medicamento ON

codigo_barras_medicamento=codigo_barras)

WHERE tempo_expiracao_lote.limite_dias_expiracao < medicamento.limite_dias_expiracao

ORDER BY qtde_estoque DESC

Page 58: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Resultado

Page 59: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Plano de Execução

Page 60: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Consultas

• Consulta 14:• Enunciado: Recupere para cada lote o seu código e seu tempo de

expiração em dias e o medicamento que ele refere. • Consulta:

Page 61: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Consultas

• Consulta 14:• Enunciado: Recupere para cada lote o seu código e seu tempo de

expiração em dias e o medicamento que ele refere. • Consulta:

Page 62: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Consultas

• Consulta 14:

VIEW tempo_expiracao_lote

ResultadoTabela medicamento

Page 63: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Consultas

• Consulta 15:

• Enunciado: Recupere para cada venda o numero do seu boleto, o nome do caixa que efetuou a venda, o nome do cliente (caso

possua), o nome do entregador (caso possua) e o seu valor. • Consulta:

Page 64: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Consultas

• Consulta 15:

Tabela venda

Tabela venda_entrega

View valor_entrega

Page 65: Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau

Consultas

• Consulta 15:

Resultado

Tabela pessoa_fisica