logo

Terceira Forma Normal (3NF)

  • Uma relação estará na 3FN se estiver na 2FN e não contiver nenhuma dependência parcial transitiva.
  • 3NF é usado para reduzir a duplicação de dados. Também é usado para alcançar a integridade dos dados.
  • Se não houver dependência transitiva para atributos não primos, então a relação deve estar na terceira forma normal.

Uma relação está na terceira forma normal se mantém pelo menos uma das seguintes condições para cada dependência de função não trivial X → Y.

  1. X é uma superchave.
  2. Y é um atributo principal, ou seja, cada elemento de Y faz parte de alguma chave candidata.
  3. Exemplo:

    inteiro para string em java

    Tabela EMPLOYEE_DETAIL:

    EMP_ID EMP_NAME EMP_ZIP EMP_STATE EMP_CITY
    222 atormentar 201010 ACIMA Noida
    333 Stephan 02228 NÓS Boston
    444 E 60007 NÓS Chicago
    555 Catarina 06389 Reino Unido Norwich
    666 John 462007 Deputado Bhopal

    Superchave na tabela acima:

     {EMP_ID}, {EMP_ID, EMP_NAME}, {EMP_ID, EMP_NAME, EMP_ZIP}....so on 

    Chave candidata: {EMP_ID}

    Atributos não primos: Na tabela fornecida, todos os atributos, exceto EMP_ID, são não primos.

    Aqui, EMP_STATE e EMP_CITY dependem de EMP_ZIP e EMP_ZIP dependem de EMP_ID. Os atributos não primos (EMP_STATE, EMP_CITY) dependem transitivamente da superchave (EMP_ID). Viola a regra da terceira forma normal.

    É por isso que precisamos mover EMP_CITY e EMP_STATE para a nova tabela, com EMP_ZIP como chave primária.

    Tabela FUNCIONÁRIO:

    java objetivo
    EMP_ID EMP_NAME EMP_ZIP
    222 atormentar 201010
    333 Stephan 02228
    444 E 60007
    555 Catarina 06389
    666 John 462007

    Tabela EMPLOYEE_ZIP:

    EMP_ZIP EMP_STATE EMP_CITY
    201010 ACIMA Noida
    02228 NÓS Boston
    60007 NÓS Chicago
    06389 Reino Unido Norwich
    462007 Deputado Bhopal