Mostrando postagens com marcador normalização. Mostrar todas as postagens
Mostrando postagens com marcador normalização. Mostrar todas as postagens

sexta-feira, 24 de maio de 2013

Terceira Forma Normal (3NF)

Uma entidade está em Terceira Forma Normal se e somente estiver em Primeira e em Segunda Forma Normal e todos os atributos não chave dependerem funcionalmente da chave primária.

Exemplo:
Pedido (nro_pedido, data, cod_cliente, nome_cliente, email_cliente, valor_total_pedido)

Vamos verificar a dependência funcional dos atributos:
nro_pedido -> data
nro_pedido -> cod_cliente
nro_pedido -> valor_total_pedido
cod_cliente -> nome_cliente
cod_cliente -> email_cliente

Verificamos que os atributos nome_cliente e email_cliente não são dependentes da chave primária e sim do atributo cod_cliente. Será necessário então desmembrar a entidade pedido.

Pedido (nro_pedido, data, cod_cliente, valor_total_pedido)
Que terá como chave primária o atributo nro_pedido.

Cliente (cod_cliente, nome_cliente, email_cliente)
Que terá como chave primária o atributo cod_cliente.

quinta-feira, 23 de maio de 2013

Segunda Forma Normal (2NF)

Uma entidade encontra-se em Segunda Forma Normal se e somente estiver em Primeira Forma Normal e não tiver atributos com dependências parciais. No caso de uma chave primária composta, isto é, que possui mais de um atributo em sua composição, é denominada dependência parcial a dependência de um atributo não chave a apenas uma parte da chave primária.

Tomemos como exemplo a tabela compra, descrita abaixo:

Compra (nro_nf, cod_fornecedor, cod_produto, data,nome produto, quantidade, valor_unitario, valor_total_nota)

Tendo como chave primária os atributos: nro_nf, cod_fornecedor, cod_produto

Se analisarmos a dependência funcional teremos:
nro_nf, cod_fornecedor --> data
nro_nf, cod_produto --> quantidade
nro_nf, cod_produto --> valor_unitario
nro_nf, cod_fornecedor --> valor_total_nota
cod_produto --> nome_produto

Vemos agora que nem todos os atributos dependem da chave primária. O que não é permitido pela Segunda Forma Normal. Para que essa entidade fique em 2NF, teremos de desmembrá-la.

Ela ficará assim:

Compra (nro_nf, cod_fornecedor, data, valor_total_nota)
Tendo como chave primária os atributos nro_nf e cod_fornecedor e como chave estrangeira o atributo cod_fornecedor.

Item_compra (nro_nf, cod_produto, quantidade, vl_unitario)
Tendo como chave primária os atributos nro_nf e cod_produto e como chaves estrangeiras os atributos nro_nf e cod_produto.

Produto (codigo, nome)
Tendo como chave primária o atributo codigo.

quarta-feira, 22 de maio de 2013

Primeira Forma Normal (1NF)

Uma entidade está em Primeira Forma Normal, se e somente todos os seus atributos são atômicos, isto é, se contém um valor único (atômico) e não contém atributos multivalorados.

Exemplo:
Dada a entidade funcionario, definida com os atributos abaixo:
Funcionario (codigo, nome, data_admissao, data_demissao, habilidades)

Vemos que a entidade funcionario possui o campo multivalorado habilidades, o que não é permitido pela Primeira Forma Normal. Devemos então dividir a tabela funcionario de forma que o campo habilidades se torne uma nova entidade.

Então teremos:
Funcionario (codigo, nome, data_admissao, data_demissao)
Possui (cod_funcionario, cod_habilidade)
Habilidade (codigo, descricao)

Exemplo:
Fornecedor (codigo, nome, endereco, telefones)

Vemos que a entidade fornecedor tem como atributo composto endereco e como atributo multivalorado telefones.

Em relação ao atributo composto endereco, sabemos que o mesmo é composto, pois nele pressupõe-se incluir as informações de rua, complemento, bairro, cidade, estado e cep . Ou substituímos o atributo endereco por seus atributos componentes (rua, complemento, bairro, cidade, estado e cep ) ou criamos uma
outra entidade com o nome do atributo composto (endereco), tendo como atributos dessa nova entidade rua, complemento, bairro cidade, estado e cep.

Já o campo telefones, por estar no plural, indica que nele poderá ser armazenado mais de um número. Pela regra, esse atributo precisa ser separado em outra entidade, que pode ser chamada de telefone e que conterá os diversos números de telefone do fornecedor.

Assim, temos:
Fornecedor (codigo, nome, rua, complemento, bairro, cidade, estado, cep)

Tendo como chave primária o atributo codigo.
Telefone (cod_fornecedor, nro telefone)

Tendo como chave primária os atributos cod_fornecedor e nro_telefone, já que isso garante que não será cadastrado o mesmo telefone para o forncedor e como chave estrangeira o atributo cod_fornecedor.

Fornecedor (codigo, nome)

Tendo como chave primária o atributo código.
Endereco (cod_fornecedor, rua, complemento, bairro, cidade, estado, cep).

Tendo como chave primária o atributo cod_fornecedor e como chave estrangeira o atributo cod_fornecedor.

terça-feira, 21 de maio de 2013

Saiba o que é Normalização

Normalização é um processo utilizado para acertar possíveis problemas estruturais das entidades e relacionamentos com campos criados – também chamados de anomalias – em um modelo de entidade e relacionamento. Consiste na análise dos atributos das entidades e relacionamentos com campos, sob o ponto de vista das regras chamadas formas normais, que descrevem, com base na teoria de conjuntos, na álgebra e no cálculo relacional, o que devemos ou não fazer nas estruturas das entidades e relacionamentos de nosso modelo, baseados em conceitos matemáticos.

Essa análise pode demonstrar a necessidade de alterarmos a estrutura de nossas entidades e relacionamentos com campos, dividindo ou agrupando seus atributos para aprimorar o processo de recuperação das informações (performance) e seu armazenamento, de modo a evitar perda, redundância e distorção da informação.

Sempre que formos obrigados pela aplicação das formas normais em nosso modelo a dividir entidades, temos que garantir que a divisão poderá ser revertida, isto é, que, mesmo particionada em duas ou mais entidades, uma entidade poderá voltar à sua formação original, por meio de operações de conjuntos.

Dependência funcional
Seja R uma relação e X e Y atributos de R. X e Y podem ser atributos simples ou compostos.
X --> Y (o atributo X determina funcionalmente o atributo Y) sempre que duas tuplas quaisquer de R tiverem o mesmo valor para X, elas possuem também o mesmo valor para Y.

Exemplo:
Tendo a entidade funcionario os atributos codigo, nome, cidade e DDD, e sabendo  que o codigo é a chave primária da entidade funcionario, se analisarmos esses atributos sob a óptica da dependência funcional, teremos:
codigo -->  nome
codigo -->  cidade
cidade -->  DDD

Logo, podemos dizer que os atributos nome e cidade dependem do atributo codigo. Já o atributo DDD depende do atributo cidade. Definida a dependência funcional, nas próximas postagens abordaremos sobre as definições das formas normais.