Normalização do banco de dados

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Redução da redundância de dados

Normalização de banco de dados ou normalização de banco de dados (ver diferenças ortográficas) é o processo de estruturar um banco de dados relacional de acordo com uma série de chamados formas normais para reduzir a redundância de dados e melhorar a integridade dos dados. Foi proposto pela primeira vez pelo cientista da computação britânico Edgar F. Codd como parte de seu modelo relacional.

A normalização envolve a organização das colunas (atributos) e tabelas (relações) de um banco de dados para garantir que suas dependências sejam devidamente aplicadas pelas restrições de integridade do banco de dados. Isso é realizado aplicando algumas regras formais por um processo de síntese (criando um novo design de banco de dados) ou decomposição (melhorando um design de banco de dados existente).

Objetivos

Um objetivo básico da primeira forma normal definida por Codd em 1970 era permitir que os dados fossem consultados e manipulados usando uma "sub-linguagem de dados universal" baseado na lógica de primeira ordem. Um exemplo de tal linguagem é o SQL, embora seja uma que Codd considerasse seriamente falha.

Os objetivos da normalização além da 1NF (primeira forma normal) foram declarados por Codd como:

  1. Para liberar a coleta de relações de dependências indesejáveis de inserção, atualização e exclusão.
  2. Para reduzir a necessidade de reestruturação da coleta de relações, como novos tipos de dados são introduzidos, e assim aumentar a vida útil dos programas de aplicação.
  3. Tornar o modelo relacional mais informativo aos usuários.
  4. Para tornar a coleta de relações neutra às estatísticas de consulta, onde essas estatísticas são susceptíveis de mudar conforme o tempo passa.
E.F. Codd, "Mais Normalização do Modelo Relacional da Base de Dados"
Um anomalia de inserção. Até que o novo membro do corpo docente, Dr. Newsome, seja designado para ensinar pelo menos um curso, seus detalhes não podem ser gravados.
Um atualização da anomalia. Employee 519 é mostrado como tendo endereços diferentes em diferentes registros.
A anomalia de exclusão. Todas as informações sobre o Dr. Giddens são perdidas se deixarem temporariamente de ser atribuídas a quaisquer cursos.

Quando é feita uma tentativa de modificar (atualizar, inserir ou excluir) uma relação, os seguintes efeitos colaterais indesejáveis podem surgir em relações que não foram suficientemente normalizadas:

  • Anomalia de inserção. Há circunstâncias em que certos fatos não podem ser registrados. Por exemplo, cada registro em uma relação "Faculdade e seus cursos" pode conter um ID da Faculdade, Nome da Faculdade, Data de Contratação da Faculdade e Código do Curso. Portanto, os detalhes de qualquer membro do corpo docente que ensina pelo menos um curso podem ser registrados, mas um membro do corpo docente recém-contratado que ainda não foi designado para ensinar quaisquer cursos não pode ser registrado, exceto definindo o Código do Curso para null.
  • Atualize a anomalia. A mesma informação pode ser expressa em várias linhas; portanto, atualizações para a relação podem resultar em inconsistências lógicas. Por exemplo, cada registro em uma relação "As Habilidades dos Empregadores" pode conter um ID de Funcionário, Endereço de Funcionário e Habilidade; assim, uma mudança de endereço para um determinado funcionário pode precisar ser aplicada a vários registros (um para cada habilidade). Se a atualização é apenas parcialmente bem sucedida – o endereço do funcionário é atualizado em alguns registros, mas não em outros – então a relação é deixada em um estado inconsistente. Especificamente, a relação fornece respostas conflitantes para a questão do que é o endereço deste funcionário particular.
  • Anomalia de exclusão. Em certas circunstâncias, a exclusão de dados que representam certos fatos requer a exclusão de dados que representam fatos completamente diferentes. A relação "Faculdade e Seus Cursos" descrita no exemplo anterior sofre deste tipo de anomalia, porque se um membro do corpo docente temporariamente deixa de ser atribuído a quaisquer cursos, o último dos registros em que esse membro do corpo docente aparece deve ser excluído, efetivamente também excluir o corpo docente, a menos que o campo Código do Curso é definido como nulo.

Minimize o redesenho ao estender a estrutura do banco de dados

