Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouNathan Rezendes Alterado mais de 10 anos atrás
1
Eduardo Costa Gabriel Cypriano Rodrigo Calhau
Projeto Farmácia Paul Eduardo Costa Gabriel Cypriano Rodrigo Calhau
2
Escopo do Sistema Controle de Estoque Controle de Vendas
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
3
Projeto Conceitual – parte 1
4
Projeto Conceitual – parte 2
5
Projeto Conceitual (UML com atributos)
6
Projeto Conceitual Diagrama de Estados - Lote
7
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)
8
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)
9
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
10
Projeto Lógico 1FN – parte 1
11
Projeto Lógico 1FN – parte 2
12
Dependências Funcionais (diagrama parcial da 1FN)
Tabela Medicamento desnormalizada
13
Dependências Funcionais (diagrama parcial da 3FN)
Tabela Medicamento desnormalizada
14
Projeto Lógico 3FN (parcial)
15
Criação do Schema Domínios
16
Criação do Schema Tabelas (1)
17
Criação do Schema Tabelas (2)
18
Criação do Schema Tabelas (3)
19
Criação do Schema Tabelas (4)
20
Criação do Schema Tabelas (5)
21
Criação do Schema Tabelas (6)
22
Criação do Schema Tabelas (7)
23
Criação do Schema Tabelas (8)
24
Criação do Schema Tabelas (9)
25
Criação do Schema Tabelas (10)
26
Criação do Schema Views
27
Criação do Schema Restrições(1)
28
Criação do Schema Restrições(2)
29
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
30
Item_Venda Pessoa_fisica Venda Resultado
31
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;
33
Plano de Execução
34
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:
35
Consultas Consulta 3: Tabela funcionario VIEW valor_venda
Tabela pessoa_fisica Resultado
36
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.nome ORDER BY SUM DESC
37
Resultado
38
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;
39
Resultado
41
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:
42
Consultas Consulta 6: Tabela funcionario Tabela venda_entrega
Tabela pessoa_fisica Resultado da Consulta
43
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
44
Resultado
45
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;
46
Resultado
47
Plano de Execução
48
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:
49
Consultas Consulta 9: Tabela lote Tabela medicamento Resultado
50
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
51
Resultado
52
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
53
Resultado
54
Consultas Consulta 12: Enunciado: Recupere a quantidade medicamentos genéricos contidos em vendas que foram entregues em Vila Velha. Consulta:
55
Consultas Consulta 12: Tabela lote Tabela medicamento
56
Consultas Tabela venda Consulta 12: Tabela item_venda Resultado
57
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_estoque FROM (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
58
Resultado
59
Plano de Execução
60
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:
61
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:
62
Consultas Consulta 14: VIEW tempo_expiracao_lote Resultado
Tabela medicamento
63
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:
64
Consultas Consulta 15: View valor_entrega Tabela venda
Tabela venda_entrega
65
Consultas Consulta 15: Tabela pessoa_fisica Resultado
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.