Sem resumo de edição
 
(36 revisões intermediárias por 3 usuários não estão sendo mostradas)
Linha 1: Linha 1:
* '''1FN - 1ª Forma Normal''': todos os atributos de uma tabela devem ser atômicos, ou seja, a tabela não deve conter grupos repetidos e nem atributos com mais de um valor. Os grupos repetidos devem ser postos em tabelas separadas, conectados por uma chave primária ou estrangeira.
= '''Conceito''' =
<br>


* 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
<br>


'''Exemplo:'''
= 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>


* '''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>


PESSOAS = {Id+ Nome + Endereço + Telefones}
* '''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>


* '''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.
<br>


Ela contém a chave primária “Id” e o atributo “Telefones” é um atributo multivalorado e, portanto, a tabela não está na 1FN. Para deixá-la na 1FN, cria-se uma nova tabela chamada TELEFONES que conterá “IdPessoa” como chave estrangeira de PESSOAS e “Telefone” como o valor multivalorado que será armazenado.
= Exemplos =
<br>


* 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>


PESSOAS = { Id + Nome + Endereço }
* Depois:
TELEFONES = { IdPessoa + Telefone }
{| class="wikitable"
!chave
!nome
!rua/av
!bairro
|-
|U001
|matheus
|av. floriano peixoto
| umuarama
|-
|U002
|vitor
|av. Rondon Pacheco
| Saraiva
|-
|U003
|rafael
|av. Brasil
| Brasil
|}


<br>
* 2FN.
<br>


* Antes:


* '''2FN - 2ª Forma Normal''': todos os atributos não chaves da tabela devem depender unicamente da chave primária. Para tanto, é preciso identificar as colunas que não são funcionalmente dependentes da chave primária da tabela e, em seguida, remover essa coluna da tabela principal e criar uma nova tabela com esses dados.
{| 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>


= Exercícios =
<br>


'''Exemplo:'''
* 1. Normalizar as tabelas definidas na última aula
 
* 2. Abrir software DIA online ou outro que crie diagramas
 
* 3. Criar DER usado o software
ALUNOS_CURSOS = { IdAluno + IdCurso + Nota + DescriçãoCurso }
* 4. Gerar PDF
 
* 5; Enviar para email luiz.theodoro@ufu.br
 
** Prazo: 17/11 - 23 hs.
Nessa tabela, o atributo “DescriçãoCurso” depende apenas da chave primária IdCurso. Dessa forma, a tabela não está na 2FN. Para tanto, cria-se uma nova tabela chamada CURSOS que tem como chave primária IdCurso e atributo “Descrição” retirando, assim, o atributo “DescriçãoCurso” da tabela ALUNOS_CURSOS.
 
 
ALUNOS_CURSOS = { IdAluno + IdCurso + Nota }
CURSOS = {IdCurso + Descrição}
 
 
 
* '''3FN - 3ª Forma Normal''': os atributos não chave de uma tabela devem ser mutuamente independentes e dependentes unicamente e exclusivamente da chave primária (um atributo B é funcionalmente dependente de A se, e somente se, para cada valor de A só existe um valor de B). Para atingir essa forma normal, é preciso identificar as colunas que são funcionalmente dependentes das outras colunas não chave e extraí-las para outra tabela.
 
 
'''Exemplo:'''
 
 
FUNCIONARIOS = { Id + Nome + IdCargo + DescriçãoCargo }
 
 
O atributo “DescriçãoCargo” depende exclusivamente de “IdCargo” (atributo não chave) e, portanto, deve-se criar uma nova tabela com esses atributos. Assim:
 
 
FUNCIONARIOS = { Id + Nome + IdCargo }
CARGOS = { IdCargo + Descrição }
 
 
*'''Exemplo:'''
**Caso discutido em sala de aula:
 
[[Arquivo:DiagramaBDUniversidade.png]]

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.