O que é normalização? Exemplo de banco de dados 1NF, 2NF, 3NF, BCNF

Índice:

Anonim

O que é normalização?

A normalização é uma técnica de design de banco de dados que reduz a redundância de dados e elimina características indesejáveis ​​como anomalias de inserção, atualização e exclusão. As regras de normalização dividem tabelas maiores em tabelas menores e as vincula usando relacionamentos. O objetivo da normalização em SQL é eliminar dados redundantes (repetitivos) e garantir que os dados sejam armazenados logicamente.

O inventor do modelo relacional Edgar Codd propôs a teoria da normalização de dados com a introdução da Primeira Forma Normal e continuou a estender a teoria com a Segunda e a Terceira Forma Normal. Mais tarde, ele se juntou a Raymond F. Boyce para desenvolver a teoria da Forma Normal de Boyce-Codd.

Formulários normais de banco de dados

Aqui está uma lista de formas normais

  • 1NF (primeira forma normal)
  • 2NF (segunda forma normal)
  • 3NF (Terceira Forma Normal)
  • BCNF (forma normal de Boyce-Codd)
  • 4NF (Quarta Forma Normal)
  • 5NF (quinta forma normal)
  • 6NF (sexta forma normal)

A Teoria da Normalização de Dados no servidor SQL ainda está sendo desenvolvida. Por exemplo, há discussões ainda em 6 th forma normal. No entanto, na maioria das aplicações práticas, a normalização atinge seu melhor na Forma Normal . A evolução das teorias de normalização de SQL é ilustrada abaixo-

Formulários normais de banco de dados

Normalização de banco de dados com exemplos

O exemplo de normalização de banco de dados pode ser facilmente entendido com a ajuda de um estudo de caso. Suponha que uma videoteca mantenha um banco de dados de filmes alugados. Sem qualquer normalização no banco de dados, todas as informações são armazenadas em uma tabela conforme mostrado abaixo. Vamos entender a normalização em banco de dados com exemplo de tabelas:

Aqui você vê que a coluna Filmes alugados tem vários valores. Agora vamos passar para as primeiras formas normais:

Regras 1NF (Primeira Forma Normal)

  • Cada célula da tabela deve conter um único valor.
  • Cada registro precisa ser único.

A tabela acima em 1NF-

Exemplo 1NF

Antes de prosseguirmos, vamos entender algumas coisas -

O que é uma CHAVE?

Uma CHAVE é um valor usado para identificar um registro em uma tabela de forma exclusiva. Uma CHAVE pode ser uma única coluna ou combinação de várias colunas

Nota: As colunas em uma tabela que NÃO são usadas para identificar um registro exclusivamente são chamadas de colunas não-chave.

O que é uma chave primária?

Um primário é um valor de coluna única usado para identificar um registro de banco de dados de forma exclusiva.

Tem os seguintes atributos

  • Uma chave primária não pode ser NULL
  • Um valor de chave primária deve ser único
  • Os valores da chave primária raramente devem ser alterados
  • A chave primária deve receber um valor quando um novo registro é inserido.

O que é chave composta?

Uma chave composta é uma chave primária composta de várias colunas usadas para identificar um registro de forma única

Em nosso banco de dados, temos duas pessoas com o mesmo nome Robert Phil, mas moram em lugares diferentes.

Portanto, exigimos o nome completo e o endereço para identificar um registro de forma exclusiva. Essa é uma chave composta.

Vamos passar para a segunda forma normal 2NF

Regras 2NF (segunda forma normal)

  • Regra 1 - Esteja em 1NF
  • Regra 2 - Chave primária de coluna única

É claro que não podemos avançar para fazer nosso banco de dados simples na forma de normalização, a menos que particionemos a tabela acima.

Dividimos nossa tabela 1NF em duas tabelas viz. Tabela 1 e Tabela2. A Tabela 1 contém informações sobre os membros. A Tabela 2 contém informações sobre os filmes alugados.

Introduzimos uma nova coluna chamada Membership_id que é a chave primária para a tabela 1. Os registros podem ser identificados exclusivamente na Tabela 1 usando o ID de associação

