Normalização de DBMS: exemplo de banco de dados 1NF, 2NF, 3NF
O que é normalização de banco de dados?
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 vinculam 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. Later ele se juntou a Raymond F. Boyce para desenvolver a teoria da forma normal de Boyce-Codd.
Tipos de formulários normais em DBMS
Aqui está uma lista de formulários normais em SQL:
- 1NF (Primeira Forma Normal): Garante que a tabela do banco de dados seja organizada de modo que cada coluna contenha valores atômicos (indivisíveis) e cada registro seja único. Isso elimina grupos repetidos, estruturando assim os dados em tabelas e colunas.
- 2NF (Segunda Forma Normal): Baseia-se em 1NF por Precisamos remover dados redundantes de uma tabela que está sendo aplicada a várias linhas. e colocá-los em tabelas separadas. Requer que todos os atributos não-chave sejam totalmente funcionais na chave primária.
- 3NF (Terceira Forma Normal): Estende a 2NF garantindo que todos os atributos não-chave não sejam apenas totalmente funcionais na chave primária, mas também independentes uns dos outros. Isso elimina a dependência transitiva.
- BCNF (forma normal de Boyce-Codd): Um refinamento do 3NF que aborda anomalias não tratadas pelo 3NF. Exige que cada determinante seja uma chave candidata, garantindo uma adesão ainda mais rigorosa às regras de normalização.
- 4NF (Quarta Forma Normal): Aborda dependências com vários valores. Ele garante que não haja vários fatos independentes com vários valores sobre uma entidade em um registro.
- 5NF (Quinta Forma Normal): Também conhecido como “Formulário Normal de Junção de Projeção” (PJNF), refere-se à reconstrução de informações a partir de pedaços de dados menores e organizados de forma diferente.
- 6NF (Sexta Forma Normal): Teórico e não amplamente implementado. Ele lida com dados temporais (lidando com mudanças ao longo do tempo) decompondo ainda mais as tabelas para eliminar toda redundância não temporal.
A Teoria da Normalização de Dados em MySQL servidor ainda está sendo desenvolvido. Por exemplo, há discussões até em 6th Forma Normal. Contudo, na maioria das aplicações práticas, a normalização atinge o seu melhor em 3rd Forma Normal. A evolução da normalização nas teorias SQL é ilustrada abaixo-
Normalização de banco de dados com exemplos
banco de dados Exemplo de normalização pode ser facilmente compreendido 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 o banco de dados de normalização com exemplo de normalização com solução:
Aqui você vê A coluna Filmes alugados tem vários valores. Agora vamos passar para a primeira forma normal:
Primeira forma normal (1NF)
- 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 em SQL
A CHAVE em SQL é um valor usado para identificar registros em uma tabela de forma exclusiva. Uma SQL KEY é uma única coluna ou combinação de múltiplas colunas usada para identificar exclusivamente linhas ou tuplas na tabela. A chave SQL é usada para identificar informações duplicadas e também ajuda a estabelecer um relacionamento entre várias tabelas no banco de dados.
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 exclusivamente um registro de banco de dados.
Possui os seguintes atributos
- A chave primária não pode ser nulo
- Um valor de chave primária deve ser exclusivo
- 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 por múltiplas colunas usadas para identificar um registro exclusivamente
Em nosso banco de dados, temos duas pessoas com o mesmo nome Robert Phil, mas moram em lugares diferentes.
Portanto, exigimos Nome Completo e Endereço para identificar um registro de forma exclusiva. Essa é uma chave composta.
Vamos passar para a segunda forma normal 2NF
Segunda forma normal (2NF)
- Regra 1- Estar na 1NF
- Regra 2 - Chave primária de coluna única que não é funcionalmente dependente de nenhum subconjunto da relação de chave candidata
É claro que não podemos avançar para tornar nosso banco de dados simples em 2nd Formulário de normalização, a menos que particionemos a tabela acima.
Dividimos nossa tabela 1NF em duas tabelas, a saber. Tabela 1 e Tabela2. A Tabela 1 contém informações dos membros. A Tabela 2 contém informações sobre os filmes alugados.
Introduzimos uma nova coluna chamada Membership_id, que é a chave primária da tabela 1. Os registros podem ser identificados exclusivamente na Tabela 1 usando o ID de membro
Banco de Dados - Chave Estrangeira
Na Tabela 2, Membership_ID é a chave estrangeira
Chave Estrangeira faz referência à chave primária de outra Tabela! Ajuda a conectar suas tabelas
- Uma chave estrangeira pode ter um nome diferente de sua chave primária
- Garante que as linhas de uma tabela tenham linhas correspondentes em outra
- Ao contrário da chave primária, elas não precisam ser exclusivas. 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 membro da Tabela2 como chave estrangeira do ID de membro da Tabela1
Agora, se alguém tentar inserir um valor no campo ID de membro que não existe na tabela pai, será mostrado um erro!
O que são dependências funcionais transitivas?
Um transitivo dependência funcional é ao alterar uma coluna não-chave, pode fazer com que qualquer uma das outras colunas não-chave seja alterada
Considere a tabela 1. Alterar a coluna não-chave Nome Completo pode alterar a Saudação.
Vamos passar para 3NF
Terceira forma normal (3NF)
- Regra 1- Estar na 2NF
- Regra 2- Não possui dependências funcionais transitivas
Para mover nossa tabela 2NF para 3NF, precisamos novamente dividir nossa tabela novamente.
Exemplo 3NF
Abaixo está um exemplo 3NF no banco de dados SQL:
Dividimos novamente nossas tabelas e criamos uma nova tabela que armazena Saudações.
Não há dependências funcionais transitivas e, portanto, nossa tabela está na 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 ser decomposto ainda mais para atingir tipos de normalização de forma normal mais elevada no SGBD. Na verdade, já está em formas de normalização mais elevadas. 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 brevemente os próximos níveis de normalização no SGBD a seguir.
Forma normal de Boyce-Codd (BCNF)
Mesmo quando um banco de dados está em 3rd Forma Normal, ainda assim haveria anomalias se tivesse mais de um Candidato Chave.
Às vezes, o BCNF também é referido como 3.5 Forma normal.
Quarta forma normal (4NF)
Se nenhuma instância de tabela de banco de dados contém dois ou mais dados independentes e de múltiplos valores que descrevem a entidade relevante, então ela está em 4th Forma Normal.
Quinta forma normal (5NF)
Uma mesa está em 5th Forma Normal somente se estiver em 4NF e não puder ser decomposta em qualquer número de tabelas menores sem perda de dados.
Sexta Forma Normal (6NF) Proposta
6th O Formulário Normal não é padronizado, mas está sendo discutido por especialistas em bancos de dados há algum tempo. Esperançosamente, teríamos uma definição clara e padronizada para 6th Forma normal em um futuro próximo…
Vantagens da forma normal
- Melhore a consistência dos dados: A normalização garante que cada dado seja armazenado em apenas um local, reduzindo as chances de dados inconsistentes. Quando os dados são atualizados, eles só precisam ser atualizados em um só lugar, garantindo consistência.
- Reduza a redundância de dados: A normalização ajuda a eliminar dados duplicados, dividindo-os em várias tabelas relacionadas. Isso pode economizar espaço de armazenamento e também tornar o banco de dados mais eficiente.
- Melhore o desempenho da consulta: Os bancos de dados normalizados costumam ser mais fáceis de consultar. Como os dados são organizados de forma lógica, as consultas podem ser otimizadas para serem executadas mais rapidamente.
- Torne os dados mais significativos: A normalização envolve agrupar dados de uma forma que faça sentido e seja intuitiva. Isso pode tornar o banco de dados mais fácil de entender e usar, especialmente para pessoas que não projetaram o banco de dados.
- Reduza as chances de anomalias: Anomalias são problemas que podem ocorrer ao adicionar, atualizar ou excluir dados. A normalização pode reduzir as chances dessas anomalias, garantindo que os dados sejam organizados de forma lógica.
Desvantagens da Normalização
- Complexidade aumentada: A normalização pode levar a relações complexas. Um número extenso de tabelas com chaves estrangeiras pode ser difícil de gerenciar, levando à confusão.
- Flexibilidade Reduzida: Devido às regras estritas de normalização, poderá haver menos flexibilidade no armazenamento de dados que não cumpram estas regras.
- Maiores requisitos de armazenamento: Embora a normalização reduza a redundância, pode ser necessário alocar mais espaço de armazenamento para acomodar tabelas e índices adicionais.
- Sobrecarga de desempenho: Unir várias tabelas pode custar caro em termos de desempenho. Quanto mais normalizados os dados, mais junções serão necessárias, o que pode retardar o tempo de recuperação de dados.
- Perda de contexto de dados: A normalização divide os dados em tabelas separadas, o que pode levar à perda de contexto de negócios. O exame de tabelas relacionadas é necessário para compreender o contexto de um dado.
- Necessidade de conhecimento especializado: A implementação de um banco de dados normalizado requer um conhecimento profundo dos dados, das relações entre os dados e das regras de normalização. Isso requer conhecimento especializado e pode ser demorado.
Isso é tudo para normalização do SQL!!!
Conclusã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.
- A normalização em SGBD é um processo que ajuda a produzir sistemas de banco de dados econômicos e com melhores modelos de segurança.
- As 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 em SGBD.
- Uma chave primária identifica exclusivamente um 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