SóProvas


ID
240796
Banca
FCC
Órgão
TRT - 8ª Região (PA e AP)
Ano
2010
Provas
Disciplina
Banco de Dados
Assuntos

Considere um formulário eletrônico de pedidos onde
conste o código e o nome do cliente que faz o pedido;
o número e a data do pedido; e a lista de produtos
pedidos contendo o código do produto, o nome do produto,
a quantidade pedida do produto e o valor unitário do
produto. Todos os dados serão persistidos em um SGBD
relacional, com exceção dos totais. Todos os códigos são
identificadores únicos.

Com a aplicação das formas normais (até a 3 FN) o resultado será a existência de, APENAS,

Alternativas
Comentários
  • Pensei na resposta dessa forma:

    CLIENTE
    -------------------

    Codigo
    Nome

    PEDIDO
    --------------------

    Numero
    Data

    ITEM_PEDIDO
    --------------------

    Codigo
    Codigo_Produto
    Qtd_pedida

    Produto
    -------------------

    Codigo
    Nome
    Valor_Unit.

  • Tabelas: Produtos, Pedido, Itens do Pedido, Cliente

  • "(...) pedidos onde conste o código e o nome do cliente que faz o pedido; o número e a data do pedido"

    "(...) e a lista de produtos pedidos contendo o código do produto, o nome do produto, a quantidade pedida do produto e o valor unitário do produto"

    Um possível esquema desnormalizado seria esse:

    Pedidos ( num_pedido, data_pedido, cod_cliente, nome_cliente , Produto(cod_produto, nome_produto, quantidade, valor_unitario) )

    Note que nome_cliente não depende da chave primária num_pedido, mas está sendo determinado por cod_cliente.

    Para ficar na terceira forma normal temos que criar a tabela Cliente de forma que nome_cliente seja determinado por cod_cliente.


    Clientes ( cod_cliente, nome_cliente ) (1)

    Agora temos que nos livrar do grupo de repetição para que a tabela Pedidos fique na primeira forma normal:

    Pedidos ( num_pedido, data_pedido, cod_cliente, Produtos(cod_produto, nome_produto, quantidade, valor_unitario)  )

    Resulta em:

    Pedidos ( num_pedido, data_pedido, cod_cliente ) (2)

    Produtos(cod_produto, nome_produto,  valor_unitario)  (3)

    E por fim, uma tabela para mapear muitos para muitos entre Pedidos e Produtos.

    Pedidos_tem_Produtos ( num_pedido, num_produto, quantidade ) (4)
  • a pergunta esta mal formulada
  • Por favor, gostaria de ajuda nessa questão.

    Onde o seguinte esquema falha na 3a forma normal? Claramente o esquema não é muito bom e vai gerar redundâncias, mas onde fera a 3 FN?

    Clientes ( cod_cliente, nome_cliente )

    Produtos (cod_produto, nome_produto,  valor_unitario)

    Pedidos ( num_pedido, data_pedido, cod_cliente, prod, quantidade )

  • Henrique Teófilo,

     

    Acredito que esse esquema fere a 2FN, a partir do momento em que o campo "prod" depende de parte da chave primária da tabela Pedidos.

  • [cliente]-------1 <> n-------[pedido]

                                                |

                                                |

                                                n

                                               <>

                                                n

                                                |

                                                |

                                          [produtos]                                              

     

    O resultado seria 4 tabelas. Uma para cada entidade, e outra tabela de ligação entre pedido e produto.