Prévia do material em texto
Normalização de Dados Apresentação A normalização de dados permite uma melhor performance e relacionamento de dados dentro do próprio sistema de gerenciamento de banco de dados. Nesta Unidade de Aprendizagem, você vai estudar como são feitas as tabelas nas formas normais, garantindo que estejam aderentes às regras, como fazer a normalização de uma tabela, desde o início, passando pelas três formas normais (1FN, 2FN e 3FN), identificando a mudança que ocorre em cada uma delas. Bons estudos. Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados: Identificar as dependências funcionais.• Reconhecer as formas normais (1FN, 2FN, 3FN, e FN Boyce-Codd).• Relacionar os processos de normalização.• Laiane Laiane Desafio A empresa na qual você trabalha atualmente é desenvolvedora de softwares e foi contratada para melhorar o sistema de uma locadora. Este é defasado e não apresenta boa performance para os clientes. Assim, foi levantada a necessidade de modificar a estrutura do banco de dados, passando a planilha de catálogo de filmes, a seguir, para a primeira forma normal. Título (filme) Nome (diretor) Ano (lançamento) Tipo (mídia) Duração Titanic James Cameron 1995 VHS DVD 200 min. Avatar James Cameron 2009 DVD 180 min. O Senhor dos Anéis: A Companhia do Anel Peter Jackson 2002 VHS DVD 300 min. Vingadores, Ultimato Anthony Russo, Joe Russo 2019 DVD 180 min. Neste Desafio, seu papel é segmentá-la, de forma que fique aderente às regras da primeira forma normal. Lembre-se de identificar os atributos- chave. Além de apresentar a solução, você deve explicar por que é adequada, neste caso, a utilização da normalização na primeira forma normal e como isso deve ser realizado. Laiane Infográfico O principal objetivo da normalização de dados é evitar anomalias de inserção, deleção e atualização. Para adequar o banco de dados, é necessário avaliá-lo com base em cinco regras, que recebem o nome de formas normais. Acompanhe, no Infográfico a seguir, as características principais de cada forma normal, bem como as da forma normal de Boyce-Codd. Confira. Laiane Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar. https://statics-marketplace.plataforma.grupoa.education/sagah/c47cf5e4-f163-44b4-b9ac-bbf973c641cf/46743dab-133d-44ee-94b4-0cdae2ecfd55.jpg Conteúdo do livro A normalização dos dados em um sistema de banco de dados é importante para garantir a não duplicidade de informações. Ela serve como busca pela diminuição de complexidade e maximização de performance dentro do Sistema de Gerenciamento de Banco de Dados (SGBDs). No capítulo Normalização de dados, da obra Modelagem e Desenvolvimento de Banco de Dados, base teórica desta Unidade de Aprendizagem, você vai estudar o que são as dependências funcionais, as formas normais e sua classificação. Boa leitura. Laiane MODELAGEM E DESENVOLVIMENTO DE BANCO DE DADOS Fabrício Felipe Meleto Barboza Normalização de dados Objetivos de aprendizagem Ao final deste texto, você deve apresentar os seguintes aprendizados: � Identificar as dependências funcionais. � Reconhecer as formas normais (1FN, 2FN, 3FN, e FN Boyce-Codd). � Relacionar os processos de normalização. Introdução A normalização de dados permite um melhor relacionamento e perfor- mance de dados dentro do próprio Sistema de Gerenciamento de Banco de Dados (SGBD). Neste capítulo, você vai estudar como são feitas as tabelas nas formas normais, garantindo que estejam aderentes às regras, e vai ver como fazer a normalização de uma tabela, desde o início, passando pelas três formas normais (1FN, 2FN e 3FN) e identificando a mudança que ocorre em cada uma delas. Dependências funcionais Você está administrando um banco de dados grandioso, com várias tabelas e databases. Ao inserir, excluir ou editar alguma informação do cadastro dos clientes, você precisaria manipular os dados da tabela “clientes”, que concentra essas informações. Bem rápido, fácil e estruturado, correto? Agora, pense que esse sistema utiliza a tabela “clientes” para montar o relatório gerencial dos cadastros, utiliza a tabela “clientes_vendas” para o cadastro dos mesmos dados – mas para referenciar uma venda – e, ainda, a tabela “clientes_aberto” para esses atributos serem exibidos na tela de clientes com contas em aberto. Laiane Laiane Laiane Dessa forma, para editar o campo telefone de um cliente, você precisaria manipular as tabelas “clientes”, “clientes_vendas” e “clientes_aberto”. O trabalho foi triplicado – e isso para qualquer edição, inserção ou deleção! Em vez de a informação ser centralizada e única, ela fica em duplicidade e correndo grande risco de não estar igual nas tabelas. Assim, a redundância de dados, salvo em caso controlado pelo próprio SGBD, como em uma replicação, por exemplo, não deve ser feita. Segundo Macêdo (2012, documento on-line), a redundância consiste no armazenamento de uma mesma informação em locais diferentes, provocando inconsistências. Em um banco de da- dos, as informações só se encontram armazenadas em um único local, não existindo duplicação descontrolada dos dados. Quando existem replicações dos dados, elas são decorrentes do processo de armaze- nagem típica do ambiente cliente-servidor, totalmente sob controle do banco de dados. Outra técnica, utilizada em menor escala, para quando a replicação de dados é necessária, seria a utilização de valores nulos (NULL) em campos não importantes para aquela cópia de dados. Quando é possível que o atributo receba esse valor, isso significa que esse atributo não possui nenhum dado atrelado a ele. Também é possível dizer que esse atributo, quando recebe a entrada NULL, diz que os dados estão ausentes naquele setor. Mesmo assim, recomenda-se cautela no uso de NULL para criar uma replicação dos valores. Identificando as dependências funcionais As tabelas de bancos de dados devem seguir uma regra para que fiquem livres de dados incorretos ou duplicados. Para garantir essa regra, foram definidas as formas normais, que, em teoria, todas as tabelas devem obedecer. Além disso, para que as formas normais sejam respeitadas, é necessário entender as dependências funcionais. Normalização de dados2 Laiane Laiane Laiane Laiane Laiane Laiane Laiane Laiane Uma dependência funcional ocorre quando um valor A depende de um valor B, ou seja, uma coluna depende de outra coluna da mesma tabela. As dependências funcionais se dividem em três: dependências funcio- nais parciais, dependências funcionais totais e dependências funcionais transitivas. Dependência funcional total Quando houver uma chave primária concatenada, isto é, duas ou mais colunas são a chave primária de uma tabela, as demais colunas dependerão exclusiva- mente dessa ligação para que possam ser inseridas corretamente. Exemplo: � Tabela ItemVenda ■ CodVenda PRIMARY KEY ■ CodProduto PRIMARY KEY ■ Qtd Repare que a coluna Qtd irá depender totalmente da chave primária con- catenada entre CodVenda e CodProduto. Dependência funcional parcial Ocorre quando um item da tabela depende de uma parte da chave primária concatenada da tabela, e não da chave toda. Exemplo: � Tabela ItemVenda ■ CodVenda PRIMARY KEY ■ CodProduto PRIMARY KEY ■ Qtd ■ PrecoProduto A coluna PrecoProduto depende do valor da coluna CodProduto, que faz parte da chave primária da tabela ItemVenda. Portanto, PrecoProduto depende parcialmente da chave primária concatenada da tabela. 3Normalização de dados Laiane Laiane Laiane Laiane Laiane Dependência funcional transitiva Acontece quando uma coluna da tabela depende de outra coluna da tabela que não é chave dessa tabela. Exemplo: � Tabela ItemVenda ■ CodVenda PRIMARY KEY ■ CodProduto PRIMARY KEY ■ Qtd ■ PrecoProduto ■ TotalParcial A coluna TotalParcial depende do resultado da multiplicação das colunas Qtd por PrecoProduto, e essas colunas não são chave da tabela.Reconhecendo as formas normais (1FN, 2FN, 3FN, e FN Boyce-Codd) Para o estudo das formas normais, utilizaremos como base a planilha a seguir (Quadro 1), adaptada do exemplo de Massan (2007), a qual devemos transformar em tabelas para compor o sistema que será desenvolvido. Normalização de dados4 Laiane Laiane Co dP ro j Ti po D es cr ic ao Empregado Co dE m pr eg ad o N om e Ca te go ri a Sa la ri o D at aI ni ci o Te m po A lo ca do PJ 55 4 D es en vo lv im en to Si st em a de e st oq ue 1 João A1 6 01/01/2019 12 2 Maria A1 6 01/01/2019 12 7 José B2 4 01/01/2019 12 8 Angelo B3 2 30/03/2019 9 9 Márcia A2 5 15/04/2019 6 10 Pedro A2 5 15/04/2019 6 PJ 52 9 D es en vo lv im en to Si st em a de c om pr a 1 João A1 6 01/01/2020 8 2 Maria A1 6 01/01/2020 3 7 José B2 4 01/01/2020 6 8 Angelo B3 2 01/01/2020 5 9 Márcia A2 5 15/11/2019 5 10 Pedro A2 5 15/11/2019 8 PF 38 Co rr eç ão Pr ob le m a no u pl oa d 3 Augusto A1 6 01/01/2018 3 4 Joana B2 4 01/01/2018 1 5 Alex B3 2 01/01/2018 5 6 Sophie B3 2 01/01/2018 2 7 José A2 4 01/01/2020 6 8 Angelo B3 2 01/01/2020 5 Quadro 1. Planilha com dados para estudo das formas normais 1FN: primeira forma normal A primeira forma normal comunica que a tabela estará na primeira forma normal se não tiver tabelas aninhadas uma dentro da outra. Conforme você pode reparar, podemos dividir a planilha de exemplo em mais de uma tabela, pois ela contempla exatamente um aninhamento de tabelas. Para respeitar essa forma normal, podemos criar as tabelas Projeto (Qua- dro 2) e AlocacaoEmpregado (Quadro 3), conforme segue. As colunas em destaque são chave. 5Normalização de dados Laiane Laiane Laiane Laiane CodProj Tipo Descricao PJ554 Desenvolvimento Sistema de estoque PJ529 Desenvolvimento Sistema de compra PF380 Correção Problema no upload Tabela projeto Co dP ro j Co dE m pr eg ad o N om e Ca te go ria Sa la rio D at aI ni ci o Te m po Al oc ad o J554 1 João A1 6 01/01/2019 12 PJ554 2 Maria A1 6 01/01/2019 12 PJ554 7 José B2 4 01/01/2019 12 PJ554 8 Angelo B3 2 30/03/2019 9 PJ554 9 Márcia A2 5 15/04/2019 6 PJ554 10 Pedro A2 5 15/04/2019 6 PJ529 1 João A1 6 01/01/2020 8 PJ529 2 Maria A1 6 01/01/2020 3 PJ529 7 José B2 4 01/01/2020 6 PJ529 8 Angelo B3 2 01/01/2020 5 PJ529 9 Márcia A2 5 15/11/2019 5 PJ529 10 Pedro A2 5 15/11/2019 8 PF380 3 Augusto A1 6 01/01/2018 3 PF380 4 Joana B2 4 01/01/2018 1 PF380 5 Alex B3 2 01/01/2018 5 PF380 6 Sophie B3 2 01/01/2018 2 PF380 7 José A2 4 01/01/2020 6 PF380 8 Angelo B3 2 01/01/2020 5 Tabela AlocacaoEmpregado Normalização de dados6 2FN: segunda forma normal A regra de segunda forma normal diz que a tabela deve estar na primeira forma normal e não possui dependências parciais. Segundo Siqueira (2018, documento on-line): [...] quando uma coluna ou conjunto de colunas A depende de outra coluna B que faz parte da chave primária concatenada, dizemos que há uma dependência funcional parcial A em relação a B. Para cada valor da coluna B, existe um valor associado para a coluna A. Assim, a tabela AlocacaoEmpregado deve ser segmentada em uma outra tabela, ou seja, uma terceira tabela: “empregado”. Observe nos Quadros 4 e 5. CodEmpregado Nome Categoria Salario 1 João A1 6 2 Maria A1 6 3 Augusto A1 6 4 Joana B2 4 5 Alex B3 2 6 Sophie B3 2 7 José B2 4 8 Angelo B3 2 9 Márcia A2 5 10 Pedro A2 5 Quadro 4. Exemplo da tabela “AlocacaoEmpregado” 7Normalização de dados Laiane Laiane Laiane CodProj CodEmpregado DataInicio TempoAlocado PJ554 1 01/01/2019 12 PJ554 2 01/01/2019 12 PJ554 7 01/01/2019 12 PJ554 8 30/03/2019 9 PJ554 9 15/04/2019 6 PJ554 10 15/04/2019 6 PJ529 1 01/01/2020 8 PJ529 2 01/01/2020 3 PJ529 7 01/01/2020 6 PJ529 8 01/01/2020 5 PJ529 9 15/11/2019 5 PJ529 10 15/11/2019 8 PF380 3 01/01/2018 3 PF380 4 01/01/2018 1 PF380 5 01/01/2018 5 PF380 6 01/01/2018 2 PF380 7 01/01/2020 6 PF380 8 01/01/2020 5 Quadro 5. Resultado da divisão da tabela 3FN: terceira forma normal Para a terceira forma normal, a tabela precisa estar na segunda forma normal e também não pode ter dependências transitivas. Normalização de dados8 Laiane Para Siqueira (2018), “quando uma coluna ou conjunto de colunas A depende de outra coluna B, que não pertence à chave primária, dizemos que A é dependente transitivo de B”. Repare que, na tabela Empregado, as colunas “Categoria” e “Salario” podem ser segmentadas em uma nova tabela. Dessa forma, temos (Quadros 6 e 7): CodEmpregado Nome Categoria 1 João A1 2 Maria A1 3 Augusto A1 4 Joana B2 5 Alex B3 6 Sophie B3 7 José B2 8 Angelo B3 9 Márcia A2 10 Pedro A2 Quadro 6. Tabela Empregado Categoria Salario A1 6 A2 5 B2 4 B3 2 Quadro 7. Tabela Categoria após segmentação 9Normalização de dados Laiane Forma normal Boyce-Codd Para a forma normal Boyce-Codd, temos que todo atributo da tabela deve depender única e exclusivamente da própria chave primária. Carvalho (2018, documento on-line) menciona que “uma tabela está na BCNF se, e somente se, estiver na 3FN e todo atributo não chave depender funcionalmente diretamente da chave primária, ou seja, não há dependências entre atributos não chave.” Portanto, para que a tabela esteja nessa forma normal, a dependência de qualquer coluna deve se limitar somente à chave primária da própria tabela. Veja um exemplo no Quadro 8. Categoria Salario A1 6 A2 5 B2 4 B3 2 Quadro 8. Tabela Categoria Repare que a coluna “Salario” depende exclusivamente da coluna “Cate- goria”; portanto, essa tabela está na forma normal Boyce-Codd. Normalização de dados10 Laiane Laiane Laiane MASSAN, J. Normalização de banco de dados. 2007. Disponível em: <infernatica.blo- gspot.com/2007/09/normalizao-de-banco-de-dados.html>. Acesso em: 19 jul. 2018. Leituras recomendadas CARVALHO, C. E. M. Banco de dados: a forma normal Boyce Codd. 06 abr. 2018. Dis- ponível em: <https://pt.linkedin.com/pulse/banco-de-dados-forma-normal-boyce- -codd-medeiros-de-carvalho>. Acesso em: 19 jul. 2018. MACÊDO, D. SGBD - Sistema de Gerenciamento de Banco de Dados. 15 jan. 2012. Dispo- nível em: <https://www.diegomacedo.com.br/sgbd-sistema-de-gerenciamento-de- -banco-de-dados/>. Acesso em: 19 jul. 2018. SIQUEIRA, F. Normalização: parte 1. 2018. Disponível em: <https://sites.google.com/ site/uniplibancodedados1/aulas/normalizacao>. Acesso em: 19 jul. 2018. Referência 11Normalização de dados Dica do professor Os bancos de dados são utilizados para armazenar diversos tipos de informações, desde relacionadas a uma conta de e-mail até dados importantes. As ameaças a esses bancos podem resultar na perda ou na degradação de alguns ou de todos os objetivos de segurança aceitos, que são: integridade, disponibilidade e confidencialidade. Veja, nesta Dica do Professor, como manter a segurança nos sistemas de gerenciamento de bancos de dados. Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar. https://fast.player.liquidplatform.com/pApiv2/embed/cee29914fad5b594d8f5918df1e801fd/3b22feb937159f5a01082db716be2213 Exercícios 1) O que é uma dependência funcional total? A) Quando a coluna depende parcialmente da chave primária. B) Quando a coluna depende integralmente da chave primária. C) Sem dependência entre as colunas. D) Quando a coluna depende temporariamente da chave primária. E) Quando a dependência é totalmente ocasional. 2) Para a tabela a seguir, qual é o atributo que representa uma dependência funcional transitiva? Tabela Aluno (Código PK, Nome, Endereço, Cidade, UF, Curso) A) Cidade depende de UF. B) Curso depende de Código. C) Nome depende de Código. D) Endereço depende de Curso. E) Curso depende de UF. 3) O que significa dizer que a tabela está na 1FN? A) Significa que a tabela tem chave primária concatenada. B) Significa que tem poucos campos. C) Significa que apresenta todas as informações redundantes. D) Significa que não tem tabelas aninhadas.E) Significa que é quando tem o campo Código. Laiane Laiane Laiane Laiane Ao todo, existem três dependências: total, parcial e transitiva. Cada uma delas representa algo que ocorre em função, parcial ou não, de outro. Laiane A dependência transitiva indica que algum atributo depende de outro atributo, sem este ser uma chave da tabela em questão. Laiane A tabela está na primeira forma normal se nenhum de seus atributos apresentarem domínios multivalorados. Laiane 4) Como identificar uma tabela na 3FN? A) Precisa apresentar mais de uma coluna como chave primária. B) Não deve apresentar chave primária. C) Deve estar na 2FN e, também, não ter dependências transitivas. D) Não existe a 3FN. E) Deve estar aninhada com outras tabelas. 5) Uma tabela que está na forma normal de Boyce-Codd está também na 3FN? A) Não, pois a forma normal de Boyce-Codd vem antes da 3FN. B) Não, pois a 3FN é diferente da forma normal de Boyce-Codd. C) Não, pois a forma normal de Boyce-Codd é um estágio hipotético. D) Sim, pois a 3FN é outro nome para a forma normal de Boyce-Codd. E) Sim, pois, se está na forma normal de Boyce-Codd, está também aderente à 3FN. Laiane Laiane Laiane Para que tabela esteja na 3FN, ela deve estar na 2FN e, também, não pode ter dependências transitivas. Laiane A forma normal Boyce-Codd é atendida quando todos os atributos podem ser chaves candidatas.Para que a tabela esteja na 3FN, deve estar na 2FN e, também, não pode ter dependências transitivas. Laiane Na prática Arlindo trabalha em uma empresa. Esta tem um sistema que possui seus dados salvos em um Sistema de Gerenciamento de Banco de Dados do tipo MySQL. Por infelicidade do destino, alguém realizou um comando que acabou por deletar uma entrada de registro. Então, a fim de buscar quem são as pessoas que têm acesso ao bando de dados e resolver o problema, Arlindo utilizou logs de auditoria. Veja a seguir, Na Prática. Conteúdo interativo disponível na plataforma de ensino! Saiba + Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor: Você sabe o que é Normalização de Banco de Dados? Leia o artigo recomenda e aprenda sobre o conceito e as regras básicas da normalização de dados, as quais devem ser seguidas para a criação de um Sistema de Gerenciamento de Banco de Dados, de forma a garantir a melhor performance e fluidez do sistema que o comporta. Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar. Modelagem de Dados - Normalização - Primeira Forma Normal Assista ao vídeo a seguir e aprenda mais sobre a primeira, a segunda e a terceira forma normal. Elas são um conjunto de regras para garantir que as tabelas dos bancos de dados apresentem uma relação mais apropriada e enxuta, a fim de não repetir informações. Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar. Modelagem de Dados - Normalização - Segunda Forma Normal Neste vídeo você vai ver como normalizar uma tabela em um banco de dados até a segunda forma normal (2FN) Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar. https://pedrogalvaojunior.wordpress.com/2016/06/24/dica-do-mes-voce-sabe-o-que-e-normalizacao-de-banco-de-dados/ https://www.youtube.com/embed/eRaAMNjCFYw https://www.youtube.com/embed/6ER9lWOk-cY Modelagem de Dados - Normalização - Terceira Forma Norma Neste vídeo você vai ver mais o processo de normalização da Terceira Forma Normal. Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar. https://www.youtube.com/embed/usA8QKvEHWw