Aula 23 Normalização.ppt

Preview:

Citation preview

Banco de Dados Aula 23

Normalização

Alexandre Plastino - plastino@ic.uff.br

22/04/231BD - Aula 23 – Normalização

Normalização

Processo que visa eliminar redundância de dados em arquivos ou tabelas.

Teoria da Normalização: conjunto de regras (formas normais) que determinam formas adequadas, sem redundâncias, de representação dos dados.

2

3

esquema dearquivo oudocumento Representação

como tabelaÑN

esquema nãonormalizado

Passagema 1FN

esquema na 1FN

Passagema 2FN

esquema na 2FN

Passagema 3FN

Passagema FNBC

esquema na 3FN

Normalização

esquema na FNBC

RELATÓRIO DE ALOCAÇÃO A PROJETO

CÓDIGO DO PROJETO: LSC001 TIPO: Novo Desenv.DESCRIÇÃO: Sistema de EstoqueCÓDIGO DOEMPREGADO

NOME CATEGORIAFUNCIONAL

SALÁRIO DATA DEINÍCIO NOPROJETO

TEMPOALOCADO AO

PROJETO

2146 João A1 4 1/11/91 243145 Sílvio A2 4 2/10/91 246126 José B1 9 3/10/92 181214 Carlos A2 4 4/10/92 188191 Mário A1 4 1/11/92 12

CÓDIGO DO PROJETO: PAG02 TIPO: ManutençãoDESCRIÇÃO: Sistema de RHCÓDIGO DOEMPREGADO

NOME CATEGORIAFUNCIONAL

SALÁRIO DATA DEINÍCIO NOPROJETO

TEMPOALOCADO

AO PROJETO

8191 Mário A1 4 1/05/93 124112 João A2 4 4/01/91 246126 José B1 9 1/11/92 12

Documento

4

Tabela Não-Normalizada (ÑN)

CódProj Tipo Descr EmpCodEmp Nome Cat Sal DataIni TempAl

LSC001 Novo Desenv. 2146 João A1 4 1/11/91 24Sistema deEstoque 3145 Sílvio A2 4 2/10/91 24

6126 José B1 9 3/10/92 181214 Carlos A2 4 4/10/92 188191 Mário A1 4 1/11/92 12

PAG02 Manutenção 8191 Mário A1 4 1/05/93 12Sistema deRH 4112 João A2 4 4/01/91 24

6126 José B1 9 1/11/92 12

Tabela não-normalizada possui tabelas aninhadas, grupos de repetição ou atributos multivalorados.

5

CódProj Tipo Descr EmpCodEmp Nome Cat Sal DataIni TempAl

LSC001 Novo Desenv. 2146 João A1 4 1/11/91 24Sistema deEstoque 3145 Sílvio A2 4 2/10/91 24

6126 José B1 9 3/10/92 181214 Carlos A2 4 4/10/92 188191 Mário A1 4 1/11/92 12

PAG02 Manutenção 8191 Mário A1 4 1/05/93 12Sistema deRH 4112 João A2 4 4/01/91 24

6126 José B1 9 1/11/92 12

Proj (CodProj,Tipo, Descr,(CodEmp, Nome, Cat, Sal, DataIni, TempAl))

Tabela Não-Normalizada (ÑN)

6

Primeira Forma Normal (1FN)

Uma tabela encontra-se na primeira forma normal quando não possui tabelas aninhadas (grupos de repetição, atributos multivalorados).

7

Passagem à 1FN

Proj (CodProj,Tipo, Descr,(CodEmp, Nome, Cat, Sal, DataIni, TempAl))

Proj (CodProj,Tipo, Descr)

CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAl )

ÑN

1FN

