aula5 normalização

59
Normalização

Upload: matias-silva

Post on 23-Jun-2015

313 views

Category:

Internet


4 download

DESCRIPTION

banco de dados

TRANSCRIPT

Page 1: Aula5   normalização

Normalização

Page 2: Aula5   normalização

Introdução

• O Conceito de Normalização foi introduzido por Edgar Frank Codd (E. F. Codd) em 1970, como Primeira Forma Normal - 1FN;

• Consiste em uma técnica de um Processo Matemático Formal fundamentado na Teoria dos Conjuntos;

Page 3: Aula5   normalização

Introdução• Sim, mas o que é normalização?

– Processo Matemático que pode-se substituir, gradativamente, um conjunto de Entidades e Relacionamentos por um outro, mais “adequado”, em relação à Anomalias de Atualização (Inclusão, Alteração e Exclusão);

• Ou seja, consiste em eliminar elementos de dados redundantes e grupos repetitivos;

Page 4: Aula5   normalização

Funções da Normalização• Analisar tabelas e organizá-las de forma que a sua

estrutura seja simples, relacional e estável, para que o gerenciamento possa ser também simples, eficiente e seguro.

• Evitar a perda e a repetição da informação e atingir uma forma de representação adequada para o que se deseja armazenar.

• Oferecer mecanismos para analisar o projeto do banco de dados de forma que se possa identificar os erros e corrigi-los.

Page 5: Aula5   normalização

Motivação

• Problemas comuns mais encontrados em tabelas:– Redundância de dados (repetição);

– Perda de dados (inconsistência);

– Representação de certos dados de forma incorreta.

Page 6: Aula5   normalização

• Basicamente, é a aplicação de cinco regras, porém na maioria dos casos apenas 3 já são suficientes para possuir uma estrutura organizada;

Page 7: Aula5   normalização

Entendendo...o processo básico• Quando uma tabela não atende ao critério

de uma forma normal, sua estrutura é redesenhada através da projeção (eliminação) de alguns atributos;

• Juntamente com a construção de novas tabelas;– Onde algum atributo é incluído para que se

possa refazer o conteúdo da tabela original através da junção (reunir) das tabelas resultantes.

Page 8: Aula5   normalização

Porque usar Normalização?• A normalização é feita, através da análise dos

dados que compõem as estruturas utilizando o conceito chamado "Formas Normais (FN)".

• As FN são conjuntos de restrições nos quais os dados devem satisfazê-las.

• Exemplo pode-se dizer que a estrutura está na primeira forma normal (1FN), se os dados que a compõem satisfizerem as restrições definidas para esta forma normal.

Page 9: Aula5   normalização

HABILIDADES-ESPORTIVAS Identidade Nome Endereço Habilidade 8795835 Édson Arantes Ponta da Praia Futebol 8795835 Édson Arantes Ponta da Praia Voleibol 8795835 Édson Arantes Ponta da Praia Basquete 8795835 Édson Arantes Ponta da Praia Atletismo 8795835 Édson Arantes Ponta da Praia Tênis

Esta tabela está bem projetada?

Page 10: Aula5   normalização

1) Se Pelé mudar de endereço? HABILIDADES-ESPORTIVAS Identidade Nome Endereço Habilidade 8795835 Édson Arantes Ponta da Praia Futebol 8795835 Édson Arantes Ponta da Praia Voleibol 8795835 Édson Arantes Ponta da Praia Basquete 8795835 Édson Arantes Ponta da Praia Atletismo 8795835 Édson Arantes Ponta da Praia Tênis

1) (anomalia de atualização)

Page 11: Aula5   normalização

2) E se quisermos atribuir um novo esporte para Pelé ?

HABILIDADES-ESPORTIVAS Identidade Nome Endereço Habilidade 8795835 Édson Arantes Ponta da Praia Futebol 8795835 Édson Arantes Ponta da Praia Voleibol 8795835 Édson Arantes Ponta da Praia Basquete 8795835 Édson Arantes Ponta da Praia Atletismo 8795835 Édson Arantes Ponta da Praia Tênis 2) (anomalia de inclusão)

Page 12: Aula5   normalização

3) Como fazer para retirar Pelé do Banco de Dados?

