Informática, perguntado por PaulinhaBela, 1 ano atrás

Boa noite, alguém ai entende de modelo entidade relacionamento de banco de dados para me ajudar neste exerício ?

Anexos:

Soluções para a tarefa

Respondido por bokomoko
0
Primeira coisa que observamos nesse modelo de dados é que ele sofre influencia de programação orientada a objetos. 

Observe que a tabela de "PeSSoa" contém dados de pessoas. Já as tabelas de clientes e de vendedores são como classes filhas da classe Pessoa, com atributos específicos para ser cliente e/ou ser vendedor. 

Entao nesse modelo a tabela de pessoa indica apenas que a pessoa existe.

Se ela for um cliente, ela estará na tabela de clientes.
Se ela for vendedor, ela estará na tabela de vendedor. Inteligentemente, a pessoa pode ser cliente, pode ser vendedor, pode ser as duas coisas e pode ser nenhuma delas :)

A tabela de venda registra a venda feita a um cliente por um vendedor, registrando a data, o valor , quem vendeu, quem comprou. A tabela permite que o vendedor venda para ele mesmo :) Isso é totalmente plausível. Por outro lado, a tabela de venda permite registrar várias vendas no mesmo dia para o mesmo cliente. Também totalmente plausível.

Uma venda feita para um cliente pode ter vários produto (1 :venda n:produtos), cada item vendido com sua quantidade e preço. Assim é possível ter  várias vendas por cliente e cada venda com vários ítens distintos.

Para se obter a venda total de um produto, basta somar as quantidades vendidas presentes na tabela venda_produto. assim

select
   idproduto,
   sum(quantidade) as QtdeVendida,
   sum(total_item) as ValorVendido
from Venda_produto
group by idproduto;

Uma query numa tabela só. 

Se quisermos selecionar por período temos que relacionar essa tabela com a tabela de venda pois nela é que tem a data da venda. Assim

select 
   vp.idproduto, 
   sum(vp.quantidade) as QtdeVendida, 
   sum(vp.total_item) as ValorVendido 
from Venda_produto vp, venda v 
where v.idvenda = vp.idvenda  /* para fazer o join */ 
and v.data_venda between ('01-03-2018') and ('31-03-2018') 
group by idproduto;

No exemplo, as vendas totalizadas por clientes no mês de março. As constantes de data estao num formato genérico pois tais formatos mudam de sgbd para sgbd (Oracle, sql server, postgresql, mysql, etc). A sintaxe pode ser um tiquinho diferente.


Perguntas interessantes