Banco de Dados descomplicado: Resumo de normalização ou formas normais.
Introdução
Vamos apresentar neste e nos próximos artigos vários resumos de conteúdos de TI gratuitos, elaborados com exclusividade para o Blog do Estratégia Concursos. O nosso primeiro tema será normalização ou formas normais em Banco de Dados, assunto que despenca nas provas da FGV e do Cebraspe/Cespe.
Esse tópico é cobrado tanto para cargos específicos de Tecnologia da Informação quanto para não específicos. Entretanto, recomendamos sempre checar o conteúdo programático do seu Edital. Segue o nosso roteiro de hoje:
- Conceito geral de normalização
- 1ª. Forma normal
- 2ª. Forma normal
- 3ª. Forma normal
- Forma normal de Boyce-Codd
- 4ª. Forma normal
- 5ª. Forma normal
- Quadro esquematizado
Para entender os conceitos apresentados neste artigo, é necessário que você tenha as noções básicas de banco de dados relacionais, para não ficar perdido. Por exemplo, precisa conhecer o que é uma tabela, o que é um atributo etc. Não vamos entrar nesse assunto hoje para o conteúdo não ficar muito extenso.
Se não conhecer nada a respeito do tema, recomendamos buscar o material do Estratégia (os links estão no final desta publicação) e retornar a este artigo posteriormente.
Por outro lado, se já conhecer o tema, mas não absorver tudo de imediato, sugerimos quebrar a leitura em 2 partes: tente ler até a 3ª. forma normal e posteriormente leia o restante, no seu tempo livre.
Tempo de leitura aproximada: 10 a 15 minutos
Conceito geral de normalização
De maneira simples, normalização é um artifício para eliminar as redundâncias do modelo de banco de dados relacional. Redundância é a repetição de um ou mais dados no modelo, que pode ocorrer de forma intencional ou não (dependendo do objetivo a ser traçado).
Na literatura, o tópico normalização também é conhecido como formas normais. A normalização apresenta diversos níveis, que variam em uma escala numérica. No mundo dos concursos, a cobrança varia da 1ª. até a 5ª. forma normal. Quando menor o nível, menos normalizado o modelo está.
Por outro lado, ao atingir um determinado nível de forma normal, significa que todos os demais níveis abaixo foram cumpridos. Por exemplo, se o seu modelo está na 3ª. forma normal, isso indica que ele também está automaticamente na 2ª. e na 1ª. formas normais (pense em uma escada que ficará mais fácil entender).
Geralmente, em projetos de bancos de dados, adota-se o padrão de normalizar os modelos até a 3ª. forma normal. Por causa disso, as bancas tendem a acompanhar esse padrão e a exigir mais fortemente dos candidatos o conhecimento sobre a 1ª., a 2ª. e a 3ª. formas normais.
Entretanto, isso não significa que as demais não são cobradas. Dessa forma, pedimos que fique atento também à 4ª. e à 5ª. formas normais, além da forma normal de Boyce-Codd (especialmente se você é da área de Tecnologia da Informação). Nas próximas seções, vamos explicar cada uma delas.
Existe ainda a 6ª. forma normal, também conhecida como forma normal chave-domínio, mas não consideramos seu estudo relevante para o contexto dos concursos públicos. Como as bancas ainda não estão cobrando, acreditamos que não vale a pena estudar por enquanto.
1a. Forma normal
A orientação da 1ª. forma normal é que todos os atributos do modelo sejam atômicos, indivisíveis. Em outras palavras, não são permitidos valores duplicados, tampouco campos possuindo mais de um valor simultaneamente. Segue um exemplo de tabela na 1ª. forma normal.
Repare que cada professor possui apenas um nome. Não há professores homônimos. O mesmo ocorre com a cidade. Cada uma das localidades aparece uma única vez. Isso é que o define a atomicidade.
2a. Forma normal
A 2ª. forma normal indica que os atributos que não são chave dependem unicamente da chave primária da tabela. Em outras palavras, não pode haver dependência parcial.
Além disso, como explicamos anteriormente, se a tabela está na 2ª. forma normal, automaticamente ela estará na 1ª. também. Vamos analisar este outro exemplo hipotético:
Você já conhece a primeira tabela: ela ilustra os dados dos professores. Em contrapartida, a segunda tabela representa a remuneração de um professor em determinado período.
As remunerações são variáveis de acordo com o número de aulas ministradas no mês. Por este motivo, o valor depende do período e do professor. Nesse caso, podemos dizer que a tabela está na 2ª. forma normal.
Se o valor dependesse apenas do professor, por exemplo, sem considerar o período, estaríamos diante de uma dependência parcial. Neste caso, o exemplo não estaria na 2ª. forma normal, mas estaria na 1ª.
3a. Forma normal
A 3ª. forma normal prega que os atributos que não são chave devem ser independentes entre si e dependentes única e exclusivamente da chave primária da tabela. Não é permitido dependência transitiva. Adicionalmente, se a tabela está na 3ª. forma normal, automaticamente estará na 1ª. e na 2ª. formas normais também.
Vamos verificar esta outra situação. Suponha que o nosso modelo armazenasse também os dados dos alunos, com seu nome e data de nascimento. Com a data de nascimento em mãos, é possível calcular a idade, concorda? Entretanto, não seria correto armazená-la nesta mesma tabela.
A idade pode ser calculada dinamicamente. Se a idade estivesse entre os atributos, ela não seria dependente da chave primária ID_ALUNO, mas sim da data de nascimento. Seria uma dependência transitiva. Da forma como apresentamos, a referida dependência não existe e a tabela está na 3ª. forma normal.
As bancas costumam dar ênfase na cobrança dos conceitos até a 3ª. forma normal. Se você não é da área de Tecnologia da Informação, está com pouco tempo para estudar e acredita que não conseguirá se aprofundar no assunto, recomendamos interromper a leitura aqui.
Forma normal de Boyce-Codd
A partir daqui, as formas normais são um pouco mais avançadas, digamos assim. A forma normal de Boyce-Codd lembra um pouco a 3ª. forma normal. Além disso, se a tabela estiver na forma normal de Boyce-Codd, também estará na 1ª., na 2ª. e na 3ª. formas normais. Porém, o conceito é um pouco diferente.
Nesta forma normal, todo atributo não chave precisa depender funcionalmente diretamente da chave, seja ela primária ou candidata. Em outras palavras, não pode haver dependências entre os atributos não chave. Vamos trazer um exemplo um pouquinho mais complicado para ilustrar a forma normal de Boyce-Codd:
Como explicamos anteriormente, a primeira tabela ilustra os dados dos professores. A segunda tabela é um pouco mais simples, armazena as disciplinas. Por último, a terceira tabela contém as aulas, incluindo os professores e as disciplinas ministradas.
Note que os dados dos professores e das disciplinas estão em tabelas independentes e referenciados na última como chaves estrangeiras. Se as disciplinas e os professores estivessem juntos com as aulas, teríamos problemas nas dependências do modelo. Deste modo, ele está na forma normal de Boyce-Codd.
Momento Curiosidade: a nomenclatura Boyce-Codd é uma junção dos sobrenomes dos autores da forma normal, chamados Raymond Boyce e Edgar Codd.
4a. Forma normal
Uma tabela está na 4ª. forma normal se não possuir dependências multivaloradas. Além disso, do mesmo modo que nas anteriores, para estar na 4ª. forma normal, a tabela precisa estar também na 1ª., na 2ª. e na 3ª. formas normais.
Voltamos ao nosso exemplo de professores. Suponha que tenhamos outros que estejam lotados na mesma cidade. Além disso, imagine também que vamos armazenar o ano em que ingressaram na instituição, hipoteticamente. Veja como ficariam as tabelas:
Se temos atributos que possam conter múltiplos valores iguais na mesma tabela, precisamos isolá-los e promover suas decomposições em subconjuntos menores. No nosso exemplo, os subconjuntos são cidades e anos de ingresso.
Sintetizando, cada um dos subconjuntos é representado por uma nova tabela e referenciado na principal. Com isso, o modelo estaria na 4ª. forma normal. Ressaltamos que ela é bem específica.
A maior parte das questões relativas a 4ª. forma normal é conceitual. Sendo assim, se você souber que a 4ª. forma normal se refere à dependência multivalorada, será o suficiente para acertar muitas questões.
5a. Forma normal
A tabela estará na 5ª. forma normal caso não possua dependências de junção. Em outras palavras, precisa ser possível decompor a tabela em subtabelas e reconstruí-la posteriormente pela junção das subtabelas geradas. Está confuso? Vamos voltar ao nosso exemplo anterior:
Veja que os campos ID_CIDADE e ID_ANO foram representados como chaves estrangeiras na tabela principal. Entretanto, é possível identificá-los em suas tabelas de origem. Em outras palavras, foi realizada uma decomposição em subtabelas, mas que é possível retornar ao estágio anterior.
Não podemos esquecer que, para estar na 5ª. forma normal, a tabela precisa estar também na 1ª., na 2ª., na 3ª. e na 4ª. formas normais. Do mesmo modo que a anterior, esta forma normal é bem específica também. Saber que ela se refere à dependência de junção, colocará você à frente de muitos candidatos.
Quadro esquematizado
Para consolidar o entendimento, vamos apresentar um esquema contendo os principais conceitos do assunto. Este tipo de abordagem é bastante eficiente para as revisões. Sendo assim, caso você já tenha estudado o tópico integralmente e precise apenas relembrar o conteúdo, recomendamos utilizar esta imagem.
Conclusão
Neste artigo, apresentamos um resumo de normalização/formas normais, um dos principais tópicos de Bancos de Dados. Se você compreendeu bem os conceitos, a recomendação é fazer muitas questões no Sistema de Questões do Estratégia para treinar, além de voltar ao tópico periodicamente para fazer revisões.
Como falamos em outras oportunidades, as questões são fundamentais para praticar o conteúdo e testar seu nível de conhecimento. Alunos aprovados realizam centenas, às vezes milhares de questões até atingir um nível de excelência no conteúdo. O acesso do Sistema de Questões do Estratégia é feito pelo link: https://concursos.estrategia.com/.
No entanto, se restaram dúvidas sobre os conceitos, nossa sugestão é buscar diretamente o material do Estratégia Concursos. O Estratégia oferece diversos cursos em pdf, videoaulas e áudios para você ouvir onde quiser. Saiba mais sobre todos os nossos cursos disponíveis na plataforma por meio do link https://www.estrategiaconcursos.com.br/cursos/.
Bons estudos e até a próxima!
Cristiane Selem Ferreira Neves é Bacharel em Ciência da Computação e Mestre em Sistemas de Informação pela Universidade Federal do Rio de Janeiro (UFRJ), além de possuir a certificação Project Management Profissional pelo Project Management Institute (PMI). Já foi aprovada nos seguintes concursos: ITERJ (2012), DATAPREV (2012), VALEC (2012), Rioprevidência (2012/2013), TJ-RJ (2022) e TCE-RJ (2022). Atualmente exerce o cargo efetivo de Especialista em Previdência Social – Ciência da Computação e o cargo em comissão de Coordenadora de Desenvolvimento em TI no Rioprevidência, além de ser colaboradora do Blog do Estratégia Concursos.