- Terceira forma normal
A Terceira forma normal vem
para eliminar redundância codependente ou relativa. Quando
se tem
duas informações em uma tabela que são diretamente dependentes uma
da outra,
considera-se uma agregação de informação redundante.
Isso é considerado, em palavras
mais funcionais, desperdício de
processamento e espaço, pois quando se fala de
aplicações que vão
exigir do seu servidor de banco de dados um grande trafego, logo
começa a se perceber o impacto do desperdício que foi causado pelo
uso desnecessário
do método correto de arquivamento. Nesses casos,
a terceira forma normal, orienta uma
forma mais eficiente e funcional
de armazenamento dos dados por meio da criação de uma
nova tabela e
referenciá-la na primeira tabela por meio de uma chave estrangeira,
que é a
chave primaria de uma tabela que contem informações que
poderão ser usadas por mais
de uma entidade que está em outra
tabela, o que diminui a quantidade de informações
geradas e
padroniza de maneira funcional os dados a serem usados no banco de
dados.
Exemplo prático
Tabela “colaboradores”
id_colaborador
|
nome_colaborador
|
cargo_colaborador
|
area_colaborador
|
sexo_colaborador
|
1
|
João
Miguel
|
Faxineiro
|
Serviços
Gerais
|
M
|
2
|
Joaquim
Mineiro
|
Copeiro
|
Serviços
Gerais
|
M
|
3
|
José
da Silva
|
Aux.
Administrativo
|
Administrativo
|
M
|
4
|
Maria
dos Santos
|
Copeiro
|
Serviços
Gerais
|
F
|
5
|
Miguel
Paulista
|
Aux.
Administrativo
|
Administrativo
|
M
|
6
|
Solange
Pereira
|
Faxineiro
|
Serviços
Gerais
|
F
|
7
|
Marta
João
|
Copeiro
|
Serviços
Gerais
|
F
|
Podemos ver claramente que,
nessa tabela, o “cargo_colaborador”, é diretamente
dependente da
“area_colaborador”. Quando isso acontece, temos informações
repetidas na
tabela que poderiam ser evitadas, e também podem
ocorrer erros de grafia no momento de
inserir as informações. O que
pode gerar uma falha na consulta, por exemplo.
id_colaborador
|
nome_colaborador
|
cargo_colaborador
|
area_colaborador
|
sexo_colaborador
|
1
|
João
Miguel
|
Faxineiro
|
Serviços
Gerais
|
M
|
2
|
Joaquim
Mineiro
|
Copeiro
|
Serviços
Gerais
|
M
|
3
|
José
da Silva
|
Aux.
Escritório
|
Administrabivo
|
M
|
4
|
Maria
dos Santos
|
Copeiro
|
Serviços
Gerais
|
F
|
5
|
Miguel
Paulista
|
Aux.
Escritório
|
Administrativo
|
M
|
6
|
Solange
Pereira
|
Faxineieo
|
Serviços
Gerais
|
F
|
7
|
Marta
João
|
Copeiro
|
Serviços
Gerais
|
F
|
Suponhamos fazer uma pesquisa
nessa tabela para listar todos os funcionários que são da
categoria
“Faxineiro” cadastrados nessa tabela, ele só vai me retornar o
“João Miguel”, pois
a “Solange Pereira” está cadastrada
como “Faixineio” erroneamente.
Imagine uma situação em que
se colocaremos essas informações em uma tabela
separada. Criamos
uma tabela chamada “cargos” e nela colocamos as informações que
estão sendo redundantes para nós.
Tabela “Cargos”
id_cargo
|
nome_cargo
|
area_cargo
|
1
|
Faxineiro
|
Serviços
Gerais
|
2
|
Copeiro
|
Serviços
Gerais
|
3
|
Aux.
Escritório
|
Administrativo
|
Observe que ainda temos
informações redundantes no campo “area_cargo”, podemos fazer
uma terceira tabela chamada “Areas” para melhorarmos a
padronização do nosso banco.
Tabela “Areas”
id_area
|
nome_area
|
1
|
Serviços
Gerais
|
2
|
Administrativo
|
Agora o banco vai ficar assim:
Tabela “Areas”
id_area
|
nome_area
|
1
|
Serviços
Gerais
|
2
|
Administrativo
|
Tabela “Cargos”
id_cargo
|
nome_cargo
|
fk_id_area
|
1
|
Faxineiro
|
1
|
2
|
Copeiro
|
1
|
3
|
Aux.
Escritório
|
2
|
Tabela “colaboradores”
id_colaborador
|
nome_colaborador
|
fk_id_cargo
|
sexo_colaborador
|
1
|
João
Miguel
|
1
|
M
|
2
|
Joaquim
Mineiro
|
2
|
M
|
3
|
José
da Silva
|
3
|
M
|
4
|
Maria
dos Santos
|
2
|
F
|
5
|
Miguel
Paulista
|
3
|
M
|
6
|
Solange
Pereira
|
1
|
F
|
7
|
Marta
João
|
2
|
F
|
Nenhum comentário:
Postar um comentário