HABILIDADES-ESPORTIVAS Identidade Nome Endereço Habilidade 8795835 Édson Arantes Ponta da Praia Futebol 8795835 Édson Arantes Ponta da Praia Voleibol 8795835 Édson Arantes Ponta da Praia Basquete 8795835 Édson Arantes Ponta da Praia Atletismo 8795835 Édson Arantes Ponta da Praia Tênis

3) (anomalia de remoção)

Page 13: Aula5   normalização

Idealmente:

HABILIDADES-ESPORTIVAS Identidade Nome Endereço Habilidade

8795835 Édson Arantes Ponta da Praia

{Futebol,

Voleibol, Basquete, Atletismo, Tênis}

Mas isto não é uma tabela (atributo habilidade não é atômico)! O que é possível fazer, dentro do modelo relacional?

Page 14: Aula5   normalização

Qualidade de Esquemas Relacionais: Normalização

ESPORTISTAS Identidade Nome Endereço

8795835 Édson Arantes Ponta da Praia ... ... ...

Habilidade Esporte 287 Futebol 398 Voleibol 235 Basquetebol 129 Atletismo 458 Tênis

HABILIDADES

Esporte_Esportista Habilidade Identidade 2547 287 8795835 3146 398 8795835

5329 235 8795835 9874 129 8795835 6213 458 8795835

Esporte_Esportista

Page 15: Aula5   normalização

Vejamos agora este outro exemplo

Page 16: Aula5   normalização

Problemas apresentados• Atualização:

– Uma mudança na descrição da peça BT04 requer várias mudanças;

• Inconsistência:– Não há nada no projeto impedindo que a peça

BT04 tenha duas ou mais descrições diferentes no BD.

Page 17: Aula5   normalização

Problemas apresentados• Inclusão:

– Obs: chave primária nro_ped + nro_peça – A inserção de uma nova peça sem um pedido

correspondente causa problema;

• Remoção:– Se o pedido de numero 1000 fosse eliminado do BD,

seria perdida a informação de que a peça AX12 é chamada bicicleta;

• Como resolver??

Page 18: Aula5   normalização

Através dos Processos de Normalização

• Inicia-se com uma relação ou coleção de relações;

• Produz-se uma nova coleção de relações;

– Equivalente a coleção original, pois ela deve representar a mesma informação;

• Isso ajudará a ficarmos livre de problemas!?

Page 19: Aula5   normalização

Primeira Forma Normal (1FN)

• Uma relação está na 1FN se:– Cada atributo contém apenas valores atômicos.– Ou seja, devemos remover os elementos

repetitivos;• Com isso, não há conjuntos de atributos

repetidos descrevendo a mesma característica;

ALUNOCURSO    

NOME CPF CURSOS

Artur 123456789 Programador

Ana 222222222 Operador, Programador

Carlos 222333444 Analista, Programador, Operador

Paulo 555666777 Operador, Analista

Page 20: Aula5   normalização

Primeira Forma Normal (1FN)

ALUNOCURSO    

NOME CPF CURSO1 CURSO2 CURSO3

Artur 123456789 Programador    

Ana 222222222 Operador Programador  

Carlos 222333444 Analista Programador Operador

Paulo 555666777 Operador Analista  

São repetidos atributos do mesmo tipo, curso1, curso2, curso3.

(Diz-se que a relação tem um grupo repetitivo)

Page 21: Aula5   normalização

Primeira Forma Normal (1FN)

ALUNOCURSO    

NOME CPF CURSO

Artur 123456789 Programador

Ana 222222222 Operador

Ana 222222222 Programador

Carlos 222333444 Analista

Carlos 222333444 Programador

Carlos 222333444 Operador

Paulo 555666777 Operador

Qual a desvantagem?

Modelagem adequada:

Page 22: Aula5   normalização

Exemplo

Ex.: Empregado Matrí cula

Nome Cod Cargo

NomeCargo CodProj DataFim Horas