Um banco de dados totalmente normalizado permite que sua estrutura seja estendida para acomodar novos tipos de dados sem alterar muito a estrutura existente. Como resultado, os aplicativos que interagem com o banco de dados são minimamente afetados.

Relações normalizadas e a relação entre uma relação normalizada e outra espelham os conceitos do mundo real e suas inter-relações.

Formas normais

Codd introduziu o conceito de normalização e o que agora é conhecido como a primeira forma normal (1NF) em 1970. Codd passou a definir a segunda forma normal (2NF) e a terceira forma normal (3NF) em 1971, e Codd e Raymond F. Boyce definiu a forma normal de Boyce-Codd (BCNF) em 1974.

Informalmente, uma relação de banco de dados relacional é frequentemente descrita como "normalizada" se satisfaz a terceira forma normal. A maioria das relações 3NF são livres de anomalias de inserção, atualização e exclusão.

As formas normais (do menos normalizado ao mais normalizado) são:

  • UNF: Forma não normalizada
  • 1NF: Primeira forma normal
  • 2NF: Segunda forma normal
  • 3NF: Terceira forma normal
  • EKNF: Forma normal da chave elementar
  • BCNF: Boyce-Codd forma normal
  • 4NF: Quarta forma normal
  • ETNF: Forma normal de tupla essencial
  • 5NF: Quinto formulário normal
  • DKNF: Forma normal de tecla de domínio
  • 6NF: Sexta forma normal
Restrição
(descrição informal em parênteses)
UNF
(1970)
1NF
(1970)
2NF
(1971)
3NF
(1971)
EKNF
(1982)
BCNF
(1974)
4NF
(1977)
ETNF
(2012)
5NF
(1979)
DKNF
(1981)
6NF
(2003)
Linhas únicas (sem registros duplicados)MaybeYesYesYesYesYesYesYesYesYesYes
Colunas Scalar (colunas não podem conter relações ou valores compostos)NoYesYesYesYesYesYesYesYesYesYes
Cada atributo non-prime tem uma dependência funcional completa de uma chave do candidato (atributos dependem da completo chave primária)NoNoYesYesYesYesYesYesYesYesYes
Cada dependência funcional não trivial começa com um superkey ou termina com um atributo primo (atributos dependem apenas na chave primária)NoNoNoYesYesYesYesYesYesYesYes
Cada dependência funcional não trivial começa com um superkey ou termina com um atributo primário elementar (uma forma mais rigorosa de 3NF)NoNoNoNoYesYesYesYesYesYes
Cada dependência funcional não trivial começa com um superkey (uma forma mais rigorosa de 3NF)NoNoNoNoNoYesYesYesYesYes
Cada dependência multivalorizada não trivial começa com um superkeyNoNoNoNoNoNoYesYesYesYes
Cada dependência de junção tem um componente superkeyNoNoNoNoNoNoNoYesYesYes
Cada dependência de junção tem apenas componentes superkeyNoNoNoNoNoNoNoNoYesYes
Cada restrição é uma consequência de restrições de domínio e restrições-chaveNoNoNoNoNoNoNoNoNoYesNo
Cada dependência de junção é trivialNoNoNoNoNoNoNoNoNoNoYes

Exemplo de normalização passo a passo

Normalização é uma técnica de design de banco de dados, que é usada para projetar uma tabela de banco de dados relacional até a forma normal superior. O processo é progressivo e um nível mais alto de normalização do banco de dados não pode ser alcançado a menos que os níveis anteriores tenham sido satisfeitos.

Isso significa que, tendo os dados na forma não normalizada (a menos normalizada) e visando alcançar o maior nível de normalização, o primeiro passo seria garantir a conformidade com a primeira forma normal, o segundo passo seria garantir a segunda forma normal for satisfeito, e assim por diante na ordem acima mencionada, até que os dados estejam em conformidade com a sexta forma normal.

No entanto, vale a pena notar que as formas normais além da 4NF são principalmente de interesse acadêmico, pois os problemas que existem para resolver raramente aparecem na prática.

Os dados no exemplo a seguir foram projetados intencionalmente para contradizer a maioria das formas normais. Na vida real, é bem possível pular algumas das etapas de normalização porque a tabela não contém nada que contradiga a forma normal fornecida. Também ocorre comumente que corrigir uma violação de uma forma normal também corrige uma violação de uma forma normal superior no processo. Além disso, uma tabela foi escolhida para normalização em cada etapa, o que significa que, ao final deste processo de exemplo, ainda pode haver algumas tabelas que não atendem à forma normal mais alta.

