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

Entidade Fraca Estoque

Por qual motivo se concede a chave Cod_Editora na tabela ESTOQUE, se ela já possui o Cod_Livro? Através deste poderia ser identificado a editora, certo? Já que na tabela LIVRO já está a Cod_Editora, ao se referenciar um livro, podemos identificar sua editora.

2 respostas
solução!

Kevin, a princípio também não vejo necessidade. Como bem você disse, como a tabela livro contém a chave da editora, através do relacionamento das tabelas ESTOQUE e LIVRO, podemos ter acesso as informações da editora. No entanto, no meu caso, sempre gosto de olhar o contexto dos relacionamentos entre as tabelas em relação a performance do sistema. Em determinadas situação acho interessante desnormalizar o modelo em prol do desempenho de consultas no banco.

Não conheço as regras de negócio do sistema que você está modelando, mas vamos supor que tenha uma consulta, muito utilizada, que faça o levantamento do estoque de livros, independente do título, de uma editora ou de todas as editoras.

cenário 1. Sem a chave "cod_editora" na tabela estoque. Nesse caso para levantar essa informação seria necessário realizar um JOIN entre as tabelas ESTOQUE e LIVRO para colher informações que estão na tabela ESTOQUE.

cenário 2. Com a chave "cod_editora" na tabela estoque. Bastaria ler a tabela ESTOQUE para ter acesso as informações necessárias.

Isso é apenas um exemplo. Então como dica, quando estiver modelando um sistema tenha em mente como será o acesso às informações. Algumas regras de normalização foram criadas em função da limitação de armazenamento das informações, hoje nossa maior preocupação deve ser o desempenho do sistema, principalmente em função das grandes quantidades de dados.

Perfeito Mario, obrigado pelo esclarecimento. Na minha cabeça seria como você mencionou no cenário 1. Tento deixar o menor número de campos nas tabelas, e para ter a visão geral faço um VIEW através de JOINS para chegar a tabela com todos os dados que preciso e só então realizo as consultas em cima desta tabela VIEW. Mas é bom entender que posso também desnormalizar sem a culpa de estar fazendo algo "errado" kkkkkk obrigado novamente pelo esclarecimento.