120 João 1 Programador 01 17/07/95 37 120 João 1 Programador 08 12/01/96 12 121 Hélio 1 Programador 01 17/07/95 45 121 Hélio 1 Programador 08 12/01/96 21 121 Hélio 1 Programador 12 21/03/96 107 270 Gabriel 2 Analista 08 12/01/96 10 270 Gabriel 2 Analista 12 21/03/96 38 273 Silva 3 Projetista 01 17/07/95 22 274 Abraão 2 Analista 12 21/03/96 31 279 Carla 1 Programador 01 17/07/96 27 279 Carla 1 Programador 08 12/01/96 20 279 Carla 1 Programador 12 21/03/96 51 301 Ana 1 Programador 12 21/03/96 16 306 Manoel 3 Projetista 17 21/03/96 67

Page 23: Aula5   normalização

• A chave primária para a tabela empregados é (Matrícula,CodProj)

• Vimos que um dos objetivos da normalização é diminuir a redundância de dados, porém com a tabela anterior aumentamos a redundância ?!?!

• Precisamos realizar outros passos de normalização para termos um bom projeto.

• A 1FN possui características indesejáveis!

Page 24: Aula5   normalização

Anomalias da 1FN• Inserção: não podemos inserir um

empregado sem que este esteja alocado num projeto, nem um projeto sem que haja um empregado trabalhando nele (integridade de entidade).

Page 25: Aula5   normalização

Anomalias da 1FN• Remoção: se precisarmos remover um

projeto, as informações de empregados que estiverem lotados apenas naquele projeto serão perdidas.

• Atualização: se um empregado for promovido de cargo teremos que atualizar os atributos CodCargo e NomeCargo em todas as tuplas nas quais aquele empregado está presente.

Page 26: Aula5   normalização

Conclusões• A 1FN serve para evitar que se tenha que reservar

espaços para armazenar dados múltiplos;

• Uma tabela em 1FN não evita, porém, anomalias de inclusão, atualização, e remoção.

• É preciso uma normalização mais “fina” , ou outras formas normais:– Segunda Forma Normal (2FN)– Terceira Forma Normal (3FN)

Page 27: Aula5   normalização

• Para normalizar para a 1FN deve-se:– P/ Atributos Compostos:

• Cada um dos atributos compostos (ou não atômicos) devem ser "divididos" em seus atributos componentes;

– P/ Atributos Multi-valorados:• Quando a quantidade de valores for pequena e conhecida a

priori, substitui-se o atributo multivalorado por um conjunto de atributos de mesmo domínio, cada um monovalorado representando uma ocorrência do valor.

• Quando a quantidade de valores for muito variável, desconhecida ou grande, retira-se da relação o atributo multivalorado, e cria-se uma nova relação que tem o mesmo conjunto de atributos chave, mais o atributo multivalorado também como chave e monovalorado.

Page 28: Aula5   normalização
Page 29: Aula5   normalização

• Uma relação está na Segunda Forma Normal (2FN) quando:– Estiver na Primeira Forma Normal e;– Todos os atributos que não participam da chave

primária são dependentes funcionalmente (diretos ou transitivos) de toda a chave primária.

• Certo, beleza, mas o que é dependência funcional?

Page 30: Aula5   normalização

Dependências Funcionais

• O Modelo Relacional pegou emprestado da teoria de funções da matemática o conceito de dependência funcional.

• Existem dois tipos:– Direta; e– Transitiva;

• Vejamos a princípio a Direta;– Para entender é fácil, vejamos na própria

teoria dos conjuntos:

Page 31: Aula5   normalização

• Considerando os seguintes conjuntos:

• Observe que existe uma dependência entre os valores dos conjuntos, que pode ser expressa pela função f(x) = x + 10, ou seja:– y é função de x (y = f(x)

= x + 10)

Page 32: Aula5   normalização

• Agora, observe os conjuntos e veja que existe uma dependência entre os valores de forma que pode ser expressa pela função f(CPF)=nome.

Page 33: Aula5   normalização

• Ou seja, nome é função do CPF;– Se eu tiver um número de CPF, poderei

encontrar o nome da pessoa correspondente.• Esta dependência é expressa no Modelo

Relacional da seguinte maneira:– CPF -> NOME

• Leia-se a notação acima das seguintes maneiras:– Com um número de CPF eu posso encontrar o

nome da pessoa, ou ainda:– Nome depende funcionalmente do CPF ou CPF

