Sql em primeiro lugar, as formas normais de segundo e terceiro

Existem três fontes de anomalias de modificação no SQL Estes são definidos como primeiro, segundo, e terceiro formas normais

(1FN, 2NF, 3NF). Estas formas normais agir como remédios para modificação anomalias.

Video: Normalizacao: Terceira Forma Normal - 3FN

forma normal Primeira

Para estar em primeira forma normal (1FN), uma tabela deve ter as seguintes características:

  • A tabela é bidimensional com linhas e colunas.

  • Cada linha contém dados que pertencem a alguma coisa ou parte de uma coisa.

    Video: Normalizacao: 2FN

  • Cada coluna contém dados para um único atributo da coisa que ele está descrevendo.

  • Cada célula (intersecção de uma fila e de uma coluna) da tabela tem de ter apenas um único valor.

  • Entradas em qualquer coluna devem ser todos do mesmo tipo. Se, por exemplo, a entrada de uma linha de uma coluna contém um nome do funcionário, todas as outras linhas devem conter nomes de funcionários nessa coluna também.

  • Cada coluna deve ter um nome único.

  • Não há duas linhas podem ser idênticos (ou seja, cada linha deve ser exclusivo).

  • A ordem das colunas ea ordem das linhas não são significativas.

Uma tabela (relação) na primeira forma normal é imune a alguns tipos de anomalias de modificação, mas ainda está sujeita a outros. A tabela de vendas é em primeira forma normal, e a tabela está sujeita a deleção e inserção anomalias. forma normal primeira pode ser útil em algumas aplicações, mas não confiável em outros.

forma normal segunda

Para apreciar a segunda forma normal, você deve entender a idéia de dependência funcional. UMA dependência funcional é uma relação entre duas ou mais atributos. Um atributo é funcionalmente dependente de outro, se o valor de atributo do segundo determina o valor do primeiro atributo. Se você souber o valor do segundo atributo, você pode determinar o valor do primeiro atributo.



Suponhamos, por exemplo, que uma mesa tem atributos (colunas) StandardCharge, NumberOfTests, e Carga total que se relacionam por meio da seguinte equação:

TotalCharge = StandardCharge * NumberOfTests

Carga total é funcionalmente dependente tanto StandardCharge e NumberOfTests. Se você conhece os valores de StandardCharge e NumberOfTests, você pode determinar o valor de Carga total.

Cada tabela na primeira forma normal deve ter uma chave primária único. Essa chave pode consistir em uma ou mais de uma coluna. Uma chave que consiste em mais do que uma coluna é chamado um chave composta. Para ser na segunda forma normal (2NF), todos os atributos não-chave deve depender da chave inteira. Assim, cada relação que é em 1FN com uma única chave de atributo é automaticamente na segunda forma normal.

Se uma relação tem uma chave composta, todos os atributos não-chave devem depender de todos os componentes da chave. Se você tiver uma mesa onde alguns atributos não-chave não dependem de todos os componentes da chave, quebrar a tabela em duas ou mais tabelas de modo que - em cada uma das novas tabelas - todos os atributos não-chave depender de todos os componentes da chave primária.

Parecer confuso? Olhe para um exemplo para esclarecer o assunto. Considere a tabela SALES. Em vez de gravar apenas uma única compra para cada cliente, você adicionar uma linha cada vez que um cliente compra um item pela primeira vez. Uma diferença adicional é que os clientes charter (aqueles com Identificação do Cliente valores de 1001-1007) obter um desconto sobre o preço normal.

Identificação do Cliente não se identifica com exclusividade uma linha. Em duas fileiras, Identificação do Cliente é 1001. Em duas outras linhas, Identificação do Cliente é 1010. A combinação da Identificação do Cliente coluna e a produtos coluna identifica exclusivamente uma linha. Estas duas colunas em conjunto, são uma chave composta.

Se não fosse pelo fato de que alguns clientes beneficiar de um desconto e outros não, a tabela não seria na segunda forma normal, porque Preço (Um atributo não-chave) dependeria apenas de parte da chave (produtos). Porque alguns clientes se qualificam para um desconto, Preço depende tanto Identificação do Cliente e produtos, e a mesa está em segunda forma normal.

Video: sql - tabelas

forma normal terceiro

Tabelas em segunda forma normal são especialmente vulneráveis ​​a alguns tipos de anomalias de modificação de - em particular, os que vêm de dependências transitórias.

UMA transitivo dependência ocorre quando um atributo depende de um segundo atributo, que depende de um terceiro atributo. Eliminações em uma mesa com uma tal dependência pode causar perda de informações indesejadas. Uma relação em terceira forma normal é uma relação em segunda forma normal sem dependências transitórias.

Olhe novamente para a tabela de vendas, o que você sabe que é na primeira forma normal. Contanto que você restringir entradas para permitir que apenas uma linha para cada Identificação do Cliente, você tem uma chave primária de atributo único, e a mesa está na segunda forma normal. No entanto, a tabela ainda está sujeito a anomalias. O que se o cliente 1010 está descontente com a água sanitária, por exemplo, e retorna o item para um reembolso?

Você deseja remover a terceira linha da tabela, que registra o fato de que o cliente 1010 comprou alvejante. Você tem um problema: Se você remover essa linha, você também perde o fato de que água sanitária tem um preço de US $ 4. Esta situação é um exemplo de uma dependência transitiva. Preço depende de produtos, que, por sua vez, depende da chave primária Identificação do Cliente.

Quebrando tabela de vendas em duas tabelas resolve o problema de dependência transitiva. As duas tabelas compõem um banco de dados que está em terceira forma normal.


Publicações relacionadas