Dados iniciais

Deixe existir uma tabela de banco de dados com a seguinte estrutura:

Título Autor Autor Nacionalidade Formato Preço Assunto Páginas Espessura Editora País de origem Tipo de Publicação Identificação genérica Nome genuíno
Iniciando MySQL Design de Banco de Dados e Otimização Chad Russell Americana Capa dura 49.99
MySQL
Banco de dados
Design de interiores
520 Espessura. Apress EUA E-book 1 Tutorial

Para este exemplo, assume-se que cada livro tem apenas um autor.

Como pré-requisito para estar em conformidade com o modelo relacional, uma tabela deve ter uma chave primária, que identifica exclusivamente uma linha. Dois livros podem ter o mesmo título, mas um ISBN identifica exclusivamente um livro, portanto, pode ser usado como chave primária:

ISBN Título Autor Autor Nacionalidade Formato Preço Assunto Páginas Espessura Editora País de origem Tipo de Publicação Identificação genérica Nome genuíno
1590593324 Iniciando MySQL Design de Banco de Dados e Otimização Chad Russell Americana Capa dura 49.99
MySQL
Banco de dados
Design de interiores
520 Espessura. Apress EUA E-book 1 Tutorial

Satisfazendo 1NF

Para satisfazer a primeira forma normal, cada coluna de uma tabela deve ter um único valor. Não são permitidas colunas que contenham conjuntos de valores ou registros aninhados.

Na tabela inicial, Assunto contém um conjunto de valores de assunto, o que significa que não está em conformidade.

Para resolver o problema, os assuntos são extraídos em uma tabela Assunto separada:

Livro
ISBN TítuloFormatoAutor Autor Nacionalidade Preço Páginas Espessura Editora País do editor Identificação genérica Nome genuíno
1590593324 Iniciando MySQL Design de Banco de Dados e Otimização Capa dura Chad Russell Americana 49.99 520 Espessura. Apress EUA 1 Tutorial
Assunto
ISBNNome do sujeito
1590593324 MySQL
1590593324 Banco de dados
1590593324 Design de interiores

Uma coluna de chave estrangeira é adicionada à tabela Assunto, que se refere à chave primária da linha da qual o assunto foi extraído. A mesma informação é, portanto, representada, mas sem o uso de domínios não simples.

Em vez de uma tabela em formato não normalizado, agora existem duas tabelas em conformidade com a 1NF.

Satisfazendo 2NF

Se uma tabela tiver uma chave primária de coluna única, ela atende automaticamente à 2NF, mas se uma tabela tiver uma chave composta ou multicoluna, ela pode não atender à 2NF.
A tabela Livro abaixo tem uma chave composta de {Title, Format} (indicada pelo sublinhado), portanto, pode não satisfazer 2NF. Neste ponto do nosso projeto, a chave não está finalizada como a chave primária, por isso é chamada de chave candidata. Considere a seguinte tabela:

Livro
TítuloFormatoAutor Autor Nacionalidade Preço Páginas Espessura Identificação genérica Nome genuíno ID do editor
Iniciando MySQL Design de Banco de Dados e Otimização Capa dura Chad Russell Americana 49.99 520 Espessura. 1 Tutorial 1
Iniciando MySQL Design de Banco de Dados e Otimização E-book Chad Russell Americana 22.34 520 Espessura. 1 Tutorial 1
O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2 E-book E.F.Codd Reino Unido 13.88 538 Espessura. 2 Ciência popular 2
O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2 Papel E.F.Codd Reino Unido 39.99 538 Espessura. 2 Ciência popular 2

Todos os atributos que não fazem parte da chave candidata dependem de Título, mas apenas Preço também depende de Formato. Para estar em conformidade com a 2NF e remover duplicidades, todo atributo de chave não candidata deve depender de toda a chave candidata, não apenas de parte dela.

Para normalizar esta tabela, torne {Title} uma (simples) chave candidata (a chave primária) para que cada atributo de chave não candidata dependa de toda a chave candidata e remova Price em uma tabela separada para que sua dependência de Format possa ser preservada:

