Recomendado, 2024

Escolha Do Editor

Diferença entre 3NF e BCNF

A normalização é um método que remove a redundância de uma relação, minimizando assim as anomalias de inserção, exclusão e atualização que degradam o desempenho dos bancos de dados. Neste artigo, vamos diferenciar entre duas formas normais superiores, isto é, 3NF e BCNF. A diferença básica entre 3NF e BCNF é que 3NF elimina a dependência transitiva de uma relação e uma tabela para estar em BCNF, a dependência funcional trivial X-> Y em uma relação deve manter, somente se X for a superchave.

Vamos discutir as diferenças entre 3NF e BCNF com a ajuda do gráfico de comparação mostrado abaixo.

Gráfico de comparação

Base para Comparação3NFBCNF
ConceitoNenhum atributo não primo deve ser transitivamente dependente da chave do candidato.Para qualquer dependência trivial em uma relação R diga X-> Y, X deve ser uma superchave da relação R.
Dependência3NF pode ser obtido sem sacrificar todas as dependências.Dependências não podem ser preservadas no BCNF.
DecomposiçãoDecomposição sem perdas pode ser alcançada em 3NF.A decomposição sem perdas é difícil de alcançar no BCNF.

Definição de 3NF

Uma tabela ou relação é considerada na Terceira Forma Normal somente se a tabela já estiver em 2NF e não houver atributo não primo transitivamente dependente da chave candidata de uma relação.

Portanto, antes de abordar o processo de normalizar uma tabela no 3NF, permita-me discutir a chave candidata. Uma Chave Candidata é uma superchave mínima, isto é, uma superchave com atributos mínimos que podem definir todos os atributos de uma relação. Portanto, no processo de normalizar sua tabela, primeiro você reconhece a chave candidata de uma determinada relação. Os atributos que fazem parte da chave candidata são atributos principais e os atributos que não fazem parte da chave candidata são atributos não principais .

Agora se temos uma relação R (A, B, C, D, E, F) e temos seguintes dependências de função para a relação R.

Observando dependências funcionais, podemos concluir que AB é uma chave candidata para a relação R porque usando a chave AB podemos buscar o valor para todo o atributo em uma relação R. Assim , A, B se torna atributos primos, pois juntos formam a chave do candidato. Os atributos C, D, E, F tornam -se atributos não primos porque nenhum deles é parte de uma chave candidata.

A tabela está em 2NF, pois nenhum atributo não principal depende parcialmente da chave candidata

Mas, uma dependência transitiva é observada entre as dependências funcionais fornecidas, já que o atributo F não é diretamente dependente da chave candidata AB . Em vez disso, o atributo F é dependente da chave candidata AB através do atributo D. Até que o atributo D tenha algum valor que possamos alcançar para atribuir o valor de F, a partir da chave candidata AB. Caso o valor do atributo D seja NULL, nunca poderemos encontrar / pesquisar o valor de F com a ajuda da chave candidata AB. Esta é a razão pela qual a 3NF exige a remoção da dependência transitiva das relações.

Então, para remover essa dependência transitiva, precisamos dividir a relação R. Enquanto dividimos uma relação sempre colocamos a chave candidata, e todos os atributos que dependem daquela chave candidata na primeira relação. Na próxima relação dividida, vamos colocar o atributo que causa dependência transitiva e também os atributos que dependem dela na segunda relação.

Agora, as tabelas R1 e R2 estão em 3NF, pois não há dependências parciais e transitivas restantes. A relação R1 (A, B, C, D, E) tem uma chave candidata AB, enquanto que a relação R2 (D, E) tem D como sua chave candidata.

Definição de BCNF

O BCNF é considerado o mais forte que 3NF. A relação R para estar em BCNF deve estar em 3NF . E onde quer que uma dependência funcional não-trivial A -> B detenha em relação a R, então A deve ser uma superchave de relação R. Como sabemos, Super chave é uma chave que possui um único atributo ou conjunto de atributos que determina atributos de uma relação.

Agora, vamos passar para um exemplo para entender melhor o BCNF. Vamos supor que tenhamos uma relação R (A, B, C, D, F), que tem as seguintes dependências funcionais.

Ao observar a relação R, podemos dizer que A e BF são chaves candidatas da relação R, pois somente elas podem buscar o valor para todos os atributos na relação R. Assim , A, B, F são os atributos primos enquanto, C e D são atributos não primos . Nenhuma dependência transitiva é observada nas dependências funcionais presentes acima. Portanto, a tabela R está em 3NF.

Mas uma dependência funcional, isto é, D -> F está violando a definição de BCNF, segundo a qual, se D -> F existir, então D deveria ser a super - chave, o que não é o caso aqui. Então vamos dividir a relação R.

Agora, as tabelas R1 e R2 estão em BCNF. Relação R1 tem duas chaves candidatas A e B, a dependência funcional trivial de R1, ou seja, A-> BCD e B-> ACD, segure BCNF como A e B são as super-chaves para relação. A relação R2 tem D como sua chave candidata e a dependência funcional D -> F também é válida para BCNF, já que D é uma Super-chave.

Principais diferenças entre 3NF e BCNF

  1. 3NF afirma que nenhum atributo não primo deve ser dependente transitivamente da chave candidata da relação. Por outro lado, o BCNF afirma que, se existir uma dependência funcional trivial X -> Y para uma relação; então X deve ser uma superchave.
  2. 3NF pode ser obtido sem sacrificar a dependência da relação. No entanto, a dependência pode não ser preservada ao obter o BCNF.
  3. O 3NF pode ser obtido sem perder qualquer informação da tabela antiga, enquanto, ao obter BCNF, podemos perder algumas informações da tabela antiga.

Conclusão:

O BCNF é muito restritivo que o 3NF, o que ajuda a normalizar mais a mesa. A relação no 3NF tem uma redundância mínima, que é removida pelo BCNF.

Top