aula 23 normalização.ppt
TRANSCRIPT
Banco de Dados Aula 23
Normalização
Alexandre Plastino - [email protected]
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