You are on page 1of 21

Formas Normais

Wendel Melo
Faculdade de Computação
Universidade Federal de Uberlândia

Banco de Dados I
Normalização
• Processo a partir do qual se aplicam regras à todas
as relações (tabelas) de um esquema relacional.

• O objetivo é certificar que o esquema satisfaz certa


forma normal.
Normalização
• Vantagens:

– Melhor organização dos dados;

– Garante relações sem redundância desnecessária;

– Tende a oferecer melhor recuperação dos dados.


Primeira Forma Normal (1FN)
• Uma relação obedece a Primeira Forma Normal
(1FN) se todos os seus atributos são simples e
monovalorados.
Primeira Forma Normal (1FN)
• Uma relação obedece a Primeira Forma Normal
(1FN) se todos os seus atributos são simples e
monovalorados.
Primeira Forma Normal (1FN)
• Uma relação obedece a Primeira Forma Normal
(1FN) se todos os seus atributos são simples e
monovalorados.

Atributo
multivalo
rado
Segunda Forma Normal (2FN)
• Atributo principal: Atributo membro de alguma chave
candidata (mínima) em uma relação.

• Atributo não principal: Atributo que não é membro de


qualquer chave candidata (mínima) em uma relação.

Pessoa( RG, CPF, Nome, DtNascimento )

Atributos Atributos não


principais principais
Segunda Forma Normal (2FN)
• Dependência funcional total: dependência funcional
X -> Y onde a remoção de qualquer atributo de X
implica que a dependência não mais se mantém.

• Dependência funcional parcial: dependência


funcional X -> Y onde existe algum atributo em X que
pode ser removido mantendo ainda sua validade.

Estado, CREA → Nome do engenheiro (DF total)


CPF, RG → Nome (DF parcial)
RG, endereço → Nome (DF parcial)
Segunda Forma Normal (2FN)
• Um esquema de Relação R está na 2FN se cada
atributo não principal de R for dependente funcional
total da chave primária de R.
Segunda Forma Normal (2FN)
PedidoInfo (nro_pedido, data, nro_peca, descricao, qtd, preco)

nro_pedido data nro_peca descricao qtd preco


1 19-03-2018 301 torneira 2 200

1 19-03-2017 704 martelo 1 55

2 21-03-2017 704 martelo 3 60


Segunda Forma Normal (2FN)
PedidoInfo (nro_pedido, data, nro_peca, descricao, qtd, preco)

nro_pedido data nro_peca descricao qtd preco


1 19-03-2018 301 torneira 2 200

1 19-03-2018 704 martelo 1 55

2 21-03-2017 704 martelo 3 60

nro_pedido → data
nro_peca → descricao
nro_pedido, nro_peca → qtd, preco
Segunda Forma Normal (2FN)
PedidoInfo (nro_pedido, data, nro_peca, descricao, qtd, preco)

nro_pedido data nro_peca descricao qtd preco


1 19-03-2018 301 torneira 2 200

1 19-03-2018 704 martelo 1 55

2 21-03-2017 704 martelo 3 60

A chave primária é composta por


nro_pedido e nro_peca
nro_pedido → data
nro_peca → descricao
Os atributos data e descricao possuem
nro_pedido, nro_peca → qtd, preco
dependência parcial da chave, o que
viola a 2FN
Segunda Forma Normal (2FN)
PedidoInfo (nro_pedido, data, nro_peca, descricao, qtd, preco)

nro_pedido data nro_peca descricao qtd preco


1 19-03-2018 301 torneira 2 200

1 19-03-2018 704 martelo 1 55

2 21-03-2017 704 martelo 3 60

Note que o fato de violar a 2FN faz com que haja redundância de informação
nos atributos data e descrição.

Para normalizar a relação para a 2FN, é necessário verificar se a chave


primária é de fato mínima. Também pode ser necessário criar relações para
os atributos que violam a norma, agrupando-os por dependência.
Segunda Forma Normal (2FN)
Antes:
PedidoInfo (nro_pedido, data, nro_peca, descricao, qtd, preco)
nro_pedido → data
nro_peca → descricao
nro_pedido, nro_peca → qtd, preco
Segunda Forma Normal (2FN)
Antes:
PedidoInfo (nro_pedido, data, nro_peca, descricao, qtd, preco)
nro_pedido → data
nro_peca → descricao
nro_pedido, nro_peca → qtd, preco
Depois:
Pedido (nro_pedido, data)

Peca (nro_peca, descricao)

PedidoInfo (nro_pedido, nro_peca, qtd, preco)


FK FK
Segunda Forma Normal (2FN)
Antes:
PedidoInfo (nro_pedido, data, nro_peca, descricao, qtd, preco)
nro_pedido → data
nro_peca → descricao
nro_pedido, nro_peca → qtd, preco
Depois:
Também foi preciso
Pedido (nro_pedido, data) ajustar as chaves
Note que as novas estrangeiras
corretamente!
relações Pedido e Peca (nro_peca, descricao)
Peca foram criadas a
partir das DF’s
PedidoInfo (nro_pedido, nro_peca, qtd, preco)
FK FK
Segunda Forma Normal (2FN)
• Assim a 2FN previne:

• O uso de atributos desnecessários na chave’


primária;

• Redundância de informação com atributos que


podem ser movidos para outras relações.
Terceira Forma Normal (3FN)
• Dependência transitiva: Uma dependência funcional
X -> Y é dita transitiva se houver um conjunto de
atributos Z que não seja chave candidata nem chave
primária tal que X -> Z e Z -> Y.

• Note que, para que haja dependência transitiva,


temos atributos não chave que são dependentes de
outros atributos não chave.
Terceira Forma Normal (3FN)
• Um esquema de relação R está na Terceira Forma
Normal (3FN) se:

• Está na 2FN;

• Nenhum atributo não principal de R for


transitivamente dependente da chave
Terceira Forma Normal (3FN)
Empregado(cpf, nome, data_nasc, id_depto, nome_depto)

cpf → id_depto nome_depto depende


id-depto → nome_depto Transitivamente da chave
Terceira Forma Normal (3FN)
Empregado(cpf, nome, data_nasc, id_depto, nome_depto)

cpf → id_depto nome_depto depende


id-depto → nome_depto Transitivamente da chave

Normalizamos separando em duas partes:


FK: Depto

Empregado(cpf, nome, data_nasc, id_depto)

Depto (id_depto, nome)

You might also like