Livro
TítuloAutor Autor Nacionalidade Páginas Espessura Identificação genérica Nome genuíno ID do editor
Iniciando MySQL Design de Banco de Dados e Otimização Chad Russell Americana 520 Espessura. 1 Tutorial 1
O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2 E.F.Codd Reino Unido 538 Espessura. 2 Ciência popular 2
Formato - Preço
TítuloFormatoPreço
Iniciando MySQL Design de Banco de Dados e Otimização Capa dura 49.99
Iniciando MySQL Design de Banco de Dados e Otimização E-book 22.34
O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2 E-book 13.88
O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2 Papel 39.99
Editora
ID do editorNome Pais
1 Apress EUA
2 Addison-Wesley EUA

Agora, a tabela Book está em conformidade com a 2NF.

Satisfazendo 3NF

A tabela Livro ainda possui uma dependência funcional transitiva ({Author Nationality} depende de {Author}, que depende de {Title}). Existe uma violação semelhante para gênero ({Genre Name} depende de {Genre ID}, que depende de {Title}). Portanto, a tabela Book não está na 3NF. Para fazê-lo na 3NF, vamos utilizar a seguinte estrutura de tabelas, eliminando assim as dependências funcionais transitivas colocando {Author Nationality} e {Genre Name} em suas respectivas tabelas:

Livro
TítuloAutor Páginas Espessura Identificação genérica ID do editor
Iniciando MySQL Design de Banco de Dados e Otimização Chad Russell 520 Espessura. 1 1
O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2 E.F.Codd 538 Espessura. 2 2
Preço
TítuloFormatoPreço
Iniciando MySQL Design de Banco de Dados e Otimização Capa dura 49.99
Iniciando MySQL Design de Banco de Dados e Otimização E-book 22.34
O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2 E-book 13.88
O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2 Papel 39.99
Autor
AutorAutor Nacionalidade
Chad Russell Americana
E.F.Codd Reino Unido
Gênero
Identificação genéricaNome genuíno
1 Tutorial
2 Ciência popular

Satisfazendo o EKNF

A forma normal de chave elementar (EKNF) fica estritamente entre 3NF e BCNF e não é muito discutida na literatura. Pretende-se "capturar as qualidades salientes de ambos 3NF e BCNF", evitando os problemas de ambos (ou seja, que 3NF é "muito indulgente" e BCNF é "propenso à complexidade computacional"). Como raramente é mencionado na literatura, não está incluído neste exemplo.

Satisfazendo 4NF

Suponha que o banco de dados seja propriedade de uma franquia de uma livraria que possui vários franqueados que possuem lojas em diferentes locais. E por isso o lojista decidiu adicionar uma tabela que contém dados sobre a disponibilidade dos livros em diferentes locais:

Franchisee - Book - Localização
ID de FranchiseeTítuloLocalização
1 Iniciando MySQL Design de Banco de Dados e Otimização Califórnia
1 Iniciando MySQL Design de Banco de Dados e Otimização Florida
1 Iniciando MySQL Design de Banco de Dados e Otimização Texas
1 O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2 Califórnia
1 O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2 Florida
1 O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2 Texas
2 Iniciando MySQL Design de Banco de Dados e Otimização Califórnia
2 Iniciando MySQL Design de Banco de Dados e Otimização Florida
2 Iniciando MySQL Design de Banco de Dados e Otimização Texas
2 O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2 Califórnia
2 O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2 Florida
2 O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2 Texas
3 Iniciando MySQL Design de Banco de Dados e Otimização Texas

Como esta estrutura de tabela consiste em uma chave primária composta, ela não contém nenhum atributo não-chave e já está em BCNF (e, portanto, também satisfaz todas as formas normais anteriores). No entanto, supondo que todos os livros disponíveis sejam oferecidos em cada área, o Título não está inequivocamente vinculado a um determinado Local e, portanto, a tabela não satisfaz a 4NF.

Isso significa que, para satisfazer a quarta forma normal, esta tabela também precisa ser decomposta:

Franchisee - Livro
ID de FranchiseeTítulo
1 Iniciando MySQL Design de Banco de Dados e Otimização
1 O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2
2 Iniciando MySQL Design de Banco de Dados e Otimização
2 O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2
3 Iniciando MySQL Design de Banco de Dados e Otimização
Franchisee - Localização
ID de FranchiseeLocalização
1 Califórnia
1 Florida
1 Texas
2 Califórnia
2 Florida
2 Texas
3 Texas