Banco de dados - chave estrangeira

Na Tabela 2, Membership_ID é a chave estrangeira

A chave estrangeira faz referência à chave primária de outra tabela! Ajuda a conectar suas mesas

  • Uma chave estrangeira pode ter um nome diferente de sua chave primária
  • Isso garante que as linhas de uma tabela tenham linhas correspondentes em outra
  • Ao contrário da chave primária, eles não precisam ser exclusivos. Na maioria das vezes eles não são
  • As chaves estrangeiras podem ser nulas, embora as chaves primárias não possam

Por que você precisa de uma chave estrangeira?

Suponha que um novato insira um registro na Tabela B, como

Você só poderá inserir valores em sua chave estrangeira que existam na chave exclusiva da tabela pai. Isso ajuda na integridade referencial.

O problema acima pode ser superado declarando o ID de associação da Tabela 2 como uma chave estrangeira de ID de associação da Tabela 1

Agora, se alguém tentar inserir um valor no campo Membership id que não existe na tabela pai, um erro será mostrado!

O que são dependências funcionais transitivas?

Uma dependência funcional transitiva ocorre ao alterar uma coluna não chave, pode fazer com que qualquer uma das outras colunas não chave mude

Considere a tabela 1. Alterar a coluna não-chave Nome Completo pode alterar Saudação.

Vamos passar para 3NF

Regras 3NF (Terceira Forma Normal)

  • Regra 1- Estar em 2NF
  • Regra 2 - Não tem dependências funcionais transitivas

Para mover nossa mesa 2NF para 3NF, precisamos novamente dividir nossa mesa.

Exemplo 3NF

Abaixo está um exemplo 3NF no banco de dados SQL:

Mais uma vez, dividimos nossas tabelas e criamos uma nova tabela que armazena Saudações.

Não há dependências funcionais transitivas e, portanto, nossa tabela está em 3NF

Na Tabela 3, o ID de saudação é a chave primária e, na Tabela 1, o ID de saudação é estranho à chave primária na Tabela 3

Agora, nosso pequeno exemplo está em um nível que não pode mais ser decomposto para atingir formas normais superiores de normalização. Na verdade, ele já está em formas de normalização superiores. Esforços separados para passar para os próximos níveis de normalização de dados são normalmente necessários em bancos de dados complexos. No entanto, discutiremos os próximos níveis de normalizações resumidamente a seguir.

BCNF (forma normal de Boyce-Codd)

Mesmo quando um banco de dados está na Forma Normal, ainda haveria anomalias se ele tivesse mais de uma Chave Candidata .

Às vezes, o BCNF também é referido como 3.5 Forma Normal.

Regras 4NF (Quarta Forma Normal)

Se nenhuma instância da tabela de banco de dados contém dois ou mais dados independentes e de vários valores que descrevem a entidade relevante, então ela está na 4 a forma normal.

Regras 5NF (quinta forma normal)

A tabela está em 5 º Forma Normal só se for em 4FN e não pode ser decomposto em qualquer número de tabelas menores sem perda de dados.

6NF (sexta forma normal) proposta

6 ª Forma Normal não é padronizado, mas no entanto, está sendo discutido por especialistas do banco de dados por algum tempo. Esperançosamente, nós teríamos uma definição clara e padronizada para 6 ª forma normal em um futuro próximo ...

Isso é tudo para normalização SQL !!!

Resumo

  • O projeto de banco de dados é fundamental para a implementação bem-sucedida de um sistema de gerenciamento de banco de dados que atenda aos requisitos de dados de um sistema corporativo.
  • O processo de normalização no SGBD ajuda a produzir sistemas de banco de dados com boa relação custo-benefício e melhores modelos de segurança.
  • Dependências funcionais são um componente muito importante do processo de normalização de dados
  • A maioria dos sistemas de banco de dados são bancos de dados normalizados até a terceira forma normal.
  • Uma chave primária identifica exclusivamente o registro em uma tabela e não pode ser nula
  • Uma chave estrangeira ajuda a conectar a tabela e faz referência a uma chave primária