NORMALIZAÇÃO 1. CONCEITUAÇÃO É o processo formal, passo a passo, que examina os atributos de uma entidade, com o objetivo de evitar anomalias observadas na inclusão, exclusão e alteração de registros. Consiste em definir o formato lógico adequado para as estruturas de dados identificados no projeto lógico do sistema, com o objetivo de minimizar o espaço utilizado pelos dados e garantir a integridade e confiabilidade das informações. 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 satisfazer. 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 etapa. A normalização completa dos dados é feita, seguindo as restrições das três formas normais existentes, sendo que a passagem de uma FN para outra é feita tendo como base o resultado obtido na etapa anterior. Para realizar a normalização dos dados, é primordial que seja definido um campo chave para a estrutura, campo este que irá identificar os demais campos da estrutura. O processo de normalização conduz a um esquema de relação através de uma bateria de testes para certificar se o mesmo está na 1a, 2a e 3a Formas Normais. Estas três Formas Normais são baseadas em dependências funcionais dos atributos do esquema de relação. 2. OBJETIVOS 1º) Minimização de redundâncias e inconsistências; 2º) Facilidade de manipulações do Banco de Dados; 3º) Facilidade de manutenção do Sistema de Informações. Vamos analisar a Ficha de Pedidos abaixo: Número do Pedido CPF do Cliente Endereço do Cliente Código do Nome Produto produto do Preço Produto do Data do Pedido Nome do Cliente Telefone do Cliente Quantidade do Produto Total Produto do Total do Pedido Sabendo que não existem 2 pedidos com o mesmo número, concluímos que a Forma Não Normalizada é a seguinte: Pag 1
Modelo de Esquema de Entidades: (; data_pedido; cpf_cliente; nome_cliente; endereço_cliente; telefone_cliente; ; nome_produto; preço_produto; quantidade_produto; total_produto; total_pedido). Modelo de Layout de Entidades: data_pedido cpf_cliente nome_cliente endereço_cliente telefone_cliente nome_produto preço_produto quantidade_produto total_produto total_pedido 3. 1ª FORMA NORMAL (1FN) Consiste em retirar da estrutura os elementos repetitivos. Uma relação está na 1FN se todos os domínios básicos contiverem somente valores não repetitivos. Vamos analisar a ficha de pedidos abaixo: Procedimentos: a) Identificar a chave primária da entidade; b) Identificar o grupo repetitivo e removê-lo da entidade; c) Criar uma nova entidade com a chave primária da entidade anterior e o grupo repetitivo. A chave primária da nova entidade será obtida pela concatenação da chave primária da entidade inicial e a do grupo repetitivo. Analisando a estrutura acima, observamos que podem existir vários produtos em um único pedido, sendo portanto elementos repetitivos que deverão ser retirados. Obs. Os campos sublinhados identificam as chaves das estruturas. Como resultado desta etapa ocorre um desdobramento dos dados em duas estruturas, a saber: - Primeira estrutura - Pedidos - Dados que compõem a estrutura original, excluindo os elementos repetitivos. (; data_pedido; cpf_cliente; nome_cliente; endereço_cliente; telefone_cliente; total_pedido) Pag 2
data_pedido cpf_cliente nome_cliente endereço_cliente telefone_cliente total_pedido - Segunda estrutura - Itens do Pedido - Dados que compõem os elementos repetitivos da estrutura original, tendo como chave o campo chave da estrutura original () e o campo chave da estrutura de repetição (). (; ; nome_produto; preço_produto; quantidade_produto; total_produto) nome_produto preço_produto quantidade_produto total_produto 4) 2ª Forma Normal (2FN) Uma relação está na 2FN se e somente se ela estiver na primeira forma normal e todos os atributos não chave forem totalmente dependentes da chave primária (dependente de toda a chave e não apenas de parte dela). Consiste em retirar das estruturas que possuem chaves compostas (campo chave sendo formado por mais de um campo), os elementos que são funcionalmente dependente de parte da chave. Podemos afirmar que uma estrutura está na 2FN, se ela estiver na 1FN e não possuir campos que são funcionalmente dependente de parte da chave. Procedimentos: a) Identificar os atributos que não são funcionalmente dependentes de toda a chave primária. b) Remover da entidade todos esses atributos identificados e criar uma nova entidade com eles. A chave primária da nova entidade será o atributo do qual os atributos removidos são funcionalmente dependentes. Pag 3
A entidade Pedidos, não foi alterada, por não possuir chave composta, permanecendo sua estrutura: (; data_pedido; cpf_cliente; nome_cliente; endereço_cliente; telefone_cliente; total_pedido) Como resultado desta etapa, houve um desdobramento da entidade Itens do Pedido em duas estruturas a saber: - Primeira estrutura - Itens_Pedido - Contém os elementos originais, sendo excluídos os dados que são dependentes apenas do campo. (; ; quantidade_produto; total_produto) quantidade_produto total_produto - Segunda estrutura - Produtos - Contém os elementos que são identificados apenas pelo, ou seja, independentemente do Itens_Pedido, o nome e o preço serão constantes. PRODUTOS (, nome_produto, preço_produto) PRODUTOS nome_produto preço_produto 5) 3ª Forma Normal (3FN) Uma relação R está na 3FN se somente estiver na 2FN e todos os atributos não chave forem dependentes não transitivos da chave primária (cada atributo for funcionalmente dependente apenas dos atributos componentes da chave primária ou se todos os seus atributos não chave forem independentes entre si). Consiste em retirar das estruturas os campos que são funcionalmente dependentes de outros campos que não são chaves. Podemos afirmar que uma estrutura está na 3FN, se ela estiver na 2FN e não possuir campos dependentes de outros campos não chaves. Pag 4
Procedimentos: a) Identificar todos os atributos que são funcionalmente dependentes de outros atributos não chave; b) Removê-los e criar uma nova entidade com os mesmos. A chave primária da nova entidade será o atributo do qual os atributos removidos são funcionalmente dependentes. Como resultado desta etapa, houve um desdobramento da entidade Pedidos, em Clientes, por ser o único que possuía campos que não eram dependentes da chave principal (), uma vez que independente do pedido, o nome, endereço e telefone do cliente são inalterados. Este procedimento permite evitar inconsistência nos dados dos arquivos e economizar espaço por eliminar o armazenamento freqüente e repetição destes dados. A cada pedido feito pelo cliente, haverá o armazenamento destes dados e poderá ocorrer divergência entre eles. As estruturas alteradas foram pelos motivos, a saber: - Primeira estrutura - Pedidos - Contém os elementos originais, sendo excluído os dados que são dependentes apenas do campo código_cliente (informações referentes ao cliente). (; data_pedido; cpf_cliente; total_pedido) data_pedido cpf_cliente total_pedido) - Segunda estrutura - Clientes - Contém os elementos que são identificados apenas pelo cpf_cliente, ou seja, independente do pedido, o nome, endereço e telefone dos clientes serão constantes. CLIENTES (código_cliente; nome_cliente; endereço_cliente; telefone_cliente) CLIENTES código_cliente nome_cliente endereço_cliente telefone_cliente Pag 5
Após a normalização, as estruturas dos dados estão projetadas para eliminar as inconsistências e redundâncias dos dados, eliminando desta forma qualquer problema de atualização e operacionalização do sistema. A versão final dos dados poderá sofrer alguma alteração, para atender as necessidades específicas do sistema, a critério do analista de desenvolvimento durante o projeto físico do sistema. As outras duas estruturas permanecem inalteradas: PRODUTOS (; nome_produto; preço_produto) (; ; quantidade_produto; total_produto) Uma tabela está na 3a Forma Normal se estiver na 2a Forma Normal e não houver dependência entre atributos não chave. FIM Pag 6