Normalização Normalização é o conjunto de regras que visa minimizar as anomalias de modificação dos dados e dar maior flexibilidade em sua utilização. Normalização Existem cinco estágios de normalização, 1º, o 2º, o 3º, o 4º e o 5º. Para um banco de dados se encontrar em cada um desses estágios ou formas (denominadas formas normais), cada uma de suas tabelas deve atender a alguns pré-requisitos. Os pré-requisitos são cumulativos, isto é, para alcançar a 3ª forma normal (3NF), por exemplo, um banco de dados precisa atender aos pré-requisitos das 1ª e 2ª formas normais, acrescidos dos requisitos exclusivos da 3NF. Dependência Funcional As regras de Normalização são fundamentadas nos conceitos de “dependência Funcional”. Um atributo B possui dependência Funcional do atributo A se, para cada valor do atributo A, existe exatamente um único valor do atributo B. Dependência Funcional A dependência funcional é representada por: A → B Exemplo: Na tabela Cliente (CPF, Nome, Conta) Nome é função (Dependentes Funcional )do CPF e essa dependência é expressa por: CPF → Nome Dependência Funcional Total Um atributo B possui “Dependência Funcional Total” do atributo A (possivelmente composto) se: • • B é Dependente Funcional do atributo A e B não é dependente funcional de nenhum subconjunto apropriado do atributo A Exemplo inicial Tabela Clientes Tabela Clientes (Num, Nome, Telefone) Num Nome Telefone 123 Rachel Ingram 555-861-2025 456 James Wright 555-403-1659 555-776-4100 555-780-4324 789 Maria Fernandez 555-808-9633 Primeira Forma Normal (1FN) Primeira Forma Normal -(1FN) - “Uma relação está na 1FN se somente todos os domínios básicos contiverem somente valores atômicos (não contiver grupos repetitivos)” Primeira Forma Normal (1FN) A tabela CLIENTES não está na primeira forma normal porque existem domínios básicos com valores não atômicos, no caso, decorrente da possibilidade de mais de um telefone por cliente. Podemos transformar a tabela CLIENTES na 1 FN, construindo a tabela CLIETES2 Transformando a Tabela CLIENTES na Primeira Forma Normal (1FN) CLIENTES2 Num 123 456 456 456 789 Nome Rachel Ingram James Wright James Wright James Wright Maria Fernandez Telefone 555-861-2025 555-403-1659 555-776-4100 555-780-4324 555-808-9633 Segunda Forma Normal (2FN) “Uma relação R está na 2FN se e somente se ela estiver na primeira 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)” Segunda Forma Normal (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. A chave primária da nova entidade será o atributo do qual os atributos removidos são funcionalmente dependentes. Segunda Forma Normal (2FN) Exemplo Suponhas as tabelas: Notas_ Fiscais (Num_NF, Data da Emissão, Código do Cliente, Nome do cliente, Endereço do cliente, Total Geral da Nota) Itens_Da_Venda (Num_NF, Código da Mercadoria, Descrição da Mercadoria, Quantidade vendida, Preço unitário, Total da linha da nota) Itens_Da_Vendas não está em 2FN pois “Descrição da Mercadoria” e “Preço unitário” não são Totalmente Dependentes Funcionais da Chave (Num. NF, Código da Mercadoria), pois são Dependentes Funcionais de um subconjunto da chave que é o “Código da Mercadoria”. Segunda Forma Normal (2FN) Exemplo Normalizando para segunda forma normal (2FN) teremos: Notas_ Fiscais (Num_NF, Série, Data da Emissão,Código do Cliente, Nome do cliente, Endereço do clien te, Total Geral da Nota) Itens_Da_Venda (Num_NF, Código da Mercadoria, Quantidade vendida, Total da linha da nota ) Mercadorias (Código da Mercadoria, Descrição da Mercadoria, Preço unitário ) Terceira 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)” Terceira Forma Normal (3FN) 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. Terceira Forma Normal (3FN) Tomando-se novamente as tabelas em 2FN do exemplo anterior. • Notas_ Fiscais (Num_NF, Série, Data da Emissão,Código do Cliente, Nome do cliente, Endereço do clien te, Total Geral da Nota) • Itens_Da_Venda (Num_NF, Código da Mercadoria, Quantidade vendida, Total da linha da nota ) • Mercadorias (Código da Mercadoria, Descrição da Mercadoria, Preço unitário ) Terceira Forma Normal (3FN) - Exemplo Itens_Da_Vendas e Mercadorias estão em 2FN e já estão em 3FN. Por outro lado, observe a tabela Notas_Fiscais Notas_ Fiscais (Num_NF, Série, Data da Emissão, Código do Cliente, Nome do cliente, Endereço do cliente, Total Geral da Nota) Esta tabela está em 2FN, mas não está em 3FN pois “Nome do Cliente” e “Endereço do Cliente” são Dependentes Funcionais de Código do Cliente, que por sua vez é Dependente Funcional de Num_NF, ou seja, são Dependentes Funcionais Transitivos da chave (Num. NF). Terceira Forma Normal (3FN) - Exemplo Normalizando para segunda forma normal (3FN) teremos: • Notas_ Fiscais (Num_NF, Data Emissão, Código do Cliente, Total Geral da Nota) • Clientes (Código do Cliente, Nome do cliente, Endereço do cliente) Boyce Codd Normal Form (BCNF) - ” Uma relação R está na BCNF se todo determinante for uma chave candidata” Boyce Codd Normal Form (BCNF) - A BCNF substitui ao mesmo tempo a 2FN e 3 FN. Vamos aplicá-la ao exemplo anterior e veremos que o resultado é o mesmo