Agora, cada registro é identificado inequivocamente por uma superchave, portanto 4NF é satisfeito.

Atendendo a ETNF

Suponha que os franqueados também possam encomendar livros de diferentes fornecedores. Suponha que a relação também esteja sujeita à seguinte restrição:

  • Se um certo fornecedor fornece um certo título
  • e o título é fornecido ao franchisado
  • e o franchisado está sendo fornecido pela fornecedor,
  • então o fornecedor fornecimentos título ao franchisado.
Fornecedor - Book - Franchisee
ID do fornecedorTítuloID de Franchisee
1 Iniciando MySQL Design de Banco de Dados e Otimização 1
2 O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2 2
3 Aprender SQL 3

Esta tabela está na 4NF, mas o ID do Fornecedor é igual à junção de suas projeções: {{ID do Fornecedor, Título}, {Título, ID do Franqueado}, {ID do Franqueado, ID do Fornecedor}}. Nenhum componente dessa dependência de junção é uma superchave (a única superchave é o título inteiro), então a tabela não satisfaz o ETNF e pode ser decomposta posteriormente:

Fornecedor - Book
ID do fornecedorTítulo
1 Iniciando MySQL Design de Banco de Dados e Otimização
2 O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2
3 Aprender SQL
Livro - Franchisee
TítuloID de Franchisee
Iniciando MySQL Design de Banco de Dados e Otimização 1
O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2 2
Aprender SQL 3
Franchisee - Fornecedor
ID do fornecedorID de Franchisee
1 1
2 2
3 3

A decomposição produz conformidade ETNF.

Satisfazendo 5NF

Para identificar uma tabela que não satisfaça a 5NF, geralmente é necessário examinar os dados minuciosamente. Suponha a tabela do exemplo 4NF com uma pequena modificação nos dados e vamos examinar se ela satisfaz 5NF:

Franchisee - Book - Localização
ID de FranchiseeTítuloLocalização
1 Iniciando MySQL Design de Banco de Dados e Otimização Califórnia
1 Aprender SQL Califórnia
1 O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2 Texas
2 O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2 Califórnia

A decomposição desta tabela diminui as redundâncias, resultando nas duas tabelas a seguir:

Franchisee - Livro
ID de FranchiseeTítulo
1 Iniciando MySQL Design de Banco de Dados e Otimização
1 Aprender SQL
1 O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2
2 O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2
Franchisee - Localização
ID de FranchiseeLocalização
1 Califórnia
1 Texas
2 Califórnia

A consulta juntando essas tabelas retornaria os seguintes dados:

Franchisee - Book - Location JOINed
ID de FranchiseeTítuloLocalização
1 Iniciando MySQL Design de Banco de Dados e Otimização Califórnia
1 Aprender SQL Califórnia
1O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2Califórnia
1 O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2 Texas
1Aprender SQLTexas
1Iniciando MySQL Design de Banco de Dados e OtimizaçãoTexas
2 O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2 Califórnia

O JOIN retorna três linhas a mais do que deveria; adicionar outra tabela para esclarecer a relação resulta em três tabelas separadas:

Franchisee - Livro
ID de FranchiseeTítulo
1 Iniciando MySQL Design de Banco de Dados e Otimização
1 Aprender SQL
1 O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2
2 O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2
Franchisee - Localização
ID de FranchiseeLocalização
1 Califórnia
1 Texas
2 Califórnia
Localização - Livro
LocalizaçãoTítulo
Califórnia Iniciando MySQL Design de Banco de Dados e Otimização
Califórnia Aprender SQL
Califórnia O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2
Texas O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2

O que o JOIN retornará agora? Na verdade, não é possível juntar essas três tabelas. Isso significa que não foi possível decompor o Franqueado - Livro - Localização sem perda de dados, portanto a tabela já atende a 5NF.

C. J. Date argumentou que apenas um banco de dados em 5NF é verdadeiramente "normalizado".

Satisfazendo o DKNF

Vamos dar uma olhada na tabela Book dos exemplos anteriores e ver se ela satisfaz a forma normal da chave de domínio:

