Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
Introdução às Formas Normais
Introdução às Formas Normais
Wendel Melo
Faculdade de Computação
Universidade Federal de Uberlândia
www.facom.ufu.br/~wendelmelo
Banco de Dados I
2Introdução às Formas Normais
Normalização
• Processo a partir do qual se aplicam regras à todas as relações (tabelas) de um modelo de banco de da-dos (esquema) relacional.
• O objetivo é certificar que o modelo satisfaz certa forma normal.
• As formas normais podem ser vistas como sendo re-comendações de boas práticas para a formulação de esquemas de banco de dados relacionais
3Introdução às Formas Normais
Normalização
• Vantagens:
– Melhor organização dos dados;
– Garante relações sem redundância desnecessária;
– Tende a oferecer melhor recuperação dos dados.
4Introdução às Formas Normais
Primeira Forma Normal (1FN)
• Uma relação obedece a Primeira Forma Normal (1FN) se todos os seus atributos são simples (não compostos) e monovalorados.
5Introdução às Formas Normais
Primeira Forma Normal (1FN)
• Uma relação obedece a Primeira Forma Normal (1FN) se todos os seus atributos são simples (não compostos) e monovalorados.
Id_Cliente Nome Telefones
1 Jessica G555 1111,555 2222
2 Lucas S555 3333,555 4444,555 5555
6Introdução às Formas Normais
Primeira Forma Normal (1FN)
• Uma relação obedece a Primeira Forma Normal (1FN) se todos os seus atributos são simples (não compostos) e monovalorados.
Id_Cliente Nome Telefones
1 Jessica G555 1111,555 2222
2 Lucas S555 3333,555 4444,555 5555
Atributo multivalorado
7Introdução às Formas Normais
Primeira Forma Normal (1FN)
• A classificação de um atributo em simples ou com-posto pode depender do contexto.
• Por exemplo, o endereço, a rigor, é considerado um atributo composto, pois ainda pode ser subdividido em atributos menores (logradouro, numero, comple-mente, etc);
• Todavia, se nenhum dos subatributos de endereço for utilizado de forma isolada no contexto em ques-tão, o endereço como um todo pode ser tratado como atributo simples.
8Introdução às Formas Normais
Dependências Funcionais
• Uma dependência funcional é uma restrição entre dois conjuntos de atributos X e Y, onde os valores de X determinam exclusivamente os valores de Y.
• Representamos a dependência funcional descrita como:
X Y → Dizemos que Y é fun-cionalmente depen-dente de X
9Introdução às Formas Normais
Dependências Funcionais
• Em outras palavras, a restrição X Y afirma que, →para quaisquer duas linhas t1 e t2 de uma tabela T que apresentem t1[X] = t2[X] (o mesmo valor para X), necessariamente terão que apresentar t1[Y] = t2[Y] (o mesmo valor para Y);
• Todavia, se duas linhas t3 e t4 apresentarem t3[Y] = t4[Y], não necessariamente apresentarão t3[X] = t4[X]
10Introdução às Formas Normais
Dependências Funcionais
• Exemplo:
CEP Cidade, Estado →
• O número do CEP determina qual a cidade e o estado em questão.
• Em outras palavras, sempre que dois endereços apresentarem o mesmo CEP, necessariamente de-vem apresentar mesma Cidade e Estado.
11Introdução às Formas Normais
Dependências Funcionais
• Como certas ruas tem mais de um CEP, não pode-mos dizer que:
Logradouro, Cidade, Estado CEP→
• Existem CEP’s que se referem a cidades inteiras. As-sim, não podemos dizer que o CEP determina o lo-gradouro. Todavia, apesar de duas ruas distintas po-derem estar sob o mesmo CEP, ainda podemos dizer:
Logradouro, Numero, Cidade, Estado CEP→
12Introdução às Formas Normais
Dependências Funcionais
• Exemplo:
Estado, CREA NomeEngenheiro→
• Note que se X é chave candidata de uma tabela T, en-tão X Y é verdadeiro para qualquer subconjunto Y →de atributos de T:
• CPF Nome, DataNasc, Sexo→
13Introdução às Formas Normais
Dependências Funcionais
• O uso principal das dependências funcionais é para descrever melhor um esquema de relação R ao espe-cificar restrições sobre seus atributos que devem ser mantidas todo o tempo.
14Introdução às Formas Normais
Dependências Funcionais
• Dada a seguinte relação:
Cliente(idCliente, nome, telefone)
As seguintes dependências funcionais estão corretas?
nome telefone ?→
telefone nome ?→
idCliente nome ?→
idCliente telefone ?→
15Introdução às Formas Normais
Dependências Funcionais
• Dada a seguinte relação:
Cliente(idCliente, nome, telefone)
As seguintes dependências funcionais estão corretas?
nome telefone→
telefone nome→
idCliente nome (ok)→
idCliente telefone (ok)→
16Introdução às Formas Normais
Dependências FuncionaisDefinições:
• Dependência funcional total: dependência funcional X Y onde a remoção de qualquer atributo de X im→ -plica que a dependência não mais se mantém.
Dependência funcional parcial: dependência funcio-nal 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)
17Introdução às Formas Normais
Segunda Forma Normal (2FN)Definições:
• 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 principais
Atributos não principais
18Introdução às Formas Normais
Segunda Forma Normal (2FN)
• Um esquema de Relação R está na 2FN se cada atri-buto não principal de R for dependente funcional to-tal da chave primária de R.
• Em outras palavras, a 2FN impõe que nenhum atribu-to pode ser dependente funcional parcial da chave primária, apenas dependente funcional total.
– A exceção são atributos que são parte de alguma chave candidata.
19Introdução às Formas Normais
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
20Introdução às Formas Normais
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
nro_pedido → datanro_peca → descricaonro_pedido, nro_peca → qtd, preco
21Introdução às Formas Normais
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
nro_pedido → datanro_peca → descricaonro_pedido, nro_peca → qtd, preco
A chave primária é composta por nro_pedido e nro_peca
Os atributos data e descricao possuem dependência parcial da chave, o que viola a 2FN
22Introdução às Formas Normais
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
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.
Introdução às Formas Normais
Segunda Forma Normal (2FN)
PedidoInfo (nro_pedido, data, nro_peca, descricao, qtd, preco)
nro_pedido → datanro_peca → descricaonro_pedido, nro_peca → qtd, preco
Antes:
Introdução às Formas Normais
Segunda Forma Normal (2FN)
PedidoInfo (nro_pedido, data, nro_peca, descricao, qtd, preco)
nro_pedido → datanro_peca → descricaonro_pedido, nro_peca → qtd, preco
Pedido (nro_pedido, data)
Peca (nro_peca, descricao)
PedidoInfo (nro_pedido, nro_peca, qtd, preco)
Antes:
Depois:
FK FK
Introdução às Formas Normais
Segunda Forma Normal (2FN)
PedidoInfo (nro_pedido, data, nro_peca, descricao, qtd, preco)
nro_pedido → datanro_peca → descricaonro_pedido, nro_peca → qtd, preco
Pedido (nro_pedido, data)
Peca (nro_peca, descricao)
PedidoInfo (nro_pedido, nro_peca, qtd, preco)
Antes:
Depois:
FK FK
Note que as novas relações Pedido e Peca foram criadas a partir das DF’s
Também foi preciso ajustar as chaves estrangeiras corretamente!
Introdução às Formas Normais
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.
Introdução às Formas Normais
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.
Introdução às Formas Normais
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
Introdução às Formas Normais
Terceira Forma Normal (3FN)
Empregado(cpf, nome, data_nasc, id_depto, nome_depto)
cpf → id_depto id-depto → nome_depto
nome_depto depende Transitivamente da chave
Introdução às Formas Normais
Terceira Forma Normal (3FN)
Empregado(cpf, nome, data_nasc, id_depto, nome_depto)
cpf → id_depto id-depto → nome_depto
nome_depto depende Transitivamente da chave
Normalizamos separando em duas partes:
Empregado(cpf, nome, data_nasc, id_depto)
Depto (id_depto, nome)
FK: Depto