30
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

Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

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

Page 2: Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

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

Page 3: Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

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.

Page 4: Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

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.

Page 5: Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

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

Page 6: Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

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

Page 7: Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

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.

Page 8: Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

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

Page 9: Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

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]

Page 10: Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

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.

Page 11: Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

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→

Page 12: Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

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→

Page 13: Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

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.

Page 14: Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

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

Page 15: Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

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

Page 16: Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

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)

Page 17: Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

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

Page 18: Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

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.

Page 19: Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

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

Page 20: Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

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

Page 21: Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

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

Page 22: Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

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.

Page 23: Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

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:

Page 24: Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

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

Page 25: Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

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!

Page 26: Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

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.

Page 27: Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

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.

Page 28: Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

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

Page 29: Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

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

Page 30: Introdução às Formas Normais - FACOMwendelmelo/bd201802/8_introducao_formas_no… · chave candidata. Introdução às Formas Normais 19 Segunda Forma Normal (2FN) PedidoInfo (nro_pedido,

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