Livro
TítuloPáginasEspessura Identificação genéricaID do editor
Iniciando MySQL Design de Banco de Dados e Otimização 520 Espessura. 11
O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2 538 Espessura. 22
Aprender SQL 338 Slim 13
SQL Cookbook 636 Espessura. 13

Logicamente, a Espessura é determinada pelo número de páginas. Isso significa que depende de Páginas, que não é uma chave. Vamos definir um exemplo de convenção dizendo que um livro de até 350 páginas é considerado "fino" e um livro com mais de 350 páginas é considerado "grosso".

Essa convenção é tecnicamente uma restrição, mas não é uma restrição de domínio nem uma restrição de chave; portanto, não podemos confiar em restrições de domínio e restrições de chave para manter a integridade dos dados.

Em outras palavras – nada nos impede de colocar, por exemplo, "Grosso" para um livro com apenas 50 páginas – e isso faz com que a tabela viole DKNF.

Para resolver isso, uma tabela contendo uma enumeração que define a Espessura é criada e essa coluna é removida da tabela original:

Espessura Enum
EspessuraMin páginas Páginas máximas
Slim 1 350
Espessura. 351 999,999,999
Livro - Páginas - Gênero - Editora
TítuloPáginas Identificação genéricaID do editor
Iniciando MySQL Design de Banco de Dados e Otimização 520 11
O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2 538 22
Aprender SQL 338 13
SQL Cookbook 636 13

Desta forma, a violação de integridade do domínio foi eliminada e a tabela está em DKNF.

Satisfazendo 6NF

Uma definição simples e intuitiva da sexta forma normal é que "uma tabela está na 6NF quando a linha contém a Chave Primária e, no máximo, um outro atributo".

Isso significa, por exemplo, a tabela Publisher projetada durante a criação da 1NF

Editora
ID do editor Nome Pais
1 Apress EUA

precisa ser decomposto em duas tabelas:

Editora
ID do editor Nome
1 Apress
País do editor
ID do editor Pais
1 EUA

A desvantagem óbvia do 6NF é a proliferação de tabelas necessárias para representar as informações em uma única entidade. Se uma tabela na 5NF tiver uma coluna de chave primária e N atributos, representar a mesma informação na 6NF exigirá N tabelas; atualizações de vários campos para um único registro conceitual exigirão atualizações para várias tabelas; e inserções e exclusões também exigirão operações em várias tabelas. Por este motivo, em bases de dados destinadas a atender necessidades de Processamento de Transações Online, a 6NF não deve ser utilizada.

No entanto, em data warehouses, que não permitem atualizações interativas e são especializados para consultas rápidas em grandes volumes de dados, alguns SGBDs usam uma representação 6NF interna – conhecida como armazenamento de dados colunar. Em situações em que o número de valores exclusivos de uma coluna é muito menor do que o número de linhas na tabela, o armazenamento orientado a coluna permite uma economia significativa de espaço por meio da compactação de dados. O armazenamento colunar também permite a execução rápida de consultas de intervalo (por exemplo, mostra todos os registros em que uma determinada coluna está entre X e Y ou menor que X).

Em todos esses casos, no entanto, o projetista do banco de dados não precisa executar a normalização 6NF manualmente criando tabelas separadas. Alguns DBMSs especializados em armazenamento, como o Sybase IQ, usam armazenamento colunar por padrão, mas o designer ainda vê apenas uma única tabela com várias colunas. Outros DBMSs, como o Microsoft SQL Server 2012 e posterior, permitem que você especifique um "índice de coluna" para uma determinada tabela.

