3.2 NORMALIZAÇÃO Normalização é um processo sistemático através do qual uma tabela relacional não normalizada é transformada em um conjunto de tabelas normalizadas, que representem da melhor forma possível uma realidade a ser modelada. Um conceito básico usado para a normalização é o conceito de dependência funcional.
3.2 NORMALIZAÇÃO 3.2.1 Dependência Funcional Dada uma relação, um atributo Y é dito funcionalmente dependente de um outro atributo X se e, somente se, cada ocorrência de X está associada sempre com a mesma ocorrência de Y. X -> Y Diz-se que:  X determina Y X designa Y
3.2.2  Processo de Normalização O processo de normalização passa pelas seguintes etapas: O documento ou arquivo a ser normalizado é representado na forma de uma tabela não normalizada; A tabela vai sendo decomposta em tabelas normalizadas ("bem projetadas"). A normalização dá-se em três passos principais, passando por três formas normais; Uma forma normal é um conjunto de regras que uma tabela deve obedecer. Estas regras destinam-se a eliminar as redundâncias de dados. 3.2 NORMALIZAÇÃO
3.2 NORMALIZAÇÃO - Exemplo de documento a normalizar: Relatório de Alocação a Projeto CÓDIGO DO PROJETO: LSC001  TIPO: Novo Desenv.  DESCRIÇÃO: Sist. Estoque. NOEMP NOME CATEG SALÁRIO INÍCIO    TEMPO  PROJETO ALOCAÇÃO 2146   João   A1   40 01/11/91   24 3145   Sílvio     A2   40 02/10/91   24 6126   José   B1   90 03/10/92   18 1181   Carlos    A2   40 01/11/92   12 CÓDIGO DO PROJETO: PAG02  TIPO: Manutenção  DESCRIÇÃO: Sistema de RH. NOEMP NOME CATEG SALÁRIO INÍCIO    TEMPO  PROJETO ALOCAÇÃO 1181   Carlos   A2   40 01/11/93   14 5672   Luís      A1   40 12/10/91   24 6126   José   B1   90 31/11/92   11
3.2 NORMALIZAÇÃO 3.2.3 Forma Não Normalizada Uma tabela não normalizada (NN) contém valores de atributos não atômicos, isto é, contém tabelas embutidas (grupos repetidos, arrays). Representação não normalizada do documento exemplo: PROJ (  CODPROJ , TIPOPROJ, DESCR,    ( NOEMP , NOME, CAT, SAL, DATAINÍCIO,TEMPOALOC)) Deve-se observar a representação do embutimento de tabelas através de parênteses e a indicação das chaves primárias em cada nível de embutimento.
3.2.4. Primeira Forma Normal Uma tabela na primeira forma normal (PFN) não contém tabelas embutidas. A passagem à primeira forma normal é feita nos seguintes passos: 1. Para cada tabela embutida (cada uma abre parênteses), inclusive a mais externa, é criada uma tabela na PFN que contém: - as chaves primárias de cada tabela externa à tabela embutida; - os atributos da própria tabela embutida. 2. São definidas as chaves primárias das tabelas na PFN. 3.2 NORMALIZAÇÃO
3.2 NORMALIZAÇÃO 3.2.4.1 Passagem à PFN - decomposição de tabelas - Tabela1: corresponde ao nível externo PROJ ( CODPROJ, TIPOPROJ, DESCR) - Tabela2: corresponde à tabela embutida PROJEMP (CODPROJ, NOEMP, NOME, CAT, SAL,    DATAINÍCIO, TEMPOALOC )
3.2 NORMALIZAÇÃO 3.2.4.2 Passagem à PFN - identificação de chaves - Tabela1: corresponde ao nível externo PROJ (  CODPROJ , TIPOPROJ, DESCR) - Tabela2: corresponde à tabela embutida PROJEMP ( CODPROJ, NOEMP , NOME, CAT, SAL,    DATAINÍCIO, TEMPOALOC )
3.2 NORMALIZAÇÃO 3.2.5 Segunda Forma Normal Uma tabela está na segunda forma normal (SFN) quando, além de estar na PFN, cada atributo não chave primária depende funcionalmente de toda a chave primária e não de apenas parte dela. Ao passar uma tabela para a SFN é necessário considerar apenas tabelas que tenham: - chave primária composta; - pelo menos um atributo não chave.
3.2 NORMALIZAÇÃO Para o caso do exemplo: PROJ ( CODPROJ , TIPOPROJ, DESCR) PROJEMP ( CODPROJ, NOEMP , DATAINÍCIO,TEMPOALOC) EMP ( NOEMP , NOME, CAT, SAL )
3.2 NORMALIZAÇÃO 3.2.6 Terceira Forma Normal Uma tabela está na terceira forma normal (TFN) quando, além de estar na SFN, cada atributo não chave primária depende diretamente da chave primária, isto é,  não há dependências entre atributos não chave; Na passagem à TFN, basta considerar tabelas com mais de um atributo não chave.
3.2. NORMALIZAÇÃO Para o caso do exemplo: PROJ ( CODPROJ , TIPOPROJ, DESCR)
3.2. NORMALIZAÇÃO Para o caso do exemplo: PROJ ( CODPROJ , TIPOPROJ, DESCR) PROJEMP ( CODPROJ, NOEMP , DATAINÍCIO,TEMPOALOC)
3.2. NORMALIZAÇÃO Para o caso do exemplo: PROJ ( CODPROJ , TIPOPROJ, DESCR) PROJEMP ( CODPROJ, NOEMP , DATAINÍCIO,TEMPOALOC)
3.2. NORMALIZAÇÃO EMP é subdividida em duas: EMP (  NOEMP , NOME, CAT ) CATEGORIA ( CAT , SAL )
3.2. NORMALIZAÇÃO Documento normalizado: PROJ ( CODPROJ , TIPOPROJ, DESCR) PROJEMP ( CODPROJ, NOEMP , DATAINÍCIO,TEMPOALOC) EMP (  NOEMP , NOME, CAT ) CATEGORIA ( CAT , SAL )
3.2. NORMALIZAÇÃO Na Terceira Forma Normal: Atributos Calculados podem ser desconsiderados; Chaves candidatas não devem ser consideradas determinantes funcionais.
3.2. NORMALIZAÇÃO Exemplo genérico de Passagem à PFN Tabela NN:   ( A1,A2 , A3, A4, A5   ( B1 , B2, B3, B4   ( C1 ,C2, C3)   ( D1 , D2) )   ( E1 , E2, E3) )
3.2. NORMALIZAÇÃO PFN - Subdivisão de Tabelas 1.  (A1, A2, A3, A4, A5) 2.  (A1, A2, B1, B2, B3, B4) 3.  (A1, A2, B1, C1, C2, C3) 4.  (A1, A2, B1, D1, D2) 5.  (A1, A2, E1, E2, E3)
Exercício de Normalização 1 "Uma fábrica de móveis vai informatizar os pedidos de produtos especificados por funcionários para revendedores. Cada pedido contém um número, data, prazo de entrega, nome do cliente (revendedor), endereço, cidade, U.F., CGC e inscrição estadual do revendedor. Além disso, um pedido contém vários itens de pedido. Cada item de pedido registra o código do produto, descrição, setor, quantidade, valor unitário, desconto e subtotal." Forma Não-Normalizada: PEDIDO (NUM_PEDIDO, DATA, PRAZO, NOME_REV, ENDEREÇO, CIDADE,    UF, CGC, INSCR_EST, NUM_F    (COD_PROD, DESCR, SETOR, QUANTIDADE, VALOR_UNIT,  DESCONTO, SUBTOTAL) )
Exercício de Normalização 2 “ Uma empresa de ônibus possui um número, nome (empresa), endereço e nome do gerente. Cada empresa de ônibus possui vários ônibus e motoristas. Um ônibus pertence a somente uma empresa e um motorista pode trabalhar em mais de uma empresa de ônibus. Um ônibus possui um número, placa, ano de fabricação, tipo e capacidade (número de passageiros de acordo com o tipo do ônibus). Um motorista possui um número (especificado pela Secretaria Municipal de Transportes), nome e tempo de experiência. Uma linha de ônibus contém um número, itinerário, é executada por vários ônibus, pode ser percorrida várias vezes (cada uma delas com um horário de partida e de chegada) ao dia em sentidos opostos ou no mesmo sentido.  Por exemplo, a linha 31 sai às 8 horas no sentido centro/bairro e também às 8  horas no sentido bairro/centro.”

