Tópico: Normalização
CONTEÚDO PROGRAMÁTICO 1FN NORMALIZAÇÃO 3FN 2FN
NORMALIZAÇÃO - CONCEITO O que é? 1) Segundo [Heuser, 2009]: o processo de normalização é: Reagrupar informações de forma a eliminar redundâncias de dados; Reagrupar informações de forma que permita a obtenção de um modelo ER O processo de normalização baseia-se no conceito de Forma Normal, que é uma regra que deve ser obedecida por uma tabela para que esta seja considerada bem projetada.
NORMALIZAÇÃO - OBJETIVOS 1) Analisar o projeto de BD, identificar problemas e fornecer métodos para corrigir os erros do projeto. 2) Os erros que podemos encontrar nos projetos de BD: Anomalias; Inabilidade de representar informações Repetição de informações
EXEMPLO DE ANOMALIAS INCLUSÃO EXCLUSÃO ALUNO (ID, NOME, END, TEL, SEXO, CURSO_ID, NM_CURSO) ALTERAÇÃO
EXEMPLO DE REDUNDÂNCIA Matric Nome Endereço Disciplina Descrição Instrutor Sala 85001 Filipe Av. das flores, 25 CP302 Banco de Dados Cirano 102 85001 Filipe Av. das flores, 25 CP303 Comunicações Netto 500 85001 Filipe Av. das flores, 25 CP304 Eng. Software Ana Price 102 86005 Lucinéia Av. das plantas, 35 CP360 Programação Cirano 1024 PROBLEMAS 1) Inserção: supondo que a chave primária seja Matric e Disciplina. Obrigatoriamente sempre será necessário o preenchimento dos 2 campos; 2) Atualização: Ao atualizar o endereço do Filipe será necessário atualizar em diversas linhas devido a redundância dos dados. 3) Exclusão: ao excluir a Lucinéia perderemos os dados da disciplina de programação
EXEMPLO: RELATÓRIO Para apresentar os conceitos usados no processo de normalização iremos partir de um relatório que possui dados não normalizados usando o processo de engenharia reversa [HEUSER, 2009] de documentos ou arquivos. Exemplo de Relatório de Locação
TABELAS NÃO NORMALIZADAS: ÑN ÑN: Uma tabela ÑN significa que ela possui tabela(s) aninhada(s) Representação ÑN (Numero_Locacao, data) (codigo_cliente, nome_cliente) (cod_fita, nome, prev_devolucao))
1FN => 1 a FORMA NORMAL Segundo [HEUSER, 2009]: 1FN: Uma tabela está na primeira forma normal se ela não possuir tabelas aninhadas. ÑN (Numero_Locacao, data, codigo_cliente, nome_cliente (Cod_fita, nome, prev_devolucao)) Passando para a primeira forma normal: 1FN (Numero_Locacao, data, codigo_cliente, nome_cliente) (Numero_Locacao,Cod_fita, nome, prev_devolucao))
DEPENDÊNCIA FUNCIONAL Conforme tabela abaixo, A2 depende da coluna A1(ou a coluna A1 determina a coluna A2) quando, em todas linhas da tabela, para cada valor de A1 que apareça na tabela, aparece o mesmo valor de A2. A 1 Código Produto A 2 E1 Arroz E3 Batata E1 Arroz E2 Milho E3 Batata E3 Batata E1 Arroz
2(FN) => 2 a FORMA NORMAL Segundo [HEUSER, 2009]: 2FN: Uma tabela está na segunda forma normal se além de estar na 1FN não possuir dependências parciais. 1FN (Numero_Locacao, data, codigo_cliente, nome_cliente) (Numero_Locacao,Cod_fita, nome, prev_devolucao) Passando para a segunda forma normal: 2FN (Numero_Locacao, data, codigo_cliente, nome_cliente) (Numero_Locacao,Cod_fita,prev_devolucao) (Cod_fita, nome)
3(FN) => 3 a FORMA NORMAL Segundo [HEUSER, 2009]: 3FN: Uma tabela está na terceira forma normal se além de estar na 2FN não possuir dependências transitivas. 2FN (Numero_Locacao, data, codigo_cliente, nome_cliente) (Numero_Locacao,Cod_fita,prev_devolucao) (Cod_fita, nome) Passando para a terceira forma normal: 3FN LOCACAO(Numero_Locacao, data, codigo_cliente) ITEM_LOCACAO(Numero_Locacao,Cod_fita,prev_devolucao) FITA(Cod_fita, nome) CLIENTE(codigo_cliente,nome_cliente)
DER na 3 a FORMA NORMAL DER MODELO RELACIONAL LOCACAO(Numero_Locacao, data, codigo_cliente) ITEM_LOCACAO(Numero_Locacao,Cod_fita,prev_devolucao) FITA(Cod_fita, nome) CLIENTE(codigo_cliente,nome_cliente)
Processo de Normalização: Mais um Exemplo NÑ (Número da Solicitação, Data da Solicitação, Código do Funcionário, Nome do Funcionário, (Cód. produto, Descrição, Quantidade)) (1FN) (Número da Solicitação, Data da Solicitação, Código do Funcionário, Nome do Funcionário) (Número da Solicitação, Cód. produto, Descrição, Quantidade) (2FN) (Número da Solicitação, Data da Solicitação, Código do Funcionário, Nome do Funcionário) (Número da Solicitação, Cód. produto, Quantidade) (Cód. produto, Descrição) Não Pode conter Dependência Parcial Não pode conter Tabelas Aninhadas (3FN) (Número da Solicitação, Data da Solicitação, Código do Funcionário) (Código do Funcionário, Nome do Funcionário) (Número da Solicitação, Cód. produto, Quantidade) (Cód. produto, Descrição) Não Pode conter Dependência Transitiva
Unidade VI: Resumindo Normalização
Referências Bibliográficas Heuser, Carlos Alberto. Projeto de banco de dados. 6 edição- Porto Alegre: Sagra Luzzato, 2009.
Obrigado... www.cruzeirodosul.edu.br Campus Liberdade R. Galvão Bueno, 868 01506-000 São Paulo SP Brasil Tel: (55 11) 3385-3000