Prévia do material em texto
1 Cliquez pour modifier le style du titre Normalização e as Formas Normais Profa. Vaninha Vieira (vaninha@dcc.ufba.br) Salvador, Agosto/2013 Universidade Federal da Bahia Instituto de Matemática Departamento de Ciência da Computação MATA60 – Banco de Dados 2 Créditos: Parte dos slides utilizados nesta apresentação foram adaptados dos slides do Livro do Elmasri & Navathe, 2011 – 6a Edição. Cap. 15 3 Diretrizes informais de projeto para esquemas de relações � Medidas de qualidade 1. Garantir que a semântica dos atributos seja clara no esquema 2. Reduzir a informação redundante nas tuplas 3. Reduzir os valores NULL nas tuplas 4. Reprovar a possibilidade de gerar tuplas falsas � Muito importante entender de fato o conceito de entidade neste processo � Muito importante entender a semântica das entidades e os atributos que as representam 4 Diretriz 1 � Projete um esquema de relação de modo que seja fácil explicar seu significado � Não combine atributos de vários tipos de entidade e de relacionamento em uma única relação 5 Diretriz 2 � Projete os esquemas da base de modo que nenhuma anomalia de atualização esteja presente nas relações • Anomalia de Inserção, Exclusão ou Modificação � Agrupamento de atributos em esquemas de relação � Efeito significativo no espaço de armazenamento � Se houver alguma anomalia: • Anote-as claramente • Cuide para que os programas que atualizam o banco de dados operem corretamente 6 FUNC_DEP Anomalia de Inserção: a)Inserir um novo funcionário? b)Inserir um novo departamento (ainda sem funcionário associado)? Anomalia de Remoção: a)Excluir um funcionário? Anomalia de Modificação: a)Mudar o gerente de um departamento? 2 7 Diretriz 3 � Podemos agrupar muitos atributos em uma relação 'gorda‘ • Acabamos com muitos NULLs • Problemas com NULLs � Desperdício de espaço de armazenamento � Problemas com o conhecimento do significado � Problemas com o uso de funções de agregação nas consultas � Evite colocar atributos em uma relação da base cujos valores podem ser NULL com frequência � Se os NULLs forem inevitáveis: • Garanta que eles se apliquem apenas em casos excepcionais, e não à maioria das tuplas 8 Diretriz 4 � Evite relações com atributos correspondentes que não sejam combinações (chave estrangeira, chave primária), pois a junção sobre tais atributos pode produzir tuplas falsas. � Tupla falsa • Representam informação falsa, que não é válida 9 Dependências funcionais � Ferramenta formal para a análise de esquemas relacionais � Permite detectar e descrever alguns dos problemas mencionados em termos precisos � É uma restrição entre dois conjuntos de atributos do BD � Propriedade da semântica ou significado dos atributos 10 Definição de dependência funcional DF1: {Cpf, Projnumero} � Horas DF2: Cpf � Fnome DF3: Projnumero � {Projnome, Projlocal} 11 O que é normalizaçã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 – Objetivos: • Minimizar redundâncias e inconsistências do banco de dados • Facilitar manipulação e manutenção do BD e Aplicações • Melhorar performance e uso do espaço em disco – Sub-Fases: • Identificação das redundâncias e outros problemas • Reorganização do banco de dados • Reprojeto das aplicações 12 Normalização e as 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 � Na prática usamos um conjunto de 3 Formas Normais. • Primeira Forma Normal (1FN) • Segunda Forma Normal (2FN) • Terceira Forma Normal (3FN) • Devem ser aplicadas nessa ordem � Existem 5 formas normais (regras de normalização) • Além da Forma Normal de Boyce-Codd Proposto por Codd em 1972 Conceito Base: Dependências Funcionais de Atributos de uma relação 3 13 Primeira Forma Normal (1FN) � Uma relação está na 1FN, se não houver atributos multivalorados, compostos e suas combinações � Os únicos valores de atributo permitidos são os valores atômicos (ou indivisíveis) � 1FN reprova relações dentro de relações ou relações como valores de atributo dentro de tuplas. 14 Primeira Forma Normal (1FN) � Técnicas principais para conseguir a 1FN 1. Remover o atributo e colocá-lo em uma relação separada 2. Expandir a chave 3. Usar vários atributos atômicos 15 Exemplo 2: Atributos compostos 16 Segunda Forma Normal (2FN) � Uma relação está na Segunda Forma Normal 2FN se • Ela estiver na 1FN • Todos os atributos não chave forem totalmente dependentes da chave primária (dependente de toda a chave e não apenas parte dela) • Conceito de Dependência Funcional Total 17 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. c) A chave primária da nova entidade será o atributo do qual os atributos removidos são funcionalmente dependentes. 18 Terceira Forma Normal (3FN) � Uma relação está na Terceira Forma Normal 3FN se • Ela estiver na 2FN • Nenhum atributo não-chave depender de outro atributo não-chave � Baseada no conceito de dependência transitiva 4 19 � Procedimentos: a) Identificar todos os atributos que são funcionalmente dependentes de outros atributos não chave; b) Removê-los; c) A chave primária da nova entidade será o atributo do qual os atributos removidos são funcionalmente dependentes. Terceira Forma Normal (3FN) 20 Exemplo � Na 3FN temos de eliminar aqueles campos que podem ser obtidos pela equação de outros campos da mesma tabela. 21 Definições gerais das formas normais baseadas em chaves primárias 22 Exercício de Normalização 23 1FN (parte 1) 24 1FN (parte 2) 5 25 2FN 26 3FN Todos os empregados da categoria A1 e A2 possuem salário 4 e B1 possuem salário 9. A 3FN visa eliminar esse tipo de redundância. 27 Lista de Exercícios - Instruções � Normalize as relações de forma que todas as relações resultantes estejam na forma normal mais restrita. Considere a 1FN, 2FN e 3FN � Para cada forma normal: • identifique que dependências funcionais se aplicam sobre a relação; • identifique e justifique se a relação encontra-se ou não na forma normal em questão; e • caso a relação sendo analisada não se encontre na forma normal em questão, normalize a relação, especificando as relações originadas. � Nos exercícios, a normalização deve ser realizada passo a passo (ou seja, forma normal a forma normal). � As respostas não devem listar apenas as relações finais. 28 Exercício 1 vendedor ( nro_vend, nome_vend, sexo_vend,{ cliente (nro_cli, nome_cli, end_cli ) } ) �As seguintes dependências funcionais devem ser garantidas na normalização: • nro_vend → nome_vend, sexo_vend • nro_cli → nome_cli, end_cli �Observações adicionais: • um vendedor pode atender diversos clientes, e um cliente pode ser atendido por diversos vendedores 29 Exercício 2 aluno ( nro_aluno, cod_depto, nome_depto, sigla_depto, cod_orient, nome_orient, fone_orient, cod_curso ) As seguintes dependências funcionais devem ser garantidas na normalização: cod_depto → {nome_depto, sigla_depto} cod_orient → {nome_orient, fone_orient} nro_aluno → {cod_depto, cod_orient, cod_curso} Observações adicionais: um aluno somente pode estar associado a um departamento um aluno cursa apenas um único curso um aluno somente pode ser orientado por um único orientador 30 Exercício 2 empresa (cod_empresa, nome_empresa, end_empresa, nome_fundador,nacionalidade_fundador, { filial (filial_nro, filial_local, filial_data_abertura) }) As seguintes dependências funcionais devem ser garantidas na normalização: cod_empresa → {nome_empresa, end_empresa, nome_fundador} nome_fundador → nacionalidade_fundador {cod_empresa, filial_nro} → {filial_local, filial_data_abertura} Observações adicionais: •uma empresa somente pode ter sido fundada por um único fundador. 6 31 Referências usadas na apresentação � Elmasri & Navathe. 2011. Sistemas de Banco de Dados. 6ª ed. Editora Pearson. � http://www.luis.blog.br/normalizacao-de-dados-e-as-formas-normais.aspx � http://infernatica.blogspot.com.br/2007/09/normalizao-de-banco-de-dados.html � Material do curso da Profa Cristina Ciferri. Universidade de São Paulo. Instituto de Ciências Matemáticas e de Computação.