Normalização de Banco de Dados

  • 1.
    3.2 NORMALIZAÇÃO Normalizaçãoé um processo sistemático através do qual uma tabela relacional não normalizada é transformada em um conjunto de tabelas normalizadas, que representem da melhor forma possível uma realidade a ser modelada. Um conceito básico usado para a normalização é o conceito de dependência funcional.
  • 2.
    3.2 NORMALIZAÇÃO 3.2.1Dependência Funcional Dada uma relação, um atributo Y é dito funcionalmente dependente de um outro atributo X se e, somente se, cada ocorrência de X está associada sempre com a mesma ocorrência de Y. X -> Y Diz-se que: X determina Y X designa Y
  • 3.
    3.2.2 Processode Normalização O processo de normalização passa pelas seguintes etapas: O documento ou arquivo a ser normalizado é representado na forma de uma tabela não normalizada; A tabela vai sendo decomposta em tabelas normalizadas ("bem projetadas"). A normalização dá-se em três passos principais, passando por três formas normais; Uma forma normal é um conjunto de regras que uma tabela deve obedecer. Estas regras destinam-se a eliminar as redundâncias de dados. 3.2 NORMALIZAÇÃO
  • 4.
    3.2 NORMALIZAÇÃO -Exemplo de documento a normalizar: Relatório de Alocação a Projeto CÓDIGO DO PROJETO: LSC001 TIPO: Novo Desenv. DESCRIÇÃO: Sist. Estoque. NOEMP NOME CATEG SALÁRIO INÍCIO TEMPO PROJETO ALOCAÇÃO 2146 João A1 40 01/11/91 24 3145 Sílvio A2 40 02/10/91 24 6126 José B1 90 03/10/92 18 1181 Carlos A2 40 01/11/92 12 CÓDIGO DO PROJETO: PAG02 TIPO: Manutenção DESCRIÇÃO: Sistema de RH. NOEMP NOME CATEG SALÁRIO INÍCIO TEMPO PROJETO ALOCAÇÃO 1181 Carlos A2 40 01/11/93 14 5672 Luís A1 40 12/10/91 24 6126 José B1 90 31/11/92 11
  • 5.
    3.2 NORMALIZAÇÃO 3.2.3Forma Não Normalizada Uma tabela não normalizada (NN) contém valores de atributos não atômicos, isto é, contém tabelas embutidas (grupos repetidos, arrays). Representação não normalizada do documento exemplo: PROJ ( CODPROJ , TIPOPROJ, DESCR, ( NOEMP , NOME, CAT, SAL, DATAINÍCIO,TEMPOALOC)) Deve-se observar a representação do embutimento de tabelas através de parênteses e a indicação das chaves primárias em cada nível de embutimento.
  • 6.
    3.2.4. Primeira FormaNormal Uma tabela na primeira forma normal (PFN) não contém tabelas embutidas. A passagem à primeira forma normal é feita nos seguintes passos: 1. Para cada tabela embutida (cada uma abre parênteses), inclusive a mais externa, é criada uma tabela na PFN que contém: - as chaves primárias de cada tabela externa à tabela embutida; - os atributos da própria tabela embutida. 2. São definidas as chaves primárias das tabelas na PFN. 3.2 NORMALIZAÇÃO
  • 7.
    3.2 NORMALIZAÇÃO 3.2.4.1Passagem à PFN - decomposição de tabelas - Tabela1: corresponde ao nível externo PROJ ( CODPROJ, TIPOPROJ, DESCR) - Tabela2: corresponde à tabela embutida PROJEMP (CODPROJ, NOEMP, NOME, CAT, SAL, DATAINÍCIO, TEMPOALOC )
  • 8.
    3.2 NORMALIZAÇÃO 3.2.4.2Passagem à PFN - identificação de chaves - Tabela1: corresponde ao nível externo PROJ ( CODPROJ , TIPOPROJ, DESCR) - Tabela2: corresponde à tabela embutida PROJEMP ( CODPROJ, NOEMP , NOME, CAT, SAL, DATAINÍCIO, TEMPOALOC )
  • 9.
    3.2 NORMALIZAÇÃO 3.2.5Segunda Forma Normal Uma tabela está na segunda forma normal (SFN) quando, além de estar na PFN, cada atributo não chave primária depende funcionalmente de toda a chave primária e não de apenas parte dela. Ao passar uma tabela para a SFN é necessário considerar apenas tabelas que tenham: - chave primária composta; - pelo menos um atributo não chave.
  • 10.
    3.2 NORMALIZAÇÃO Parao caso do exemplo: PROJ ( CODPROJ , TIPOPROJ, DESCR) PROJEMP ( CODPROJ, NOEMP , DATAINÍCIO,TEMPOALOC) EMP ( NOEMP , NOME, CAT, SAL )
  • 11.
    3.2 NORMALIZAÇÃO 3.2.6Terceira Forma Normal Uma tabela está na terceira forma normal (TFN) quando, além de estar na SFN, cada atributo não chave primária depende diretamente da chave primária, isto é, não há dependências entre atributos não chave; Na passagem à TFN, basta considerar tabelas com mais de um atributo não chave.
  • 12.
    3.2. NORMALIZAÇÃO Parao caso do exemplo: PROJ ( CODPROJ , TIPOPROJ, DESCR)
  • 13.
    3.2. NORMALIZAÇÃO Parao caso do exemplo: PROJ ( CODPROJ , TIPOPROJ, DESCR) PROJEMP ( CODPROJ, NOEMP , DATAINÍCIO,TEMPOALOC)
  • 14.
    3.2. NORMALIZAÇÃO Parao caso do exemplo: PROJ ( CODPROJ , TIPOPROJ, DESCR) PROJEMP ( CODPROJ, NOEMP , DATAINÍCIO,TEMPOALOC)
  • 15.
    3.2. NORMALIZAÇÃO EMPé subdividida em duas: EMP ( NOEMP , NOME, CAT ) CATEGORIA ( CAT , SAL )
  • 16.
    3.2. NORMALIZAÇÃO Documentonormalizado: PROJ ( CODPROJ , TIPOPROJ, DESCR) PROJEMP ( CODPROJ, NOEMP , DATAINÍCIO,TEMPOALOC) EMP ( NOEMP , NOME, CAT ) CATEGORIA ( CAT , SAL )
  • 17.
    3.2. NORMALIZAÇÃO NaTerceira Forma Normal: Atributos Calculados podem ser desconsiderados; Chaves candidatas não devem ser consideradas determinantes funcionais.
  • 18.
    3.2. NORMALIZAÇÃO Exemplogenérico de Passagem à PFN Tabela NN: ( A1,A2 , A3, A4, A5 ( B1 , B2, B3, B4 ( C1 ,C2, C3) ( D1 , D2) ) ( E1 , E2, E3) )
  • 19.
    3.2. NORMALIZAÇÃO PFN- Subdivisão de Tabelas 1. (A1, A2, A3, A4, A5) 2. (A1, A2, B1, B2, B3, B4) 3. (A1, A2, B1, C1, C2, C3) 4. (A1, A2, B1, D1, D2) 5. (A1, A2, E1, E2, E3)
  • 20.
    Exercício de Normalização1 "Uma fábrica de móveis vai informatizar os pedidos de produtos especificados por funcionários para revendedores. Cada pedido contém um número, data, prazo de entrega, nome do cliente (revendedor), endereço, cidade, U.F., CGC e inscrição estadual do revendedor. Além disso, um pedido contém vários itens de pedido. Cada item de pedido registra o código do produto, descrição, setor, quantidade, valor unitário, desconto e subtotal." Forma Não-Normalizada: PEDIDO (NUM_PEDIDO, DATA, PRAZO, NOME_REV, ENDEREÇO, CIDADE, UF, CGC, INSCR_EST, NUM_F (COD_PROD, DESCR, SETOR, QUANTIDADE, VALOR_UNIT, DESCONTO, SUBTOTAL) )
  • 21.
    Exercício de Normalização2 “ Uma empresa de ônibus possui um número, nome (empresa), endereço e nome do gerente. Cada empresa de ônibus possui vários ônibus e motoristas. Um ônibus pertence a somente uma empresa e um motorista pode trabalhar em mais de uma empresa de ônibus. Um ônibus possui um número, placa, ano de fabricação, tipo e capacidade (número de passageiros de acordo com o tipo do ônibus). Um motorista possui um número (especificado pela Secretaria Municipal de Transportes), nome e tempo de experiência. Uma linha de ônibus contém um número, itinerário, é executada por vários ônibus, pode ser percorrida várias vezes (cada uma delas com um horário de partida e de chegada) ao dia em sentidos opostos ou no mesmo sentido. Por exemplo, a linha 31 sai às 8 horas no sentido centro/bairro e também às 8 horas no sentido bairro/centro.”