3.1 Normalização do banco de dados

A forma normal é uma propriedade de uma relação em um modelo de dados relacional que a caracteriza em termos de redundância, levando potencialmente a resultados logicamente errôneos de amostragem ou alteração de dados. A forma normal é definida como o conjunto de requisitos que uma relação (tabelas em um banco de dados) deve satisfazer.

O processo de converter relacionamentos de banco de dados em um formato que esteja em conformidade com os formatos normais é chamado de normalização. A normalização destina-se a trazer a estrutura do banco de dados para um formato que forneça redundância lógica mínima e não se destina a reduzir ou aumentar o desempenho ou reduzir ou aumentar o volume físico do banco de dados .

O objetivo final da normalização é reduzir a possível inconsistência das informações armazenadas no banco de dados. O objetivo geral do processo de normalização é o seguinte:

  • exclusão de certos tipos de redundância;
  • corrigir algumas anomalias de atualização;
  • desenvolvimento de um projeto de banco de dados que seja uma representação suficientemente “alta” do mundo real, seja intuitivo e possa servir como uma boa base para expansão posterior;
  • simplificando o procedimento para aplicar as restrições de integridade necessárias.

A redundância geralmente é eliminada decompondo as relações de forma que apenas os fatos primários sejam armazenados em cada relação (isto é, fatos que não são derivados de outros fatos armazenados).

Embora as idéias de normalização sejam muito úteis para o projeto de banco de dados, elas não são de forma alguma um meio universal ou exaustivo de melhorar a qualidade de um projeto de banco de dados. Isso se deve ao fato de que há uma grande variedade de possíveis erros e deficiências na estrutura do banco de dados que não podem ser eliminados pela normalização.

Apesar dessas considerações, a teoria da normalização é uma conquista muito valiosa da teoria e prática relacional, pois fornece critérios cientificamente rigorosos e razoáveis ​​para a qualidade de um projeto de banco de dados e métodos formais para melhorar essa qualidade. Isso faz com que a teoria da normalização se destaque das abordagens de design puramente empíricas oferecidas em outros modelos de dados. Além disso, pode-se argumentar que em todo o campo da tecnologia da informação praticamente não existem métodos para avaliar e melhorar soluções de design que sejam comparáveis ​​​​à teoria da normalização de bancos de dados relacionais em termos de nível de rigor formal.

A normalização às vezes é criticada com base no fato de que "é apenas senso comum" e qualquer profissional competente projetará "naturalmente" um banco de dados totalmente normalizado sem ter que aplicar a teoria da dependência.

No entanto, como observou o professor Christopher Date, a normalização são precisamente os princípios do senso comum que orientam um designer maduro em sua mente, ou seja, os princípios da normalização são o senso comum formalizado . Entretanto, identificar e formalizar os princípios do senso comum é uma tarefa muito difícil, e o sucesso em resolvê-la é uma conquista significativa.

3.2 Primeira forma normal

A primeira forma normal (1NF) é a forma normal básica de uma relação no modelo de dados relacional.

Uma variável de relação está na primeira forma normal se e somente se, em qualquer valor válido dessa variável, cada tupla de relação contém exatamente um valor para cada um dos atributos.

Em um modelo relacional, uma relação está sempre na primeira forma normal, por definição do conceito de relação.

Quanto às várias tabelas, elas podem não ser representações corretas de relacionamentos e, portanto, podem não estar na 1NF. De acordo com a definição de Christopher Date para tal caso, uma tabela é normalizada (equivalentemente, está na primeira forma normal) se e somente se for uma representação direta e verdadeira de alguma relação. Mais especificamente, a tabela em questão deve satisfazer as cinco condições seguintes:

  • Não há ordem das linhas de cima para baixo (em outras palavras, a ordem das linhas não transmite nenhuma informação).
  • Não há ordem das colunas da esquerda para a direita (em outras palavras, a ordem das colunas não contém informações).
  • Sem linhas duplicadas.
  • Cada interseção de uma linha e uma coluna contém exatamente um valor do domínio correspondente (e nada mais).
  • Todas as colunas são "regulares".

A "regularidade" de todas as colunas de uma tabela significa que não há componentes "ocultos" na tabela que só podem ser acessados ​​na invocação de algum operador especial em vez de se referir a nomes de colunas regulares ou que levam a efeitos colaterais para linhas ou tabelas ao invocar operadores padrão.

A tabela original não normalizada (isto é, não é uma representação correta de alguma relação):

Funcionário Número de telefone
Ivanov I.I.

283-56-82

390-57-34

Petrov P.P. 708-62-34
Sidorov S.S.

Uma tabela reduzida a 1NF, que é a representação correta de alguma relação:

Funcionário Número de telefone
Ivanov I.I. 283-56-82
Ivanov I.I. 390-57-34
Petrov P.P. 708-62-34

3.3 Segunda forma normal

Uma variável de relação está na segunda forma normal se e somente se estiver na primeira forma normal e todo atributo não-chave for irredutivelmente dependente de (toda) sua chave candidata .

Irredutibilidade significa que a chave potencial não contém um subconjunto menor de atributos dos quais essa dependência funcional também pode ser derivada. Para uma dependência funcional irredutível, o conceito equivalente de "dependência funcional completa" é freqüentemente usado.

