logo

Forma normal de Boyce Codd (BCNF)

  • BCNF é a versão avançada do 3NF. É mais rigoroso que 3NF.
  • Uma tabela está em BCNF se toda dependência funcional X → Y, X for a superchave da tabela.
  • Para BCNF, a tabela deve estar em 3NF, e para cada FD, LHS é a superchave.

Exemplo: Suponhamos que exista uma empresa onde os funcionários trabalham em mais de um departamento.

configuração do caminho python

Tabela FUNCIONÁRIO:

EMP_ID EMP_COUNTRY EMP_DEPT DEPT_TYPE EMP_DEPT_NO
264 Índia Projetando D394 283
264 Índia Teste D394 300
364 Reino Unido Lojas D283 232
364 Reino Unido Em desenvolvimento D283 549

Na tabela acima, as dependências funcionais são as seguintes:

 EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO} 

Chave do candidato: {EMP-ID, EMP-DEPT}

A tabela não está em BCNF porque nem EMP_DEPT nem EMP_ID sozinhos são chaves.

Para converter a tabela fornecida em BCNF, nós a decompomos em três tabelas:

Tabela EMP_COUNTRY:

EMP_ID EMP_COUNTRY
264 Índia
264 Índia

Tabela EMP_DEPT:

EMP_DEPT DEPT_TYPE EMP_DEPT_NO
Projetando D394 283
Teste D394 300
Lojas D283 232
Em desenvolvimento D283 549

Tabela EMP_DEPT_MAPPING:

EMP_ID EMP_DEPT
D394 283
D394 300
D283 232
D283 549

Dependências funcionais:

 EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO} 

Chaves candidatas:

Para a primeira tabela: EMP_ID
Para a segunda tabela: EMP_DEPT
Para a terceira tabela: {EMP_ID, EMP_DEPT}

Agora, isso está no BCNF porque a parte esquerda de ambas as dependências funcionais é uma chave.