- 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 |