Se a chave candidata for simples, ou seja, consistir em um único atributo, então qualquer dependência funcional dela é irredutível (completa). Se a chave candidata for uma chave composta, então, de acordo com a definição da segunda forma normal, não deve haver atributos não-chave na relação que dependam de parte da chave candidata composta.

Um exemplo de conversão de uma relação para a segunda forma normal

Deixe o par de atributos {Filial da empresa, Cargo} formar a chave primária na seguinte relação:

R
filial da empresa Cargo Salário Disponibilidade de um computador
Filial em Tomsk Limpador 20000 Não
Filial em Moscou Programador 40000 Comer
Filial em Tomsk Programador 25000 Comer

Digamos que o salário dependa da filial e do cargo, e a disponibilidade de um computador dependa apenas do cargo.

Existe uma dependência funcional Posição -> Ter um computador, em que o lado esquerdo (determinante) é apenas uma parte da chave primária, o que viola a condição da segunda forma normal.

Para reduzir a 2NF, a relação original deve ser decomposta em duas relações:

R1
filial da empresa Cargo Salário
Filial em Tomsk Limpador 20000
Filial em Moscou Programador 40000
Filial em Tomsk Programador 25000
R2
Cargo Disponibilidade de um computador
Limpador Não
Programador Comer
Programador Comer

3.4 Terceira forma normal (3NF)

Uma variável de relação R está na 3FN se e somente se as seguintes condições forem verdadeiras:

  • Restá na segunda forma normal.
  • nenhum atributo não-chaveRnão está em dependência funcional transitiva da chave candidataR.

Explicações para a definição:

Um atributo não-chave de uma relação R é um atributo que não pertence a nenhuma das chaves candidatas de R.

A dependência funcional do conjunto de atributos Z no conjunto de atributos X (escrito X → Z, pronunciado “x determina z”) é transitivo se houver tal conjunto de atributos Y que X → Y e Y → Z. Neste Nesse caso, nenhum dos conjuntos X, Y e Z não é um subconjunto do outro, ou seja, as dependências funcionais X → Z, X → Y e Y → Z não são triviais e também não há dependência funcional Y → X.

Uma definição de 3NF, equivalente à de Codd, mas redigida de forma diferente, foi dada por Carlo Zaniolo em 1982. Segundo ela, uma variável de relação está na 3FN se e somente se cada uma de suas dependências funcionais X → A satisfaz pelo menos uma das seguintes condições:

  • X contém A (ou seja, X → A é uma dependência funcional trivial)
  • X - chave super
  • A é um atributo chave (ou seja, A faz parte de uma chave candidata).

A definição de Zaniolo define claramente a diferença entre 3NF e a Forma Normal de Boyce-Codd (BCNF): BCNF exclui a terceira condição ("A é um atributo chave").

Um resumo memorável e tradicionalmente descritivo da definição de 3NF de Codd foi dado por Bill Kent: cada atributo não-chave "deve fornecer informações sobre a chave, a chave completa e nada além da chave ".

A condição de depender da "chave completa" de atributos não-chave garante que a relação esteja na segunda forma normal; e a condição para que dependam de "nada além da chave" é que estejam na terceira forma normal.

Chris Date fala do resumo de Kent como um "recurso intuitivamente atraente" da 3FN e observa que, com uma ligeira modificação, também pode servir como uma definição da forma normal de Boyce-Codd mais estrita: "cada atributo deve fornecer informações sobre uma chave , uma chave completa e nada além da chave.

A versão de Kent da definição da 3NF é menos estrita do que a versão da forma normal de Boyce-Codd da formulação de Data, uma vez que a primeira afirma apenas que atributos não-chave dependem de chaves.

Os atributos primários (que são chaves ou partes delas) não precisam ser funcionalmente dependentes; cada um deles fornece informações sobre a chave fornecendo a própria chave ou parte dela. Deve-se notar aqui que esta regra é válida apenas para atributos não-chave, pois aplicá-la a todos os atributos desabilitará completamente todas as chaves alternativas complexas, pois cada elemento de tal chave violará a condição de "chave completa".

Considere a variável de relação R1 como um exemplo:

R1
Funcionário Departamento Telefone
Grishin Contabilidade 22-11-33
vasiliev Contabilidade 22-11-33
Petrov Fornecer 44-55-66

Cada funcionário pertence exclusivamente a um departamento; cada departamento tem um único telefone. O atributo Employee é a chave primária. Os funcionários não possuem telefones pessoais e o número de telefone do funcionário depende exclusivamente do departamento.

No exemplo, existem as seguintes dependências funcionais: Funcionário → Departamento, Departamento → Telefone, Funcionário → Telefone.

A variável de relação R1 está na segunda forma normal porque cada atributo tem uma dependência funcional irredutível da chave potencial Empregado.

A relação Funcionário → Telefone é transitiva, portanto a relação não está na terceira forma normal.

A divisão de R1 resulta em duas variáveis ​​de relação que estão na 3NF:

R2
Departamento Telefone
Contabilidade 22-11-33
Fornecer 44-55-66

R3
Funcionário Departamento
Grishin Contabilidade
vasiliev Contabilidade
Petrov Fornecer

A relação inicial R1, se necessária, é facilmente obtida como resultado da operação de junção das relações R2 e R3.