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ção | 3NF | BCNF |
---|---|---|
Conceito | Nenhum 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ência | 3NF pode ser obtido sem sacrificar todas as dependências. | Dependências não podem ser preservadas no BCNF. |
Decomposição | Decomposiçã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.
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.
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.
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.
Principais diferenças entre 3NF e BCNF
- 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.
- 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.
- 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.