Normalização de Banco de Dados

21
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.

Transcript of Normalização de Banco de Dados

Page 1: Normalização de Banco de Dados

3.2 NORMALIZAÇÃO3.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.

• 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.

Page 2: Normalização de Banco de Dados

3.2 NORMALIZAÇÃO3.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.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

Page 3: Normalização de Banco de Dados

3.2.2 Processo de NormalizaçãoO 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.2 Processo de NormalizaçãoO 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ÇÃO3.2 NORMALIZAÇÃO

Page 4: Normalização de Banco de Dados

3.2 NORMALIZAÇÃO3.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

- 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

Page 5: Normalização de Banco de Dados

3.2 NORMALIZAÇÃO3.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.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.

Page 6: Normalização de Banco de Dados

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.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ÇÃO3.2 NORMALIZAÇÃO

Page 7: Normalização de Banco de Dados

3.2 NORMALIZAÇÃO3.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.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 )

Page 8: Normalização de Banco de Dados

3.2 NORMALIZAÇÃO3.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.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 )

Page 9: Normalização de Banco de Dados

3.2 NORMALIZAÇÃO3.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.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.

Page 10: Normalização de Banco de Dados

3.2 NORMALIZAÇÃO3.2 NORMALIZAÇÃO

Para o caso do exemplo:

PROJ (CODPROJ, TIPOPROJ, DESCR)

PROJEMP (CODPROJ, NOEMP, DATAINÍCIO,TEMPOALOC)

EMP (NOEMP, NOME, CAT, SAL )

Para o caso do exemplo:

PROJ (CODPROJ, TIPOPROJ, DESCR)

PROJEMP (CODPROJ, NOEMP, DATAINÍCIO,TEMPOALOC)

EMP (NOEMP, NOME, CAT, SAL )

Page 11: Normalização de Banco de Dados

3.2 NORMALIZAÇÃO3.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.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.

Page 12: Normalização de Banco de Dados

3.2. NORMALIZAÇÃO3.2. NORMALIZAÇÃO

Para o caso do exemplo:

PROJ (CODPROJ, TIPOPROJ, DESCR)

Para o caso do exemplo:

PROJ (CODPROJ, TIPOPROJ, DESCR)

Page 13: Normalização de Banco de Dados

3.2. NORMALIZAÇÃO3.2. NORMALIZAÇÃO

Para o caso do exemplo:

PROJ (CODPROJ, TIPOPROJ, DESCR)

PROJEMP (CODPROJ, NOEMP, DATAINÍCIO,TEMPOALOC)

Para o caso do exemplo:

PROJ (CODPROJ, TIPOPROJ, DESCR)

PROJEMP (CODPROJ, NOEMP, DATAINÍCIO,TEMPOALOC)

Page 14: Normalização de Banco de Dados

3.2. NORMALIZAÇÃO3.2. NORMALIZAÇÃO

Para o caso do exemplo:

PROJ (CODPROJ, TIPOPROJ, DESCR)

PROJEMP (CODPROJ, NOEMP, DATAINÍCIO,TEMPOALOC)

Para o caso do exemplo:

PROJ (CODPROJ, TIPOPROJ, DESCR)

PROJEMP (CODPROJ, NOEMP, DATAINÍCIO,TEMPOALOC)

EMP ( NOEMP , NOME, CAT, SAL )

Page 15: Normalização de Banco de Dados

3.2. NORMALIZAÇÃO3.2. NORMALIZAÇÃO

EMP é subdividida em duas:

EMP ( NOEMP, NOME, CAT )

CATEGORIA (CAT, SAL )

EMP é subdividida em duas:

EMP ( NOEMP, NOME, CAT )

CATEGORIA (CAT, SAL )

EMP ( NOEMP , NOME, CAT, SAL )

Page 16: Normalização de Banco de Dados

3.2. NORMALIZAÇÃO3.2. NORMALIZAÇÃO

Documento normalizado:

PROJ (CODPROJ, TIPOPROJ, DESCR)

PROJEMP (CODPROJ, NOEMP, DATAINÍCIO,TEMPOALOC)

EMP ( NOEMP, NOME, CAT )

CATEGORIA (CAT, SAL )

Documento normalizado:

PROJ (CODPROJ, TIPOPROJ, DESCR)

PROJEMP (CODPROJ, NOEMP, DATAINÍCIO,TEMPOALOC)

EMP ( NOEMP, NOME, CAT )

CATEGORIA (CAT, SAL )

Page 17: Normalização de Banco de Dados

3.2. NORMALIZAÇÃO3.2. NORMALIZAÇÃO

Na Terceira Forma Normal:

• Atributos Calculados podem ser desconsiderados;

• Chaves candidatas não devem ser consideradas determinantes funcionais.

Na Terceira Forma Normal:

• Atributos Calculados podem ser desconsiderados;

• Chaves candidatas não devem ser consideradas determinantes funcionais.

Page 18: Normalização de Banco de Dados

3.2. NORMALIZAÇÃO3.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) )

• 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) )

Page 19: Normalização de Banco de Dados

3.2. NORMALIZAÇÃO3.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)

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)

Page 20: Normalização de Banco de Dados

Exercício de Normalização 1Exercí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) )

• "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) )

Page 21: Normalização de Banco de Dados

Exercício de Normalização 2Exercí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.”

• “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.”