Baixe o app para aproveitar ainda mais
Prévia do material em texto
Banco de Dados I Prof. Me. Carlos Beluzo Prof. Dr. Tiago Carvalho Tecnologia em Análise e Desenvolvimento de Sistemas NORMALIZAÇÃO E até agora… • Entrada: • Fonte de dados estruturados da organização. • Ex: relatório, fichário, arquivo, documento estruturado… • Saída: • Esquema relacional para a fonte de dados • Objetivos • Geração de um esquema lógico relacional livre de redundâncias • Validação dos projetos conceitual e lógico de BD • Entrada: Fonte de Dados: Relatório Geração do Modelo Inicial • Forma de representação de tabela não normalizada • Pode ter uma ou mais tabelas aninhadas • Tabela aninhada: • Possui atributos multivalorados • Atributo que ao invés de conter valores atômicos, contém múltiplos valores ou contém uma tabela que pode, por sua vez, ser aninhada Modelos Produzidos Processo de Normalização • Uma vez obtido o esquema lógico-relacional inicial correspondente ao problema, passa-se ao processo de normalização • Este processo baseia-se no conceito de forma normal • Uma forma normal é uma regra que deve ser obedecida por uma tabela para que esta seja considerada “bem projetada” • Há diversas formas normais, entretanto, na prática, as três primeiras formas normais (FNs) são as mais utilizadas Processo de Normalização • Uma tabela T está em uma forma normal se atende uma certa regra • Se T está na Forma Normal (FN) i, então T está automaticamente nas FNs i - 1, i - 2, … • Ex: Se T está na forma normal 3, então ele também está nas formas normais 2 e 1 • Efeito colateral: Proliferação de tabelas! Passagem à 1ª Forma Normal (1FN) • Uma tabela encontra-se na 1FN quando não contém tabelas aninhadas • Portanto, a passagem à 1FN consta da eliminação das tabelas aninhadas eventualmente existentes • Adicionalmente, na 1FN podemos observar que: • Não há repetição de grupos ex.: telefone1, telefone2, etc. • Não há linhas sem chave única (entidade fraca) • Há valores atômicos, ou seja, não podem ser decompostos em partes menores • ex.: coluna telefones Passagem à 1ª Forma Normal (1FN) Passagem à 1ª Forma Normal (1FN) • Para se converter uma tabela para a 1FN há duas estratégias possíveis: 1. C o n s t r u i r u m a ú n i c a t a b e l a c o m redundância de dados: cria-se uma tabela na qual os dados das linhas externas à tabela aninhada são repetidos para cada linha da tabela aninhada Passagem à 1ª Forma Normal (1FN) ProjEmp (CodProj, Tipo, Descr, CodEmp, Nome, Cat, Sal, DataIni, TempAl) Passagem à 1ª Forma Normal (1FN) • Para se converter uma tabela para a 1FN há duas estratégias possíveis: 2. Construir uma tabela para cada tabela aninhada: cria-se uma tabela referente a própria tabela que está sendo normalizada e uma tabela para cada tabela aninhada Passagem à 1ª Forma Normal (1FN) Proj (CodProj, Tipo, Descr) ProjEmp (CodProj,CodEmp, Nome, Cat, Sal, DataIni, TempAl) Passagem à 1ª Forma Normal (1FN) • Na decomposição de tabelas, a passagem à primeira forma normal por decomposição de tabelas é feita nos seguintes passos: 1. É criada uma tabela na 1FN referente a tabela não normalizada e que contém apenas as colunas com valores atômicos, isto é, sem as tabelas aninhadas. A chave primária da tabela na 1FN é idêntica a chave da tabela não normalizada Passagem à 1ª Forma Normal (1FN) • Na decomposição de tabelas, a passagem à primeira forma normal por decomposição de tabelas é feita nos seguintes passos: 2. Para cada tabela aninhada, é criada uma tabela na 1FN composta pelas seguintes colunas: • a chave primária de cada uma das tabelas na qual a tabela em questão está aninhada • as colunas da própria tabela aninhada 3. São definidas as chaves primárias das tabelas na 1FN que correspondem a tabelas aninhadas • Passagem à 1ª Forma Normal (1FN) • Tabela não normalizada (com tabela aninhada) • Tabela na 1FN Passagem à 1ª Forma Normal (1FN) • Note que: • A chave primária da tabela externa é adicionada na nova tabela • Em geral, a chave primária da nova tabela precisará ser composta • Analisar se é possível manter a chave primária simples. Neste caso, se não for composta, não poderia haver repetição em CodEmp Passagem à 1ª Forma Normal (1FN) Passagem à 1ª Forma Normal (1FN) • Problemas??? Dependência Funcional • Antes de estudar a segunda forma normal (2FN), precisamos entender o conceito de Dependência Funcional (DF) • Definição: • Dada uma tabela relacional T1 e colunas C1, C2 (ou conjunto de colunas) tais que C1, C2 pertencem a T1 • Diz-se que C2 depende funcionalmente de C1 (ou que C1 determina C2) quando, em todas as linhas da tabela, para cada valor de C1 que aparece na tabela, aparece o mesmo valor de C2 Dependência Funcional - Exemplos Dependência Funcional - Exemplos • Considerando RG como chave primária: • Logo: • rg (nome, salário, sexo) • rg determina nome, salário, sexo • nome, salário, sexo dependem de rg Dependência Funcional - Exemplos • DF Total • Se um atributo A (não chave primária) depende funcionalmente de todos os atributos que compõem a chave primária de uma tabela T, diz-se que A possui DF total da chave primária de T • DF Parcial • Se um atributo A (não chave primária) depende funcionalmente apenas de alguns atributos (não todos) que compõem a chave primária de uma tabela T, diz-se que A possui DF parcial da chave primária de T Dependência Funcional - Exemplos Passagem à 2ª Forma Normal (2FN) • A passagem à segunda forma normal (2FN) objetiva eliminar um certo tipo de redundância de dados Passagem à 2ª Forma Normal (2FN) • Uma tabela encontra-se na segunda forma normal (2FN) quando, além de encontrar-se na primeira forma normal, cada coluna não chave depende da chave primária completa (DF Total) • Uma tabela que não se encontra na segunda formal contém dependências funcionais parciais (DF Parcial), ou seja, contém colunas não chave que dependem apenas de uma parte da chave primária Passagem à 2ª Forma Normal (2FN) • A passagem à segunda forma normal é feita utilizando o seguinte passo: • Dividir a tabela em quantas tabelas forem necessárias para eliminar as dependências parciais. • Uma tabela que está na 1FN e que possui apenas uma coluna como chave primária não contém dependências parciais • Assim, toda tabela que está na 1FN e que possui apenas uma coluna como chave primária já está na 2FN • O mesmo aplica-se para uma tabela que contenha apenas colunas chave primária. Passagem à 2ª Forma Normal (2FN) Entrada 1 FN Passagem à 2ª Forma Normal (2FN) 2 FN Passagem à 2ª Forma Normal (2FN) Passagem à 2ª Forma Normal (2FN) • Agora é sua vez: identifique a dependência funcional parcial Passagem à 2ª Forma Normal (2FN) • Nesse exemplo, temos uma tabela que armazena dados de vendas de produtos. Para aplicar a 2FN, temos que separar os dados dos produtos, em uma entidade que contenham somente dados dos produtos, e nessa tabela de pedidos apenas dados referentes aos pedidos Passagem à 2ª Forma Normal (2FN) • 2FN Dependência Funcional Transitiva • Antes de estudarmos a 3FN precisamos entender o conceito de DF transitiva ou indireta • Uma dependência funcional transitiva ou indireta acontece quando uma coluna não chave primária depende funcionalmente de outra coluna ou combinação de colunas não chave primária • Exemplo: Passagem à 3ª Forma Normal (3FN) • Uma tabela está na 3FN quando, além de estar na 2FN, não contém dependências transitivas • A passagem à terceira forma normal é feita utilizando o seguinte passo: • Dividir a tabela em quantas tabelas forem necessárias para eliminar as dependências transitivas. • Na definição dos campos de uma entidade podem ocorrer casos em que um campo não seja dependente diretamente da chave primária ou parte dela, mas sim dependente de um outro campo da tabela, campo este que não pertence à chave primária Passagem à 3ª Forma Normal (3FN) Entrada 1 FN Passagemà 3ª Forma Normal (3FN) 2 FN Passagem à 3ª Forma Normal (3FN) 3 FN Passagem à 3ª Forma Normal (3FN) • “Projeto” e “ProjetoEmpregado” não possuem dependências funcionais transitivas, mas “Empregado” sim • Caso a coluna dependa de alguma outra coluna não chave (dependência transitiva ou indireta) ela deve migrar para uma nova tabela, caso contrário permanece na tabela original Passagem à 3ª Forma Normal (3FN) • Ex 2: Abaixo, temos duas colunas indicando os valores do produto. A coluna “VlrTotal” (campo calculado), depende de uma outra coluna não chave (“VlrUnitario”) • Isso é um exemplo de informação redundante, ou seja, temos como saber o valor total dos produtos, sem a necessidade de armazená-lo já calculado. Nesse caso, vamos remover a coluna VlrTotal Passagem à 3ª Forma Normal (3FN) • 3 FN Passagem à 3ª Forma Normal (3FN) Passagem à 3ª Forma Normal (3FN) • Observações: • VlrUnitario poderia sofrer descontos para diferentes pedidos • VlrUnitario reflete o tempo do pedido, e não o preço atualizado • Pensar no campo VlrUnitarioAtual na tabela Produtos Considerações Finais • Aplicar normalização é importante para eliminar ou pelo menos diminuir a redundância de dados • Resulta em um conjunto de tabelas concisas que são suficientes para modelar o banco de dados • Existem outros níveis de normalização que podem ser encontrados na literatura: • Forma normal de Boyce/Codd • 4FN • 5FN • Porém, do ponto de vista prático, é comum aplicar as regras de normalização apenas até obtermos a 3FN • O aumento do número de tabelas, em geral, não justifica normalização após a 3FN do ponto de vista prático
Compartilhar