Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Identificando dependência parcial

Olá pessoal, espero que estejam todos bem!

Venho através deste post, mais tirar uma dúvida ou talvez dar uma sugestão!

No exercício proposto: Atualmente, a tabela de produtos contém as seguintes colunas: ProdutoID, NomeProduto, Categoria, Preço, FornecedorID, NomeFornecedor, seu objetivo é aplicar a segunda forma normal (2FN) para eliminar dependências parciais e melhorar a eficiência do banco de dados.

De todas as resposta que mais fica próxima da certa é criar duas tabelas. Produtos e Fornecedores, pois desta forma limita-se as dependências, no entanto ainda há uma dependência na tabela produtos que seria Categoria. Neste caso para fins didáticos, não seria interessante realizar uma correção na resposta? Por quê? A manutenção das tuplas em relação a coluna Categoria ficaria inviável, levando em conta um cenário de e-commerce por exemplo!

Desta forma teríamos uma resposta semelhante à: Produtos(ProdutoID, NomeProduto, CategoriaID, Preço, FornecedorID) Categoria(CategoriaID, Nome) Fornecedores(FornecedorID, NomeFornecedor, TelefoneFornecedor)

Meu entendimento está correto?

2 respostas
solução!

Oi, Vitor! Tudo bem com você?

A ideia principal da Segunda Forma Normal (2FN) é eliminar dependências parciais, ou seja, garantir que todos os atributos não-chave dependam completamente da chave primária. No caso do exercício, a chave primária da tabela "Produtos" seria o ProdutoID, e os atributos como NomeProduto, Categoria, Preço dependem diretamente dessa chave.

Na resposta A, ao dividir a tabela original em "Produtos" e "Fornecedores", já eliminamos uma dependência que havia entre os atributos do fornecedor (como NomeFornecedor e TelefoneFornecedor) e a chave da tabela de produtos. Assim, cada fornecedor agora tem seus dados em uma tabela própria, o que atende à 2FN.

No entanto, você fez uma observação importante: a coluna Categoria pode introduzir redundância se for mantida diretamente na tabela de produtos, principalmente em um cenário de e-commerce onde muitos produtos podem compartilhar a mesma categoria. Isso poderia, com o tempo, aumentar a quantidade de dados repetidos (como o nome da categoria), afetando a eficiência do banco de dados. Para melhorar esse ponto, realmente uma abordagem válida é criar uma terceira tabela para "Categorias", algo como:

  • Produtos(ProdutoID, NomeProduto, CategoriaID, Preço, FornecedorID)
  • Categorias(CategoriaID, Nome)
  • Fornecedores(FornecedorID, NomeFornecedor, TelefoneFornecedor)

Essa abordagem está tecnicamente correta e representa uma terceira forma normal (3FN), que vai além da 2FN. Na 3FN, além de eliminar dependências parciais, também eliminamos dependências transitivas, como a de Categoria que pode ser normalizada com a criação da tabela "Categorias".

Em resumo, do ponto de vista didático, a resposta dada no exercício (opção A) já atende aos requisitos da 2FN, pois elimina as dependências parciais entre produtos e fornecedores. Mas sua sugestão de normalizar a categoria é ideal em termos de espaço e manutenção no longo prazo, e seria uma aplicação da 3FN que você verá na próxima aula do curso.

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado

Ei Rafael, obrigado pelo retorno!