Baixe o app para aproveitar ainda mais
Prévia do material em texto
Normalização Modelagem Lógica Relacional O Modelo de Dados lógico representa os dados em um BD através de um conjunto de Relações (tabelas). Estas relações contém informações sobre entidades ou relacionamentos existentes no domínio da aplicação utilizada como alvo para a modelagem. Informalmente uma relação pode ser considerada como uma tabela de valores, onde cada linha desta tabela representa uma coleção de valores de dados inter-relacionados Estes conjuntos de valores podem estar representando uma instância de uma entidade ou relacionamento da aplicação. Os nomes fornecidos às tabelas e às suas colunas podem auxiliar na compreensão do significado dos valores armazenados em cada uma das suas linhas. Em terminologia do Modelo Lógico, cada linha da relação é denominada de Tupla , o nome da coluna é denominado Atributo da relação. É importante assinalar que não se podem ter tuplas duplicadas em uma tabela. Esquema de um BD Lógico Relacional Como Esquema de um BD Relacional entende-se o conjunto de intenções (Esquemas das Relações) definidas para todas as relações da Base, e um conjunto de restrições de integridade. Sobre os nomes fornecidos aos atributos, é permitido àqueles que representem conceitos semelhantes, possuir ou não o mesmo nome em diferentes relações. Da mesma forma, atributos representando conceitos diferentes podem possuir o mesmo nome. O conjunto de restrições de integridade define regras básicas que os valores dos atributos devem obedecer quando aparecerem em uma relação. Instâncias A Instância de uma Relação consiste no conjunto de valores que cada atributo, definido no esquema, assume em um determinado instante, formando o conjunto de tuplas. Ou seja, as instâncias das relações formam os dados que são armazenados no BD. As relações apresentam as seguintes características: a) Não há tuplas duplicadas em uma relação; b) Ordem das tuplas na relação não é relevante para diferenciar as relações; c) Os valores dos atributos devem ser atômicos, não sendo divisíveis em componentes. Normalização de Dados Normalização de dados é 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. Normalização de Dados Uma regra de ouro que devemos observar quando do projeto de um Banco de Dados baseado no Modelo Relacional de Dados é a de não misturar assuntos em uma mesma Tabela. Por exemplo: na Tabela Clientes devemos colocar somente campos relacionados com o assunto Clientes. Não devemos misturar campos relacionados com outros assuntos, tais como Pedidos, Produtos, etc. Essa “Mistura de Assuntos”; em uma mesma tabela acaba por gerar repetição desnecessária dos dados bem como inconsistência dos dados. Normalização de dados Normalmente após a aplicação das regras de normalização de dados, algumas tabelas acabam sendo divididas em duas ou mais tabelas, o que no final gera um número maior de tabelas do que o originalmente existente. Este processo causa a simplificação dos atributos de uma tabela, colaborando significativamente para a estabilidade do modelo de dados, reduzindo-se consideravelmente as necessidades de manutenção. Normalização de dados - objetivo Minimização das redundâncias e inconsistências; Facilidade de manipulação do banco de dados; Facilidade de manutenção do sistema de informação. Regras de normalização – Formas Normais O Processo de normalização aplica uma série de regras sobre as tabelas de um banco de dados, para verificar se estas estão corretamente projetadas. Embora existam cinco formas normais (ou regras de normalização), na prática usamos um conjunto de três Formas Normais. Vejamos as três primeiras formas normais do processo de normalização de dados. Primeira Forma Normal (1FN) Primeira Forma Normal 1FN Uma relação estará na Primeira forma normal 1FN, se e somente se todos os domínios básicos contiverem somente valores atômicos (não contiver grupos repetitivos). Em outras palavras podemos definir que a primeira forma normal não admite repetições ou campos que tenha mais que um valor. 1FN 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. 1FN Considere a tabela abaixo: Cliente Cod_cliente Nome Telefone Endereço 1FN Agora com a tabela de dados: Cod_Cliente Nome Telefone Endereço 0001 Jéssica 999877845 987541200 Rua A, 123. Bairro X. Cep 22743-656 0002 Ricardo 951247568 Rua B, 456. Bairro X. Cep 22345-689 0003 Douglas 975845623 Rua C, 987. Bairro Y. Cep 22784569 0004 Lúcio 985263247 Rua A, 124. Bairro X. Cep 22743-656 1FN Todos os clientes possuem Rua, CEP e Bairro, e essas informações estão na mesma célula da tabela, logo ela não está na primeira forma normal. Para normalizar, deveremos colocar cada informação em uma coluna diferente, como no exemplo a seguir: Cod_Cliente Nome Telefone Endereço Bairro CEP 0001 Jéssica 999877845 987541200 Rua A, 123. X 22743-656 0002 Ricardo 951247568 Rua B, 456. X 22345-689 0003 Douglas 975845623 Rua C, 987. Y 22784569 0004 Lúcio 985263247 Rua A, 124. X 22743-656 1FN Para concluir a normalização, será necessário criar mais uma tabela com os dados de telefone, pois um cliente poderá possuir mais de um telefone: Cod_Cliente Telefone 0001 999877845 0001 987541200 0002 951247568 0003 975845623 0004 985263247 2FN Uma tabela está na Segunda Forma Normal 2FN se ela estiver na 1FN 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). 2FN 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 do qual os atributos removidos são funcionalmente dependentes . 2FN Exemplo de segunda forma normal Considere a tabela vendas abaixo: Vendas N_pedido Código_produto Produto Quant Valor_unit Subtotal 2FN Analisando a tabela de dados abaixo, teremos: N_Pedido Cod- Produto Produto Quant. Valor_Unit Subtotal 005 4-567 GalaxyS6 1 3600 3600 006 7-845 Impressora HP 5 1500 7500 007 1-852 Monitor LG 2 600 1200 008 7-895 Folha A4 10 10 100 2FN O nome do produto depende do código do produto, porém não depende de N_pedido que é a chave primária da tabela, portanto não está na segunda forma normal. Isto gera problemas com a manutenção dos dados, pois se houver alteração no nome do produto teremos que alterar em todos os registros da tabela venda. Para normalizar esta tabela teremos de criar a tabela Produto que ficará com os atributos Código_produto e produto e na tabela Venda manteremos somente os atributos N_pedido, código_produto, quant, valor_unit e subtotal. Veja o resultado: 2FN Cod-Produto Produto 4-567 GalaxyS6 7-845 Impressora HP 1-852 Monitor LG 7-895 Folha A4 N_Pedido Cod- Produto Quant. Valor_Unit Subtotal 005 4-567 1 3600 3600 006 7-845 5 1500 7500 007 1-852 2 600 1200 008 7-895 10 10 100 Terceira Forma Normal 3FN Uma tabela está na Terceira Forma Normal 3FN se ela estiver na 2FN e se nenhuma coluna não- chave depender de outra coluna não-chave. Na terceira forma normal temos de eliminar aqueles campos que podem ser obtidos pela equação de outroscampos da mesma tabela. 3FN Procedimentos: a) Identificar todos os atributos que são funcionalmente dependentes de outros atributos não chave; b) b) Removê-los. A chave primária da nova entidade será o atributo do qual os atributos removidos são funcionalmente dependentes. 3FN N_Pedido Cod- Produto Quant. Valor_Unit Subtotal 005 4-567 1 3600 3600 006 7-845 5 1500 7500 007 1-852 2 600 1200 008 7-895 10 10 100 3FN Considerando ainda a nossa tabela Venda, veremos que a mesma não está na terceira forma normal, pois o subtotal é o resultado da multiplicação Quant X Valor_unit, desta forma a coluna subtotal depende de outras colunas não-chave. Para normalizar esta tabela na terceira forma normal teremos de eliminar a coluna subtotal, como no exemplo a seguir: 3FN N_Pedido Cod- Produto Quant. Valor_Unit Subtotal 005 4-567 1 3600 3600 006 7-845 5 1500 7500 007 1-852 2 600 1200 008 7-895 10 10 100 N_Pedido Cod- Produto Quant. Valor_Unit 005 4-567 1 3600 006 7-845 5 1500 007 1-852 2 600 008 7-895 10 10 FIM
Compartilhar