funcionalmente determina nome;

Page 34: Aula5   normalização

• Uma relação está na segunda forma normal quando duas condições são satisfeitas:– A relação estiver na primeira forma normal;– Todos os atributos que não fazem parte da chave

dependerem funcionalmente de toda a chave primária, ou seja, nenhum de seus atributos possuírem dependência parcial.

Page 35: Aula5   normalização

• Observe a relação abaixo:– BOLETIM = {matricula-aluno, codigo-materia,

numero-prova, nota, data-da-prova, nome-aluno, endereço-aluno, nome-materia}

• Fazendo a análise da dependência funcional de cada atributo, chegamos às seguintes dependências funcionais:

Page 36: Aula5   normalização

• matricula-aluno, codigo-materia, numero-prova -> nota

• codigo-materia, numero-prova -> data-da-prova

• matricula-aluno -> nome-aluno, endereço-aluno

• codigo-materia -> nome-materia

Page 37: Aula5   normalização

• Concluímos então que apenas o atributo não chave nota depende totalmente de toda chave primária.

• Para que toda a relação seja passada para a segunda forma normal, deve-se criar novas relações, agrupando os atributos de acordo com suas dependências funcionais:

Page 38: Aula5   normalização

• BOLETIM = {matricula-aluno, codigo-materia, numero-prova, nota}

• PROVA = {codigo-materia, numero-prova, data-da-prova}

• ALUNO = {matricula-aluno, nome-aluno, endereço-aluno}

• MATERIA = {codigo-materia, nome-materia}

• O nome das novas relações deve ser escolhido de acordo com a chave.

Page 39: Aula5   normalização

• Para normalizar para a 2FN deve-se:– Verificar os grupos de atributos que dependem

da mesma parte da chave;– Retirar da relação todos os atributos de um

desses grupos;– Criar uma nova relação, que contem esse

grupo como atributo não chave, e os atributos que determinam esse grupo como chave;

– Repetir estes procedimentos para cada grupo, até que todas as relações somente contenham atributos que dependam de toda a chave primária.

Page 40: Aula5   normalização
Page 41: Aula5   normalização

• Um relação é considerada estar na Terceira Forma Normal (3FN), quando:– Estiver na Segunda Forma Normal e;– Todos os atributos que não participam da chave

primária são dependentes não transitivos de toda a chave primária.

• Certo, beleza, filé, mas o que é dependência transitiva?

Page 42: Aula5   normalização

• Acontece quando um atributo possuir dependência funcional a outro que não pertence à chave primária.

Page 43: Aula5   normalização

• Exemplo 1:– Cidade -> Estado (cidade determina estado)– Estado -> País (estado determina país)– Cidade -> País (então cidade determina país

de forma transitiva)

• Exemplo 2:– Escola -> Turma (escola determina turma);– Turma -> Aluno (turma determina o aluno);– Aluno -> Escola (logicamente, aluno determina

escola de forma transitiva);

Page 44: Aula5   normalização

• Uma relação está na terceira forma normal quando duas condições forem satisfeitas:– A relação estiver na segunda forma normal; e– Não existir dependência transitiva, ou seja,

nenhum dos atributos não chave depende de outro também não chave;

Page 45: Aula5   normalização

• Observe a relação abaixo:

– PEDIDO = {numero-pedido, codigo-cliente, data-pedido, nome-cliente,codigo-cidade-cliente, nome-cidade-cliente}

• Retire as dependências funcionais:

Page 46: Aula5   normalização

• Fazendo a análise da dependência funcional de cada atributo, chegamos às seguintes dependências funcionais:– numero-pedido -> codigo-cliente – numero-pedido -> data-pedido – codigo-cliente -> nome-cliente – codigo-cliente -> codigo-cidade-cliente – codigo-cidade-cliente -> nome-cidade-cliente

Page 47: Aula5   normalização

• Concluímos então que apenas os atributos codigo-cliente e data-pedido dependem não transitivamente de toda chave primária.

• Observe que:– numero-pedido -> codigo-cliente -> nome-

cliente

– numero-pedido -> codigo-cliente -> codigo-cidade-cliente

