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
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.
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
Física,
9 meses atrás
Física,
9 meses atrás
Português,
9 meses atrás
Matemática,
1 ano atrás
Matemática,
1 ano atrás
Biologia,
1 ano atrás