Alura > Cursos de Data Science > Cursos de SQL e Banco de Dados > Conteúdos de SQL e Banco de Dados > Primeiras aulas do curso Modelagem de banco de dados relacional: normalização

Modelagem de banco de dados relacional: normalização

Normalização - Apresentação

Olá! Sou Danielle Oliveira, instrutora da Escola de Dados.

Audiodescrição: Danielle se autodescreve como uma mulher morena, de cabelos cacheados e olhos castanhos. Está vestindo uma camiseta preta e sentada em um ambiente de iluminação azul e verde. Ao fundo, há uma parede branca, com uma prateleira. Nela, encontramos uma pequena decoração que representa sua região de origem, o Nordeste.

Danielle é apaixonada por tecnologia, música e livros e te acompanhará neste curso de modelagem de dados e normalização! Nele, conheceremos as dependências funcionais e as formas normais.

Ao final do curso, você conseguirá normalizar banco de dados, aplicando todas as regras que serão apresentadas.

Vamos descobrir o que estudaremos durante este curso?

Iniciaremos nossos estudos conhecendo o projeto a ser desenvolvido e o problema que Marta e sua equipe precisam resolver aplicando a normalização de dados.

Vamos aprender sobre as anomalias de atualização e também as diretrizes informais. Além disso, entenderemos o que é normalização de dados. Também vamos explorar as dependências funcionais e as formas normais, e como podemos identificar essas dependências e aplicar essas formas normais no nosso projeto de banco de dados.

Vamos iniciar nossos estudos! Até mais!

Normalização - Projeto do curso

Desenvolvemos os modelos conceitual, lógico e físico do projeto do Clube do Livro. Marta, especialista responsável por todo o projeto, juntamente com sua equipe, decidiu apresentar o modelo físico à gestão. Este seria o modelo final do banco de dados, já pronto para entrar em produção.

Apresentação do modelo físico do Clube do livro

Depois da apresentação do projeto, a gestão questionou Marta sobre a quantidade de tabelas propostas, pois poderiam ocupar muito espaço em disco, causando um aumento substancial no custo de manutenção do banco de dados.

Marta tentou explicar seus motivos, mas decidiu reestruturar o banco de dados de acordo com o que a gestão queria. Ela pretendia não só reduzir os custos, mas também mostrar à sua equipe os possíveis problemas de ter um banco de dados mal estruturado.

Reestruturação do banco de dados

Assim, Marta desenvolveu uma estrutura contendo as tabelas de:

Essa é, portanto, a estrutura que Marta desenvolveu seguindo as novas orientações da gestão, porém, ela apresenta alguns problemas. Por exemplo, na tabela "clientes", um mesmo cliente pode ter mais de um telefone, o que pode causar perda de dados ao inserirmos, atualizarmos ou excluirmos informações no banco de dados.

Problemas na reestruturação do banco de dados

Na tabela "livros", encontramos um problema de redundância de dados, ou seja, dados que se repetem diversas vezes. É o caso da autora Sarah J. Maas, que escreveu os livros "Corte de asas e ruínas", "Corte de Estilos", e "Trono de vidro". Nesse caso, temos dados repetidos que poderiam ser organizados de maneira diferente.

A tabela "pedidos", por sua vez, apresenta casos onde um único pedido tem múltiplos cadastros de livros associados.

Será que isso, de fato, reduz o espaço em disco que utilizaremos para armazenar os dados? A resposta é não!

Essa reestruturação está gerando redundância de dados, que poderiam ter sido armazenados de forma única e que agora estão duplicados nas tabelas, levando a um uso de espaço maior do que o inicialmente projetado por Marta. É um processo inverso ao que os gestores queriam.

Esses problemas que mencionamos são conhecidos como anomalias de atualização.

Próximos passos

No nosso próximo conteúdo, vamos entender um pouco mais sobre essas anomalias.

Normalização - Anomalias de dados

Agora, vamos conhecer as anomalias!

Anomalias

Anomalias são mudanças em dados que geram inconsistências dentro de um banco de dados relacional. Mas por que seriam geradas inconsistências? É isso que vamos descobrir!

Temos três tipos de anomalias:

Vamos conhecer sobre cada uma delas a partir de exemplos no nosso banco de dados.

Anomalia de inserção

A anomalia de inserção causa repetição desnecessária de dados dentro do nosso banco de dados, ou seja, redundância. Um exemplo disso seria repetir as informações de pedido, data e cliente, todas as vezes que inserimos um novo livro em um pedido específico.

Em nosso banco de dados, por exemplo, temos o código do pedido se repetindo várias vezes. O pedido 1, tem o mesmo cliente, a mesma data e o mesmo valor, porém, o livro sempre será diferente. Podemos ter o livro 1 adicionado com uma quantidade 2. Não é necessário repetir o livro duas vezes, já que temos um campo de quantidade para isso.

Neste cenário, para cada livro novo que inserimos, estamos repetindo a data do pedido, o valor total, o código do cliente e o código do pedido. Portanto, gerando redundância de dados.

E se, ao invés de repetir todos os dados, deixássemos algumas colunas vazias, como a de dados do cliente ou do pedido, já que já o inserimos na primeira vez? É possível fazer isso? A resposta é não.

