- 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.
- X é uma superchave.
- Y é um atributo principal, ou seja, cada elemento de Y faz parte de alguma chave candidata.
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 |