2
respostas

3FN vs FNBC

Olá!

Ainda não consegui entender a diferença entre 3FN e FNBC. Poderiam me dar um exemplo de uma tabela que está de acordo com a 3FN mas que viola a FNBC?

Também não entendi o que seriam chaves candidatas, poderiam explicar com um exemplo, por gentileza?

Obrigada.

2 respostas

Terceira Forma Normal (3FN): A Terceira Forma Normal (3FN) é uma forma de normalização em que cada atributo de uma tabela deve depender apenas da chave primária e não de outros atributos não chave. Em outras palavras, não deve haver dependências transitivas entre os atributos não chave.

Exemplo de tabela que está em 3FN, mas viola a FNBC:

Considere a seguinte tabela de clientes:

Cliente_ID Nome Endereço Cidade 1 João Rua A São Paulo 2 Maria Rua B Rio de Janeiro 3 Ana Rua C São Paulo Nesta tabela, o atributo "Cidade" depende apenas da chave primária "Cliente_ID", então está em 3FN. No entanto, essa tabela viola a FNBC se houver múltiplas chaves candidatas que não sejam superconjuntos umas das outras. Se considerarmos que tanto "Cliente_ID" quanto "Nome" poderiam ser chaves candidatas, então a tabela violaria a FNBC.

Forma Normal de Boyce-Codd (FNBC): A Forma Normal de Boyce-Codd (FNBC) é uma forma mais restrita de normalização em que cada dependência funcional não trivial de um atributo é uma dependência funcional de uma superchave candidata. Em outras palavras, em uma tabela na FNBC, todos os atributos não chave devem depender completamente de todas as chaves candidatas e não de qualquer subconjunto delas.

Chaves Candidatas: Uma chave candidata é um conjunto mínimo de atributos que pode ser usado para identificar exclusivamente cada linha em uma tabela. Em outras palavras, é um conjunto de atributos que, quando combinados, garantem a unicidade de cada linha na tabela. Por exemplo, em uma tabela de alunos, um conjunto de atributos como {Matrícula} ou {Nome, Data de Nascimento} poderia ser uma chave candidata, desde que identifique exclusivamente cada aluno na tabela.

Olá, Gabriel!

No caso da tabela do seu exemplo, como poderíamos ajustá-la para ficar de acordo com a FNBC também?

| Cliente_ID | Nome | Endereço |Cidade|
|     1       | João | Rua A    | São Paulo|
|     2       |Maria | Rua B    | Rio de Janeiro|
|     3       | Ana  | Rua C    | São Paulo|