SóProvas


ID
239632
Banca
CESPE / CEBRASPE
Órgão
ABIN
Ano
2010
Provas
Disciplina
Banco de Dados
Assuntos

Em determinada empresa, os produtos são oferecidos
para venda por meio de lances, que correspondem aos valores
que os clientes estão dispostos a pagar pelos produtos. Os lances
são apurados e o produto é vendido ao cliente que tiver feito a
proposta de maior valor. Como regra, cada cliente somente pode
manter um lance ativo por vez. Depois de finalizada a venda,
todos os lances são removidos da base de dados.

Considerando que o cenário descrito acima tenha sido
viabilizado com o uso de um banco de dados relacional na
terceira forma normal, julgue os itens seguintes.

O relacionamento entre as entidades produto e cliente deve ser estabelecido por meio da inclusão da chave primária da entidade produto na tabela que implementa a entidade cliente.

Alternativas
Comentários
  • ERRADO pelo seguinte motivo

    1 cliente pode dar lances em vários produtos

    1 produto pode receber lances de vários clientes.

    Portanto é um relacionamento n:m

    Nesse caso teremos uma tabela auxiliar para fazer o mapeamento de MER para ER.

    As chaves primárias de cada entidade serão alocadas na tabela do relacionamento.

  • Não, pois um cliente pode comprar vários produtos. Se fosse assim teríamos que colocar uma coluna para cada produto que o cliente comprasse.
  • O enunciado não fala nada do cliente dar lances em vários produtos, ou o cliente comprar vários produtos.

    O ponto chave da questão está em "Considerando que o cenário descrito acima tenha sido viabilizado com o uso de um banco de dados relacional na terceira forma normal"

    Se não fosse isto, o mapeamento

    Produto (cod_produto, ...)
    Cliente (..., cod_produto, valor_lance)

    Seria aceitável, considerando que "cada cliente somente pode manter um lance ativo por vez" .
    Mas as tabelas devem estar na 3FN, partindo da 1FN a 3FN:

    Porém para estar na primeira forma normal, devemos remover as tabelas aninhadas:

    Produto (cod_produto, ...)
    Cliente (cod_cliente,..., cod_produto, cod_lance)
    Lance (cod_lance, valor_lance)

    Para estar na segunda forma normal, as dependencias parciais:

    Produto (cod_produto, ...)
    Cliente (cod_cliente,...,cod_lance)
    Lance (cod_lance,cod_produto, valor_lance)

    E na terceira forma normal, as dependencias transitivas:
    Para remover a dependencia transitiva de cod_lance em Cliente, foi removido o atributo cod_lance, tornando chave primária de Lance (cod_produto, cod_cliente)

    Produto (cod_produto, ...)
    Cliente (cod_cliente,...)
    Lance (cod_produto,cod_cliente valor_lance)

    Espero que não tenha problemas na esplicação acima, e tenha ficado claro
  • Por favor, nao vamos complicar ainda mais uma questao simples:
    Pela leitura do enunciado, chega-se ao seguinte esquema conceitual:

    [cliente]0..N-------< >-------1..1[produto]

    Um cliente so pode dar 1 lance em um produto; e um produto pode ter varios lances(inclusive nenhum).

    A questao ta errada por inverter a afirmaçao, ou seja, o relacionamento entre as entidades produto e cliente deve ser estabelecido por meio da inclusão da chave primária da entidade cliente na tabela que implementa a entidade produto, como chave estrangeira, indicando o cliente q ofertou determinado lance.
  • Prezados,

    Se colocarmos na tabela cliente uma FK para produto , o cliente poderá comprar apenas um produto.
    Gabarito: ERRADO.

    Portanto a questão está errada.
  • Bruno, atente-se ao seguinte trecho: "Como regra, cada cliente somente pode manter um lance ativo por vez". Vez de que? Ora, dos produtos ofertados. Logo, infere-se que, sim, um cliente pode dar vários lances, desde que sejam em produtos diferentes.

    Inclusive, essa questão está comentada pelo Professor, que diz que(comentário incompleto, meia boca, mas melhor q nada): "Se colocarmos na tabela cliente uma FK para produto, o cliente poderá comprar apenas um produto.

    Acho que o professor deveria comentar sobre qual a solução ideal para esse caso. Nao apenas dizer q tá errada com poucos esclarecimentos.