No livro que estou lendo atualmente, esta tabela é mencionada como um exemplo do que podemos fazer se uma tabela atende ao BCNF, mas ainda tem redundâncias. Em seguida, menciona que uma solução são matrizes. Mas essa tabela está mesmo no BCNF? Não há dependências funcionais de Language -> PersNr e de Programming -> PersNr. Ambos os atributos não são superchaves, pois não identificam as linhas de forma única. Então, eles quebram o BCNF na minha visão. Ou estou entendendo errado alguma coisa?
relate perguntas
-
Os índices filtrados podem ajudar a melhorar as consultas baseadas em uma hora inserida ou isso deve ser evitado?
-
Qual é a diferença entre os tipos de dados MySQL VARCHAR e TEXT?
-
É melhor armazenar os valores calculados ou recalculá-los a pedido? [duplicado]
-
Armazenar vs calcular valores agregados
-
Quais são algumas maneiras de implementar um relacionamento muitos-para-muitos em um data warehouse?
Esta tabela não está no BCNF devido às dependências funcionais
Language → PersNr
eProgramming → PersNr
.A partir da tabela, conhecer a língua como latim ou grego determina o PersNr 3002 , indica que a língua determina funcionalmente o PersNr .
Da mesma forma, conhecer a programação como Pascal ou C determina o PersNr 3002 indica que a programação determina funcionalmente o PersNr .
Uma tabela está em BCNF se, para cada dependência funcional não trivial X→Y, X deve ser uma superchave. Nesse caso, nem Language nem Programming são superchaves porque elas não identificam exclusivamente linhas na tabela.
Uma boa explicação sobre a Forma Normal de Boyce-Codd (BCNF)