– numero-pedido -> codigo-cliente -> codigo-cidade-cliente -> nome-cidade-cliente

Page 48: Aula5   normalização

• Isto é dependência transitiva!• Devemos resolver inicialmente as

dependências mais simples, criando uma nova relação onde codigo-cliente seja a chave;– o codigo-cliente continuará na relação PEDIDO

como atributo não chave, porém, os atributos que dependem dele devem ser transferidos para a nova relação:

Page 49: Aula5   normalização

• PEDIDO = {numero-pedido, codigo-cliente, data-pedido}

• CLIENTE = {codigo-cliente, nome-cliente, codigo-cidade-cliente, nome-cidade-cliente}

• As dependências transitivas da relação PEDIDO foram eliminadas, porém ainda devemos analisar a nova relação CLIENTE:

Page 50: Aula5   normalização

• codigo-cliente -> codigo-cidade-cliente -> nome-cidade-cliente

• Observe que o nome-cidade-cliente continua com uma dependência transitiva, vamos resolvê-la da mesma maneira :

Page 51: Aula5   normalização

• PEDIDO = {numero-pedido, codigo-cliente, data-pedido}

• CLIENTE = {codigo-cliente, nome-cliente, codigo-cidade-cliente}

• CIDADE = {codigo-cidade-cliente, nome-cidade-cliente}

• Lembre-se: o nome das novas relações deve ser escolhido de acordo com a chave.

Page 52: Aula5   normalização

• Para Normalizar para a Terceira Forma Normal deve-se:– Verificar um grupo de atributo que depende

não diretamente da chave;– Retirar da relação esse grupo de atributos;– Criar uma nova relação que contem esse grupo

de atributos, e defina com chave, os atributos dos quais esse grupo depende diretamente;

– Repetir os passos anteriores até que todos os atributos restantes na relação original dependam diretamente de toda a chave primária.

Page 53: Aula5   normalização

• 4FN:– Uma relação está na Quarta Forma Normal

(4FN) quando:• Não possuir dois ou mais Atributos multi-valorados

independentes;

– Para Normalizar para a Quarta Forma Normal deve-se :

• Colocar cada atributo multi-valorado em uma relação, como na 1FN (b2);

– Observação: Para se verificar a 4FN a relação deve ter no mínimo três atributos;

Page 54: Aula5   normalização

• Nome ->-> Disciplina:– Cada professor

pode ministrar várias disciplinas;

• Nome ->-> Orientado:– Cada professor

pode orientar vários alunos;

Page 55: Aula5   normalização
Page 56: Aula5   normalização

• 5FN:– O conjunto de relações do BD está na Quinta

Forma Normal (5FN) quando:• Dado o conjunto de multi-dependências funcionais

do BD, não se estabelece um ciclo de multi-dependência entre pelo menos 3 atributos, ou os Atributos de um ciclo estão na mesma relação.

– Para Normalizar para a Quinta Forma Normal deve-se :

• Colocar todos os atributo multi-valorado que pertencem à um mesmo ciclo em uma relação.

Page 57: Aula5   normalização

• Nome ->-> Disciplina:– Cada professor pode

ministrar várias disciplinas• Nome ->-> Apostila:

– Um grupo de professor pode elaborar uma apostila

• Disciplina ->-> Apostila:– Cada disciplina pode ter

um certo número de apostilas

• Apostila ->-> Nome:– Cada apostila pode ser

elaborada por vários professores

Page 58: Aula5   normalização
Page 59: Aula5   normalização

• O processo de normalização é aplicado em uma relação por vez. • Durante o processo a relação vai sendo "quebrada", criando-se

outras relações. • Geralmente o processo de normalização é realizado em etapas

começando através das formas normais menos rígidas, e depois através de refinamentos sucessivos, chegar até uma normalização considerada satisfatória para a aplicação.

• A decisão de normalizar ou não uma relação é um compromisso entre garantir a eliminação de inconsistências no BD e alcançar a eficiência de acesso.

• A normalização para formas apoiadas em dependências funcionais evita inconsistências, usando para isso a própria construção do BD.

• Se a mesma consistência puder ser garantida pelos aplicativos, a normalização correspondente não precisa ser realizada.