Toda definiçao das regras formais
Etiqueta: visualeditor
 
(31 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 1: Linha 1:
== '''Conceito''' ==
= '''Conceito''' =
<br>


===== '''Normalização''' é o processo que organiza os dados de uma tabela de um banco de dados, aplicado as regras de formas normais.Para executar o processo de normalização requer muita atenção, tendo que separar diferentes informações em diferentes tabelas para evitar redundâncias e inconsistências , pois o objetivo é melhorar a performance e facilitar a manutenção do banco de dados. =====
* Normalização é um processo no qual se aplicam regras a todas as tabelas de um banco de dados
Definição de redundâncias e inconsistências:
* Objetivo: evitar falhas no projeto, exemplos:
*** Redundância de dados
*** Mistura de diferentes assuntos numa mesma tabela
*** Ineficiência no uso das tabelas
<br>


===== '''Dados redundantes''':Armazenamento repetitivo de dados, tem como consequência  maior ocupação de dados de armazenamento no disco,afetando o desempenho do sistema e dificultado a manutença no banco de dados. =====
= Formas Normais =
* Sequência de passos que podem ser aplicados a uma proposta inicial de um DER de forma que posteriormente teremos um padrão normalizado
<br>


===== '''Dependência inconsistente''' : E quando um dado na esta no lugar apropriado na tabela , com isso a tabela fica bagunçada ,e durante o processo de procura de um determinado dado,ele pode estar ausente ou danificado . =====
* '''1a. Forma Normal - 1FN'''
** Uma tabela estará na 1FN se não houver grupo de dados repetidos, isto é, se todos os domínios onde os  valores estão armazenados são únicos.  Em outras palavras podemos definir que a primeira forma normal não admite repetições ou campos que tenha mais que um valor.   
** Para se aplicar a 1FN é necessário 
*** 1 - Identificar a chave(endereço) primaria da entidade
*** 2 - Identificar o grupo repetitivo e removê-lo da entidade
*** 3 - Criar uma nova entidade com a chave da entidade anterior e o grupo repetitivo. 
<br>


===== '''Aplicação de normalização na Tabela''' =====
* '''2a. Forma Normal - 2FN''''
** Uma tabela estará na 2FN se ela estiver na 1FN e todos os atributos não chave forem totalmente dependentes da chave primária.   
** Para se aplicar a 2FN é necessário:   
*** 1 - Identificar os atributos não dependentes de toda a chave primária
*** 2 - Remover da entidade todos esses atributos identificados e criar uma nova entidade com eles. 
<br>


===== Não se pode misturar assuntos diferentes em uma mesma tabela , exemplo: na tabela de clientes, deve ficar somente em campos relacionados com o assunto clientes. Não se pode misturar junto com  os pedidos ,,produtos e outras coisas . Isso pode gerar uma repetição sem necessidade em uma mesma tabela, virando uma dependência inconsistente. =====
* '''3a. Forma Normal - 3FN''''
'''Formas normais:'''
** Uma tabela está na Terceira Forma Normal 3FN se ela estiver na 2FN e se nenhuma coluna não-chave depender de outra coluna não-chave. Na 3FN nenhum campo é resultado da relação de  outros campos.  
** Para se aplicar a 3FN é necessário:
*** 1 - Identificar todos os atributos que são funcionalmente dependentes de outros atributos não chave
*** 2 - Removê-los.
<br>


===== O Processo de normalização aplica uma série de regras sobre as tabelas de um banco de dados, para verificar se estas estão corretamente projetadas. Embora existam cinco '''formas normais''' , nos usamos um conjunto de três ''formas normais , das 5 formas.''=====
= Exemplos =
<br>


===== 3 tipos de formas normais =====
* 1FN:
* Antes:
{| class="wikitable"
!chave
!nome
!endereço
|-
|U001
|matheus
|av. floriano peixoto bairro umuarama
|-
|U002
|vitor
|av. rondon pacheco  bairro saraiva
|-
|U003
|rafael
|av. brasil  bairro Brasil
|}
<br>


===== Conceito: =====
* Depois:
'''1FN – Primeira Forma Normal'''
{| class="wikitable"
!chave
!nome
!rua/av
!bairro
|-
|U001
|matheus
|av. floriano peixoto
| umuarama
|-
|U002
|vitor
|av. Rondon Pacheco
| Saraiva
|-
|U003
|rafael
|av. Brasil
| Brasil
|}


===== Uma entidade estará na 1FN, se e somente se, todos seus atributos (colunas) forem atômicos, ou seja não conter grupos repetitivos ou colunas que tenham mais de um valor.=====
<br>
==== Passos a serem aplicados para consolidação da 1FN: ====
* 2FN.
=====  -Identificação da chave primária da tabela. =====
<br>
=====  -Identificação da coluna que contem dados repetidos e removê-las. =====
=====  -Criação de uma nova tabela com chave primária para armazenamento do dado repetido.=====
=====  -Criar uma relação entre a tabela principal e a tabela secundária=====
Exemplo de normalização de dados. Primeira forma normal Considere a tabela cliente abaixo:


Cliente Código_cliente Nome
* Antes:


Telefone
{| class="wikitable"
!N_Pedido
!Codigo_produto
!produto
!Qtd
!unidade
!subtotal
|-
|1
|P01
|mesa
|5
|200
|1000
|-
|2
|P02
|cadeira
|5
|100
|500
|-
|3
|P03
|computador
|5
|500
|2500
|}
* <br>Depois:
{| class="wikitable"
!N_Pedido
!Codigo_produto
!Qtd
!unidade
!subtotal
|-
|1
|P01
|5
|200
|1000
|-
|2
|P02
|5
|100
|500
|-
|3
|P03
|5
|500
|2500
|}
{| class="wikitable"
!codigo_produto
!produto
|-
|P01
|mesa
|-
|P02
|cadeira
|-
|P03
|computador
|}
* 3FN.
* Depois:
{| class="wikitable"
!n_pedido
!codigo_produto
!qtd
!unidade
|-
|1
|P01
|5
|100
|-
|2
|P02
|5
|200
|-
|3
|P03
|5
|300
|}
<br>


Endereço
= Exercícios =
<br>


Agora a tabela com os dados:
* 1. Normalizar as tabelas definidas na última aula
 
* 2. Abrir software DIA online ou outro que crie diagramas
imagem1
* 3. Criar DER usado o software
 
* 4. Gerar PDF
Tabela desnormalizada, ou seja, não está na 1ª forma normal
* 5; Enviar para email luiz.theodoro@ufu.br
 
** Prazo: 17/11 - 23 hs.
Todos os clientes possuem Rua, CEP e Bairro, e essas informações estão na mesma célula da tabela, logo ela não está na primeira forma normal. Para normalizar, deveremos colocar cada informação em uma coluna diferente, como no exemplo a seguir.
 
imagem 2
 
Tabela na primeira forma norma
 
Imagem 3
 
Tabela na primeira forma normal
 
Toda tabela não precisa obrigatoriamente ser normalizada com 1FN A normalização é um processo corretivo que deve ser aplicado em casos específicos onde o problema for identificado. Claro que tudo irá depender de como a análise dos dados foram feitas, mas um analista experiente, já a aplica a normalização por padrão.
===== '''2FN – Segunda Forma Normal'''=====
===== Uma entidade está na 2FN, se e somente se, estiver na 1FN e todos seus atributos (colunas) não chaves, dependam unicamente da chave primária. Se algum atributo depende de apenas uma parte da chave primária, isso é considerada uma violação da 2FN. =====
 
==== Passos a serem aplicados para consolidação da 2FN: ====
-Identificar colunas que não são funcionalmente dependentes da chave primária da tabela.
 
-Remover a coluna da tabela e criar uma nova tabela com esses dados.
 
Exemplo de segunda forma normal
 
Considere a tabela vendas abaixo:
 
Vendas
 
N_pedido
 
Código_produto
 
Produto
 
Quant
 
Valor_unit
 
Subtotal
 
Agora a tabela com os dados:
 
Imagem 4
 
Tabela não está na segunda forma normal
 
Analisando teremos:
 
===== O nome do produto depende do código do produto, porém não depende de N_pedido que é a chave primária da tabela, portanto não está na segunda forma normal. Isto gera problemas com a manutenção dos dados, pois se houver alteração no nome do produto teremos que alterar em todos os registros da tabela venda. =====
Para normalizar esta tabela teremos de criar a tabela Produto que ficará com os atributos Código_produto e produto e na tabela Venda manteremos somente os atributos N_pedido, código_produto, quant, valor_unit e subtotal. Veja o resultado abaixo:
 
Imagem 5  
 
Tabela na segunda forma normal
 
Imagem 6
 
Tabela na 2ª forma normal
 
===== '''3FN – Terceira Forma Normal'''=====
Uma entidade está na 3FN, se e somente se, estiver na 2FN e todos os atributos (colunas) não chave, forem mutuamente independentes, isto é, não há dependência funcional entre elas, e todas dependem única e exclusivamente da chave primária de forma irredutível.
 
==== Passos a serem aplicados para consolidação da 3FN: ====
– Identificar as colunas que são funcionalmente dependentes das outras colunas não chave
 
– Remover essas colunas
 
Exemplo de normalização na terceira forma normal
 
Considere a tabela abaixo:
 
Imagem 7
 
Tabela não está na terceira forma normal 
 
Considerando ainda a nossa tabela Venda, veremos que a mesma não está na '''terceira forma normal,''' pois o subtotal é o resultado da multiplicação Quant X Valor_unit, desta forma a coluna subtotal depende de outras colunas não-chave.
 
Para normalizar esta tabela na '''terceira forma normal''' teremos de eliminar a coluna subtotal, como no exemplo a seguir:
 
Imagem 8 
 
Tabela na terceira forma normal
 
Bibliografia:
 
https://pt.wikipedia.org/wiki/Normaliza%C3%A7%C3%A3o_de_dados#Formas_Normais
 
http://www.luis.blog.br/normalizacao-de-dados-e-as-formas-normais.aspx
 
https://support.microsoft.com/pt-br/kb/283878
 
http://imasters.com.br/banco-de-dados/desnormalizacao-e-redundancia-controlada-em-bancos-de-dados-relacionais/?trace=1519021197&source=single
 
http://www.ifc-camboriu.edu.br/~frozza/2011.1/IE10/IE10-BDD-Aula003-Normalizacao-Revisao.pdf

Edição atual tal como às 23h59min de 16 de novembro de 2017

Conceito


  • Normalização é um processo no qual se aplicam regras a todas as tabelas de um banco de dados
  • Objetivo: evitar falhas no projeto, exemplos:
      • Redundância de dados
      • Mistura de diferentes assuntos numa mesma tabela
      • Ineficiência no uso das tabelas


Formas Normais

  • Sequência de passos que podem ser aplicados a uma proposta inicial de um DER de forma que posteriormente teremos um padrão normalizado


  • 1a. Forma Normal - 1FN
    • Uma tabela estará na 1FN se não houver grupo de dados repetidos, isto é, se todos os domínios onde os valores estão armazenados são únicos. Em outras palavras podemos definir que a primeira forma normal não admite repetições ou campos que tenha mais que um valor.   
    • Para se aplicar a 1FN é necessário:  
      • 1 - Identificar a chave(endereço) primaria da entidade
      • 2 - Identificar o grupo repetitivo e removê-lo da entidade
      • 3 - Criar uma nova entidade com a chave da entidade anterior e o grupo repetitivo. 


  • 2a. Forma Normal - 2FN'
    • Uma tabela estará na 2FN se ela estiver na 1FN e todos os atributos não chave forem totalmente dependentes da chave primária.  
    • Para se aplicar a 2FN é necessário:  
      • 1 - Identificar os atributos não dependentes de toda a chave primária
      • 2 - Remover da entidade todos esses atributos identificados e criar uma nova entidade com eles. 


  • 3a. Forma Normal - 3FN'
    • Uma tabela está na Terceira Forma Normal 3FN se ela estiver na 2FN e se nenhuma coluna não-chave depender de outra coluna não-chave. Na 3FN nenhum campo é resultado da relação de  outros campos.
    • Para se aplicar a 3FN é necessário:
      • 1 - Identificar todos os atributos que são funcionalmente dependentes de outros atributos não chave
      • 2 - Removê-los.


Exemplos


  • 1FN:
  • Antes:
chave nome endereço
U001 matheus av. floriano peixoto bairro umuarama
U002 vitor av. rondon pacheco bairro saraiva
U003 rafael av. brasil bairro Brasil


  • Depois:
chave nome rua/av bairro
U001 matheus av. floriano peixoto umuarama
U002 vitor av. Rondon Pacheco Saraiva
U003 rafael av. Brasil Brasil


  • 2FN.


  • Antes:
N_Pedido Codigo_produto produto Qtd unidade subtotal
1 P01 mesa 5 200 1000
2 P02 cadeira 5 100 500
3 P03 computador 5 500 2500

  • Depois:
N_Pedido Codigo_produto Qtd unidade subtotal
1 P01 5 200 1000
2 P02 5 100 500
3 P03 5 500 2500
codigo_produto produto
P01 mesa
P02 cadeira
P03 computador
  • 3FN.
  • Depois:
n_pedido codigo_produto qtd unidade
1 P01 5 100
2 P02 5 200
3 P03 5 300


Exercícios


  • 1. Normalizar as tabelas definidas na última aula
  • 2. Abrir software DIA online ou outro que crie diagramas
  • 3. Criar DER usado o software
  • 4. Gerar PDF
  • 5; Enviar para email luiz.theodoro@ufu.br
    • Prazo: 17/11 - 23 hs.