Com a aplicação das formas normais (até a 3 FN) o resultado ...
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.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: C - 4 tabelas.
Para resolver esta questão, é necessário conhecer as formas normais no contexto de banco de dados relacionais. A normalização é um processo utilizado para minimizar a redundância e dependência em um banco de dados. O objetivo é estruturar o banco de dados de forma a reduzir a repetição de dados e garantir a integridade das informações.
Aplicando as formas normais até a 3ª forma normal (3FN), chegamos à seguinte organização:
- 1ª Tabela - Clientes: armazena os dados dos clientes (código e nome do cliente). A identificação única é garantida pelo código do cliente.
- 2ª Tabela - Pedidos: contém informações sobre os pedidos (número, data do pedido e código do cliente). O número do pedido é o identificador único, e há uma chave estrangeira para o código do cliente, que relaciona esta tabela à tabela de clientes.
- 3ª Tabela - Produtos: guarda os detalhes dos produtos (código do produto e nome do produto). O código do produto serve como identificador único.
- 4ª Tabela - Itens do Pedido: registra os itens específicos de cada pedido (código do produto, número do pedido, quantidade pedida e valor unitário). Esta tabela tem uma chave composta formada pelo código do produto e pelo número do pedido, assegurando a relação com as tabelas de Pedidos e Produtos.
Portanto, são necessárias quatro tabelas para atender aos critérios de normalização até a 3FN, eliminando redundâncias e garantindo a integridade referencial. As tabelas se relacionam através de chaves estrangeiras, que são essenciais para a integração dos dados entre elas.
Essa estrutura permite que as informações sejam armazenadas sem redundância de dados, onde cada tabela contém dados apenas sobre uma entidade e suas relações são mantidas por meio de chaves estrangeiras.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
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
"(...) 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)
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 )
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo