Normalização do banco de dados (explicado em inglês simples)
Introdução à normalização do banco de dados
A normalização do banco de dados é um processo usado para organizar um banco de dados em tabelas e colunas. A ideia principal com isso é que uma tabela deve ser sobre um tópico específico e apenas tópicos de apoio incluídos. Pegue uma planilha contendo as informações como exemplo, em que os dados contêm vendedores e clientes que atendem a vários propósitos:
- Identifique os vendedores em sua organização
- Liste todos os clientes para os quais sua empresa liga para vender um produto
- Identifique quais vendedores ligam para clientes específicos.
Ao limitar uma tabela a um propósito, você reduz o número de dados duplicados contidos em seu banco de dados. Isso elimina alguns problemas decorrentes de modificações no banco de dados.
Para atingir esses objetivos, usaremos algumas regras estabelecidas. Conforme você aplica essas regras, novas tabelas são formadas. A progressão de indisciplinado para otimizado passa por várias formas normais.
Existem três formas normais que a maioria dos bancos de dados adere. Conforme as tabelas satisfazem cada forma de normalização de banco de dados sucessiva, elas se tornam menos propensas a anomalias de modificação de banco de dados e mais focadas em um único propósito ou tópico. Antes de prosseguirmos, certifique-se de entender a definição de uma tabela de banco de dados.
Razões para normalização de banco de dados
Existem três razões principais para normalizar um banco de dados. O primeiro é minimizar dados duplicados, o segundo é minimizar ou evitar problemas de modificação de dados e o terceiro é simplificar as consultas.
À medida que percorremos os vários estados de normalização, discutiremos como cada formulário aborda esses problemas, mas para começar, vamos dar uma olhada em alguns dados que não foram normalizados e discutir algumas armadilhas potenciais.
Acho que, depois de entender os problemas, é melhor apreciar a normalização. Considere a seguinte tabela:
A primeira coisa a notar é que esta tabela serve a muitos propósitos, incluindo:
- Identificar os vendedores da organização
- Listar as vendas escritórios e números de telefone
- Associar um vendedor a um escritório de vendas
- Mostrar os clientes de cada vendedor
Como um DBA, isso levanta uma bandeira vermelha. Em geral, gosto de ver tabelas que têm um propósito. Ter a mesa servindo a muitos propósitos apresenta muitos dos desafios; ou seja, duplicação de dados, problemas de atualização de dados e maior esforço para consultar dados.
Anomalias de duplicação e modificação de dados
Observe que para cada SalesPerson listamos o SalesOffice e o OfficeNumber. Existem dados de vendedor duplicados. Informações duplicadas apresentam dois problemas:
- Aumenta o armazenamento e diminui o desempenho.
- Torna-se mais difícil manter as alterações de dados.
Por exemplo:
Considere se mudarmos o escritório de Chicago para Evanston, IL. Para refletir isso adequadamente em nossa tabela, precisamos atualizar as entradas de todos os SalesPersons atualmente em Chicago. Nossa tabela é um pequeno exemplo, mas você pode ver se fosse maior, que potencialmente isso poderia envolver centenas de atualizações.
Essas situações são anomalias de modificação. A normalização do banco de dados os corrige. Existem três anomalias de modificação que podem ocorrer:
Insert Anomaly
Existem fatos que não podemos registrar até que tenhamos informações para a linha inteira. Em nosso exemplo, não podemos registrar um novo escritório de vendas até que também conheçamos o vendedor. Porque? Porque, para criar o registro, precisamos fornecer uma chave primária. Em nosso caso, é o EmployeeID.
Atualizar anomalia
Neste caso, temos as mesmas informações em várias linhas. Por exemplo, se o número do escritório mudar, então há várias atualizações que precisam ser feitas. Se não atualizarmos todas as linhas, aparecerão inconsistências.
Anomalia de exclusão
A exclusão de uma linha causa a remoção de mais de um conjunto de fatos. Por exemplo, se John Hunt se aposentar, a exclusão dessa linha nos fará perder informações sobre o escritório de Nova York.
Problemas de pesquisa e classificação
O último motivo que consideraremos é tornar mais fácil pesquisar e classificar seus dados. Na tabela SalesStaff, se você deseja pesquisar um cliente específico, como a Ford, deverá escrever uma consulta como
SELECT SalesOfficeFROM SalesStaffWHERE Customer1 = ‘Ford’ OR Customer2 = ‘Ford’ OR Customer3 = ‘Ford’
Claramente, se o cliente fosse de alguma forma em uma coluna nossa consulta seria mais simples. Além disso, considere se você deseja executar uma consulta e classificar por cliente.
Nossa tabela atual torna isso difícil. Você teria que usar três consultas UNION separadas!Você pode eliminar ou reduzir essas anomalias, separando os dados em tabelas diferentes. Isso coloca os dados em tabelas com um único propósito.
O processo para redesenhar a tabela é a normalização do banco de dados.
Definição de normalização de banco de dados
Existem três formas comuns de normalização de banco de dados: 1ª, 2ª e 3ª forma normal. Eles também são abreviados como 1NF, 2NF e 3NF, respectivamente.
Existem várias formas adicionais, como o BCNF, mas considero aquelas avançadas, e não muito necessárias para aprender no início.
As formas são progressivas, o que significa que para se qualificar para a 3ª forma normal uma mesa deve primeiro atender às regras da 2ª forma normal, e a 2ª forma normal deve aderir às da 1ª forma normal. Antes de discutirmos as várias formas e regras em detalhes, vamos resumir as várias formas:
- Primeira forma normal – as informações são armazenadas em uma tabela relacional com cada coluna contendo valores atômicos. Não há grupos repetidos de colunas.
- Segunda forma normal – A tabela está na primeira forma normal e todas as colunas dependem da chave primária da tabela.
- Terceira forma normal – a tabela está na segunda forma normal e todas as suas colunas não são transitivamente dependentes da chave primária
Se as regras não fazem muito sentido, não se preocupe. Vinculei ao artigo para ajudá-lo a entendê-los.
Por enquanto, é importante entender que existem três regras para normalização de banco de dados que se aplicam entre si. Algumas pessoas fazem a normalização do banco de dados parecer complicada.
mas não precisa ser, e depois que você entende isso, torna-se intuitivo.