Notas e referências

  1. ^ "A adoção de um modelo relacional de dados... permite o desenvolvimento de uma sublíngua de dados universal baseada em um cálculo de predicado aplicado. Um cálculo predicado de primeira ordem é suficiente se a coleção de relações está em primeira forma normal. Tal linguagem forneceria um conjunto de poder linguístico para todas as outras linguagens de dados propostas, e seria, por si só, um forte candidato à incorporação (com modificação sintática apropriada) em uma variedade de idiomas hospedeiros (programação, comando ou orientada para o problema)." Codd, "Um modelo relacional de dados para grandes bancos de dados compartilhados" Arquivado em 12 de junho de 2007, no Wayback Machine, p. 381
  2. ^ Codd, E.F. Capítulo 23, "Serious Flaws in SQL", in O Modelo Relacional para Gerenciamento de Bancos de Dados: Versão 2. Addison-Wesley (1990), pp. 371–389
  3. ^ Codd, E.F. "Mais Normalização do Modelo Relacional da Base de Dados", p. 34
  4. ↑ a b Codd, E. F. (Junho de 1970). «A Relationsal Model of Data for Large Shared Data Banks» (em inglês). Comunicações da ACM. 13 (6): 377–387.10.1145/362384.362685. S2CID 207549016.
  5. ↑ a b d Codd, E. F. «Further Normalization of the Data Base Relationsal Model» (em inglês). (Apresentado na Courant Computer Science Symposia Series 6, "Data Base Systems", Nova York, 24–25 de maio de 1971.) IBM Research Report RJ909 (31 de agosto de 1971). Republicado em Randall J. Rustin (ed.), Sistemas de Base de Dados: Simpósio de Ciência da Computação Corante Série 6. Prentice-Hall, 1972.
  6. ^ Codd, E. F. «Recent Investigations into Relationsal Data Base Systems» (em inglês). IBM Research Report RJ1385 (23 de abril de 1974). Republicado em Proc. Congresso de 1974 (Stockholm, Suécia, 1974), N.Y.: North-Holland (1974).
  7. ^ Data, C. J. (1999). Uma Introdução aos Sistemas de Banco de DadosAddison-Wesley, p. 290.
  8. ^ Darwen, Hugh; Date, C. J.; Fagin, Ronald (2012). "Um formulário normal para prevenir tuplas redundantes em bases de dados relacionais" (PDF). Proceedings of the 15th International Conference on Database Theory. Conferência Conjunta EDBT/ICDT 2012. ACM International Conference Proceeding Series. Association for Computing Machinery. p. 114. doi:10.1145/2274576.2274589. ISBN 978-1-4503-0791-8. OCLC 802369023. Arquivado (PDF) do original em 6 de março de 2016. Retrieved 22 de Maio, 2018.
  9. ^ Kumar, Kunal; Azad, S. K. (outubro de 2017). Padrão de projeto de normalização de banco de dados. 2017 4a Conferência Internacional da Seção do IEEE Uttar Pradesh sobre Elétrica, Computador e Eletrônica (UPCON). IEEE. doi:10.1109/upcon.2017.8251067. ISBN 9781538630044. S2CID 24491594.
  10. ↑ a b c «Database normalization in MySQL: Four quick and easy steps» (em inglês). ComputadorWeekly.com. Arquivado do original em 30 de agosto de 2017. Retrieved 23 de Março, 2021.
  11. ^ «Database Normalization: 5th Normal Form and Beyond» (em inglês). Base de Conhecimento MariaDB. Retrieved 23 de Janeiro, 2019.
  12. ^ "Forma Normal Adicional - Design de Banco de Dados e Relacional Teoria - página 151". o que-quando-como.com. Retrieved 22 de Janeiro, 2019.
  13. ↑ a b Date, C. J. (21 de dezembro de 2015). O Novo Dicionário de Banco de Dados Relacional: Termos, Conceitos e Exemplos. «O'Reilly Media, Inc.». p. 138. ISBN 9781491951699.
  14. ^ Date, C. J. (21 de dezembro de 2015). O Novo Dicionário de Banco de Dados Relacional: Termos, Conceitos e Exemplos. «O'Reilly Media, Inc.». p. 163. ISBN 9781491951699.
  15. ^ «normalization - would like to Understand 6NF with an Exemplo» (em inglês). Overflow em pilha. Retrieved 23 de Janeiro, 2019.
  16. ^ Microsoft Corporation. Índices de Colunas: Visão geral. https://docs.microsoft.com/en-us/sql/relational-databases/indexes/columnstore-indexes-overview. Acessado em 23 de março de 2020.

Contenido relacionado

Microkernel

Na ciência da computação, um microkernel é a quantidade quase mínima de software que pode fornecer os mecanismos necessários para implementar um sistema...

Ciência da Computação

Ciência da computação é o estudo da computação, automação e informação. A ciência da computação abrange disciplinas teóricas para disciplinas...

Codificações de caracteres em HTML

Enquanto a linguagem de marcação de hipertexto está em uso desde 1991, o HTML 4.0 de dezembro de 1997 foi a primeira versão padronizada em que os...
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save