Deixar colunas vazias geraria outro problema no nosso banco de dados: a presença de valores vazios (tuplas vazias). Esse é apenas um exemplo da anomalia de inserção.

Anomalia de alteração

A anomalia de alteração leva à inconsistência de dados e exige um pouco mais de esforço para atualizarmos nossos dados.

Vamos supor que precisamos alterar os dados de uma autora, como a Sarah, por exemplo. Ao realizar essa alteração de dados, não podemos atualizar em apenas um registro, mas em todos em que ela exista.

Para alterar os dados de um autor, é preciso alterá-los em diversas linhas, já que um autor pode ter diversos livros.

Por exemplo, a Sarah tem três livros, portanto, temos que atualizar o e-mail dela em todos esses três registros. Se não fizermos essa atualização, nossos dados ficarão inconsistentes, pois teríamos dados divergentes de uma mesma autora.

Esse seria um problema da anomalia de atualização, que é quando o nosso banco de dados não está bem projetado.

Anomalia de remoção

Além das anomalias de inserção e atualização, nós também temos a anomalia de remoção. Ela ocorre quando removemos dados que não deveriam ter sido removidos.

A anomalia de remoção acontece quando um dado necessário é removido da tabela.

Vamos acompanhar mais um exemplo no nosso banco, isto é, na nossa tabela de livros. Junto com o livro, temos os dados do autor e da editora. Agora, imagine se tivéssemos uma editora associada a um único livro ou a um único autor. Por exemplo, Isaac Asimov.

Isaac Asimov só tem um livro na nossa base de dados, que é " A Fundação". Imagine que, a partir de agora, a livraria não vai mais vender os livros "A Fundação", mas não necessariamente deixarão de vender livros do autor Isaac Asimov.

Se removermos o livro "A Fundação" do nosso banco de dados, perderemos os registros do autor, no caso, Isaac Asimov. O motivo é que esses dados estão armazenados em uma única tabela. Vamos perder dados que, na realidade, não deveriam ser removidos, pois, embora agora não tenhamos nenhum livro do Isaac Asimov à venda, no futuro, podemos ter.

Um ponto importante é que acabaremos perdendo também o histórico. Se precisarmos, futuramente, vender algum livro do Isaac Asimov, teremos que recadastrá-lo.

Diretrizes informais

Esses são alguns problemas que as anomalias causam em um banco de dados. Como podemos resolvê-los?

Antes de entendermos como resolver essas anomalias, é muito importante que entendamos que existem padrões necessários para entendermos se o nosso banco de dados - se o nosso projeto - está bem estruturado. Chamamos esses padrões de diretrizes informais.

Diretrizes informais são critérios que utilizamos para definir a qualidade de um projeto. São quatro critérios:

1 - Evitar gerar valores nulos (nulls) nas tuplas. Essa diretriz está relacionada com a questão dos pedidos, pois sempre precisamos informar os dados, mesmo se for necessário repetir informações.

2 - Evitar informações redundantes. Então, não podemos deixar espaços vazio, porque isso contraria uma das diretrizes, que é não ter valores nulos, mas, ao mesmo tempo, estaríamos gerando valores redundantes. Então, não podemos deixa valores nulos, nem manter a estrutura como está, gerando valores redundantes.

3 - Ter uma semântica clara, com esquemas fáceis de explicar. Voltando ao nosso projeto, encontraremos um esquema que não está muito simples, pois temos informações que estão habitando uma mesma tabela (autor e editora). Isso pode nos levar a perder os dados da editora. Temos que entender isso muito bem, para não acabarmos fazendo uma remoção que gere dados desnecessários.

4 - Evitar o surgimento de tuplas falsas, que é gerar informações irreais no banco de dados.

Próximos passos

Já discutimos sobre as anomalias existentes e sobre as diretrizes que precisamos seguir. Agora chegou o momento de entendermos como resolver todas essas anomalias, utilizando a normalização de dados.

Sobre o curso Modelagem de banco de dados relacional: normalização

O curso Modelagem de banco de dados relacional: normalização possui 146 minutos de vídeos, em um total de 53 atividades. Gostou? Conheça nossos outros cursos de SQL e Banco de Dados em Data Science, ou leia nossos artigos de Data Science.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda SQL e Banco de Dados acessando integralmente esse e outros cursos, comece hoje!

Plus

De
R$ 1.800
12X
R$109
à vista R$1.308
  • Acesso a TODOS os cursos da Alura

    Mais de 1500 cursos completamente atualizados, com novos lançamentos todas as semanas, emProgramação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

Matricule-se

Pro

De
R$ 2.400
12X
R$149
à vista R$1.788
  • Acesso a TODOS os cursos da Alura

    Mais de 1500 cursos completamente atualizados, com novos lançamentos todas as semanas, emProgramação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Luri, a inteligência artificial da Alura

    Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com Luri até 100 mensagens por semana.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

Matricule-se
Conheça os Planos para Empresas

Acesso completo
durante 1 ano

Estude 24h/dia
onde e quando quiser

Novos cursos
todas as semanas