ProjEmp (

CodProj tem que fazer parte da chave pois cada empregado pode participar de mais de um projeto.

8

Proj:

CódProj Tipo Descr

LSC001 Novo Desenv. Sistema de Estoque

PAG02 Manutenção Sistema de RH ProjEmp:

CódProj CodEmp Nome Cat Sal DataIni TempAl

LSC001 2146 João A1 4 1/11/91 24

LSC001 3145 Sílvio A2 4 2/10/91 24 LSC001 6126 José B1 9 3/10/92 18 LSC001 1214 Carlos A2 4 4/10/92 18 LSC001 8191 Mário A1 4 1/11/92 12

PAG02 8191 Mário A1 4 1/05/93 12

PAG02 4112 João A2 4 4/01/91 24 PAG02 6126 José B1 9 1/11/92 12

Passagem à 1FN

9

Passagem à 1FN

ÑN

1FN

Arq-Candidatos (Cod-Curso,Nome-Curso, Numero-Vagas-Curso,(Cod-Cand, Nome-Cand, Escore-Cand))

Cursos (Cod-Curso, Nome-Curso, Numero-Vagas-Curso)

Candidatos (Cod-Curso,Cod-Cand, Nome-Cand, Escore-Cand)

Cada candidato participa de apenas um concurso.

10

Dependência Funcional

Um atributo C2 depende funcionalmente de um atributo C1 (ou C1 determina C2) quando, em todas as tuplas da tabela, cada valor de C1 está sempre associado ao mesmo valor de C2.

Mais formalmente, C1 determina C2, quando para quaisquer duas tuplas X e Y da tabela, se X[C1] = Y[C1] então X[C2] = Y[C2].

Representação: C1 → C2

11

Dependência Funcional

… Cargo … Salário …

E1 10

E3 10

E1 10

E2 5

E3 10

E2 5

E1 10

Cargo → Salário

12

Dependência Funcional

A B C D

B 5 2 20C 4 2 15B 6 7 20B 5 2 20C 2 2 15C 4 2 15A 10 5 18A 12 3 18A 10 5 18B 5 2 20C 4 2 15A 10 5 18C 4 2 15

A não determina B: A  B

A determina D: A  D

O par (A,B) determina C: (A,B)  C

13

Segunda Forma Normal (2FN)

ProjEmp:

CódProj CodEmp Nome Cat Sal DataIni TempAl

LSC001 2146 João A1 4 1/11/91 24

LSC001 3145 Sílvio A2 4 2/10/91 24LSC001 6126 José B1 9 3/10/92 18LSC001 1214 Carlos A2 4 4/10/92 18LSC001 8191 Mário A1 4 1/11/92 12

PAG02 8191 Mário A1 4 1/05/93 12

PAG02 4112 João A2 4 4/01/91 24PAG02 6126 José B1 9 1/11/92 12

14

Dependência Parcial

Uma dependência (funcional) parcial ocorre quando um atributo não-chave depende de parte da chave primária.

Nesse caso, a chave primária é composta (formada por mais de um atributo).

Atributos não-chave são aqueles que não fazem parte da chave primária.

15

Dependência Parcial

Dependências funcionais parciais:CodEmp → NomeCodEmp → CatCodEmp → Sal

ProjEmp:

CódProj CodEmp Nome Cat Sal DataIni TempAl

LSC001 2146 João A1 4 1/11/91 24

LSC001 3145 Sílvio A2 4 2/10/91 24LSC001 6126 José B1 9 3/10/92 18LSC001 1214 Carlos A2 4 4/10/92 18LSC001 8191 Mário A1 4 1/11/92 12

PAG02 8191 Mário A1 4 1/05/93 12

PAG02 4112 João A2 4 4/01/91 24PAG02 6126 José B1 9 1/11/92 12

16

Segunda Forma Normal (2FN)

Uma tabela encontra-se na segunda forma normal quando, além de estar na 1FN, cada atributo não-chave não for dependente de parte da chave primária (dependência parcial).

Todos os atributos não-chave devem depender totalmente da chave primária (dependência total).

Atributos não-chave são aqueles que não fazem parte da chave primária.

17

ProjEmp:

CódProj CodEmp Nome Cat Sal DataIni TempAl

LSC001 2146 João A1 4 1/11/91 24

LSC001 3145 Sílvio A2 4 2/10/91 24LSC001 6126 José B1 9 3/10/92 18LSC001 1214 Carlos A2 4 4/10/92 18LSC001 8191 Mário A1 4 1/11/92 12

PAG02 8191 Mário A1 4 1/05/93 12

PAG02 4112 João A2 4 4/01/91 24PAG02 6126 José B1 9 1/11/92 12

Segunda Forma Normal (2FN)

A tabela ProjEmp não está na 2FN.

18

Segunda Forma Normal (2FN)

ProjEmp ( CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAl )

1FN

CodProj, CodEmp

dependências parciais

dependências não parciais (totais)

19

Passagem à 2FN

ProjEmp ( CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAl )

1FN

CodProj, CodEmp

ProjEmp ( CodProj, CodEmp , DataIni, TempAl )

Emp ( CodEmp , Nome, Cat, Sal )

2FN

20

Tabelas na 2FN

21

22

Definição mais geral da 2FN

Uma tabela encontra-se na segunda forma normal quando, além de estar na 1FN, cada atributo não-chave não é dependente de parte de nenhuma chave candidata (dependência parcial).

Todos os atributos não-chave devem depender totalmente de todas as chaves candidatas.

Atributos não-chave são aqueles que não fazem parte de nenhuma chave candidata.

Terceira Forma Normal (3FN)

23

Dependência Transitiva

Uma dependência (funcional) transitiva X→Z ocorre quando existe um atributo Y tal que X→Y e Y→Z.

24

Dependência Transitiva

Dependência transitiva:CodEmp → CatCodEmp → Sal CodEmp → Cat → Sal Cat → Sal

25

Terceira Forma Normal (3FN)

Uma tabela encontra-se na terceira forma normal quando, além de estar na 2FN, nenhum atributo não-chave depende da chave primária de forma transitiva.

26

Terceira Forma Normal (3FN)

A tabela Emp não está na 3FN.

27

Terceira Forma Normal (3FN)

Emp ( CodEmp, Nome, Cat, Sal )

Sal depende de CodEmp também por transitividade(de forma indireta).

28

Passagem à 3FN

Emp ( CodEmp, Nome, Cat, Sal )

2FN

3FN

Emp ( CodEmp, Nome, Cat ) Cat ( Cat, Sal )

29

Tabelas na 3FN

30

31

Definição mais geral da 3FN

Uma tabela encontra-se na terceira forma normal quando, além de estar na 2FN, nenhum atributo não-chave depende de alguma chave candidata de forma transitiva.

ÑN

Proj (CodProj,Tipo, Descr,(CodEmp, Nome, Cat, Sal, DataIni, TempAl))

1FN

Proj (CodProj, Tipo, Descr)ProjEmp (CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAl)

2FN

Proj (CodProj, Tipo, Descr)ProjEmp (CodProj, CodEmp, DataIni, TempAl)Emp (CodEmp, Nome, Cat, Sal)

3FN

Proj (CodProj, Tipo, Descr)ProjEmp (CodProj, CodEmp, DataIni, TempAl)Emp (CodEmp, Nome, Cat)Cat (Cat, Sal)

Normalização do Exemplo

32

Forma Normal Boyce/Codd (FNBC)

Peça ( Código, Nome, Cor, Forma, Preço )

Peça ( Código, Nome, Cor, Forma, Preço )

Código e Nome são atributos determinantes.

33

Uma tabela encontra-se na forma normal Boyce/Codd quando todo determinante for uma chave.

Forma Normal Boyce/Codd (FNBC)

34

Passagem à FNBC

Peça ( Código, Nome, Cor, Forma, Preço )

Peça ( Código, Nome, Cor, Preço )

Ñ FNBC

FNBC

Forma ( Nome, Forma )

35