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

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

Transcript of Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau.

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