Baixe o app para aproveitar ainda mais
Prévia do material em texto
Normalização Normalização - conceitos 1a. Forma Normal Dependência 2a. Forma Normal 3a. Forma Normal Outras formas normais Exemplos Exercícios Normalização Conceito introduzido por Codd (1970) Técnica de projeto de BD para retirar anomalias do modelo relacional; Foram criadas inicialmente 3 formas normais Motivação principal: características de um mau projeto Repetição de Informação Inabilidade de representar certas informações Perda de informação Características de um mau projeto Repetição de Informação Exemplo: BD Bancário: Emprestar(ag_nome, ag_ativos,empréstimo_número, cliente_nome, quantia) Inabilidade de representar informações Uma agência só pode existir se existir um empréstimo Perda de informação Para eliminar um cliente é necessário eliminar todas as informações de empréstimos Funcionário(cod, nome) Dependentes(cod_func, nome, sexo) Normalização para validar o mapeamento Normalização Duas formas de utilização: Top-Down Botton-Up Nota Fiscal Cliente:..... Produtos: ------------- ------ ------------- ------ Total: ------- Nota(num, cliente, produtos......) nota(......) cliente(....) produto(....) vendedor(...) Uso da Normalização Engenharia Reversa Sistemas legados raramente documentados Necessidade de manutenção Migração para outro tipo de BD Integração com outro BD Normalização Problemas da falta de normalização: Anomalias de inclusão, exclusão e alteração Pedido (Num_pedido, prazo, cliente, endereco, cidade, uf, insc_est, (cod_prod, unid, qtde, desc, val_unit, total_prod)*, total_pedido, cod_vendedor, nome_vendedor) Anomalia de inclusão: ao ser incluído um novo cliente, o mesmo tem que estar relacionado a uma venda. Anomalia de exclusão: ao ser excluído um cliente, os dados referentes às suas compras serão perdidos. Anomalia de alteração: caso algum fabricante de produto altere o preço de um produto, será preciso percorrer toda a relação para se realizar múltiplas alterações. 1ª Forma Normal (1FN) Diz-se que uma tabela esta na primeira forma normal, quando ela não contem tabelas aninhadas. Regras para transformação: 1. E criada uma tabela na 1FN referente a tabela não normalizada e que contem apenas as colunas com valores atômicos ou seja, não admitirem atributos multivalorados. A chave primaria da tabela na 1FN é idêntica a chave da tabela não normalizada 2. Para cada tabela aninhada, e criada uma tabela na 1FN composta com as seguintes colunas: A chave primaria de cada uma das tabelas na qual a tabela em questão esta aninhada As colunas da própria tabela aninhada 1ª Forma Normal (1FN) Relações sem atributos multivalorados A B C D E F A B E F A C D Pedido (Num_pedido, prazo, cliente, endereco, cidade, uf, insc_est, (cod_prod, unid, qtde, desc, val_unit, total_prod)*, total_pedido, cod_vendedor, nome_vendedor) Pedido(Num_pedido, prazo, cliente, endereco, cidade, uf, insc_est, total_pedido, cod_vendedor, nome_vendedor) Item_Pedido(num_pedido, cod_prod, unid, qtde, desc, val_unit,total_prod) Dependência Dependência Funcional Total Diz-se que uma coluna C2 depende funcionalmente de uma coluna C1, quando em todas as linhas da tabela, para cada valor de C1 que aparece na tabela, aparece o mesmo valor de C2. Exemplo: cod_vendedor <---- nome_vendedor qtde depende de forma total de num_pedido + cod_prod Dependência Funcional Parcial ( só depende de uma parte da chave primária ) desc depende de cod_prod e não de num_pedido + cod_prod obs: dep. total ou parcial só ocorre com chave concatenada Dependência Funcional Transitiva (além de depender da chave primária da tabela, depende de outras colunas da tabela) nome_vendedor depende de cod_vendedor que não é chave primária mas depende desta. 2ª Forma Normal (2FN) “Uma tabela encontra-se na segunda forma normal, quando além de estar na 1FN , não contem dependências parciais, ou seja, todos os atributos não- chave forem totalmente dependentes da chave primária. “ Regras para transformação: 1. Mantém a tabela original com os atributos que tem dependência funcional total. 2. Cria-se uma nova tabela com os atributos com dependência funcional parcial, sendo que a chave primaria será a parte da chave primaria original do qual eles dependem. 2ª Forma Normal (2FN) Relações em 1FN e sem dependência parcial Item_Pedido(num_pedido, cod_prod, unid, qtde, desc, val_unit, total_prod) Item_Pedido(num_pedido, cod_prod, qtde, total_prod) Produto(cod_prod, unid, desc, val_unit) A B C D |------------------------------------------------| A B C A D 3ª Forma Normal (3FN) “Uma tabela encontra-se na terceira forma normal, quando além de estar na 2FN , não contem dependências transitivas “ Regras para transformação: 1. Mantém a tabela original com os atributos que tem dependência funcional total mas as referencias da tabelas criadas para eliminar as dependências transitivas. 2. Cria-se nova tabela com os atributos com dependência funcional transitiva, sendo que a chave primaria pode ser um dos atributos já existentes ou cria-se um novo atributo. 3ª Forma Normal (3FN) Relações em 2FN e sem dependência transitiva Pedido(Num_pedido, prazo, cliente, endereco, cidade, uf, insc_est, total_pedido, cod_vendedor, nome_vendedor) Pedido(Num_pedido, prazo, cod_cliente, total_pedido, cod_vendedor) Cliente(cod_cli, nome, endereco, cidade, uf, insc_est) Vendedor(cod_vendedor, nome_vendedor) A B C A B B C Regra Geral da Normalização “Todo item de dados em uma relação é dependente da chave, da chave toda e de nada mais do que a chave” [James Martin, 1991] “Um bom modelo de dados gera relações em 3FN”
Compartilhar