Professional Documents
Culture Documents
Banco de Dados
Normalizao
Banco de Dados
Introduo
Com o surgimento e o aperfeioamento do sistema
relacional na dcada de 70, vrias regras foram
definidas para a simplificao de tabelas,
recebendo o nome de formas normais.
Cada uma destas regras apresenta um critrio de
adequao, e o processo de adequao de tabelas
a estas regras prticas chama-se normalizao.
Banco de Dados
Normalizao de Dados
um processo formal, passo a passo, de anlise dos atributos de uma
relao
Objetivo:
evitar redundncia,
inconsistncia e
perda de informao no banco de dados
Banco de Dados
Anomalias de Atualizao
Excluso
Incluso
Modificao
nomeC
CPF
endereco
fone
codP
nomeP
Vunit
qtd
total
111
ABC
123
Lpis
0,50
1,00
Ana
222
XYZ
456
Caneta
1,00
3,00
Joo
333
XPT
789
Rgua
1,00
2,00
Pedro
444
KZZ
Null
Lpis
0,50
20
10,00
Banco de Dados
Anomalias de Atualizao
Modificao/Atualizao:
uma mudana na descrio da pea A requer vrias mudanas
inconsistncia:
no h nada no projeto impedindo que o produto A tenha duas ou
mais descries diferentes no BD
nomeC
Z
CPF
111
endereco
ABC
fone
123
codP
A
nomeP
Lpis
Vunit
0,50
qtd
2
total
1,00
Ana
222
XYZ
456
Caneta
1,00
3,00
Joo
333
XPT
789
Rgua
1,00
2,00
Pedro
444
KZZ
Null
Lpis
0,50
20
10,00
Banco de Dados
Anomalias de Atualizao
Insero:
a insero de uma nova pea sem um pedido
correspondente causa problema
Excluso:
se o cliente ANA fosse eliminado seria perdida a
informao de que o produto B chamado caneta e
custa R$ 1,00
nomeC
Z
CPF
111
endereco
ABC
fone
123
codP
A
nomeP
Lpis
Vunit
0,50
qtd
2
total
1,00
Ana
222
XYZ
456
Caneta
1,00
3,00
Joo
333
XPT
789
Rgua
1,00
2,00
Pedro
444
KZZ
Null
Lpis
0,50
20
10,00
Banco de Dados
Formas de Normalizao
Banco de Dados
Normalizao de Dados
Como evitar os problemas na criao de um novo BD?
Elaborando um bom modelo conceitual de dados.
Aplicando corretamente o projeto lgico de BDs.
E quando o BD j existir ?
Processo de Normalizao de Dados.
Banco de Dados
Processo de Normalizao
inicia com uma relao ou coleo de relaes
produz uma nova coleo de relaes:
equivalente a coleo original (representa a mesma informao)
livre de problemas
Banco de Dados
Processo de Normalizao
Tipos de Formas Normais
Banco de Dados
Chave de Relao
A chave de uma relao determina funcionalmente todos
os atributos da relao
Seja uma relao R ( A1, A2, ..., An ) e X {A1, A2, ..., An}.
- X uma superchave de R se X identificar todos os atributos da relao R
- X uma chave de R se:
1. X uma superchave
2. nenhum subconjunto de X determina todos os atributos R
Banco de Dados
Banco de Dados
Banco de Dados
1FN:
Projeto (codProj, tipo, descr)
ProjetoEmpregado (codProj, codEmp, nome, categ, sal, dataIni, tempoAl)
Exerccio
Verificar se o modelo ER do sistema academico e
da transportadora estao na primeira forma normal
Banco de Dados
Dependncia Funcional
Dada uma relao R com atributos
A1,...,An,B1,...,Bm,C1,...,Cl,
Dizemos que
A1,...,An determina funcionalmente B1,...,Bm
( A1, ..., A n)
B1,...,Bm
Sempre que duas tuplas tiverem os mesmos valores para
A1,...,An, ento elas tero o mesmo valor para B1,...,Bm.
Produto Descrio
Banco de Dados
Cdigo
Salrio
Banco de Dados
DF Total e DF Parcial
DF Parcial
um atributo depende funcionalmente de parte da chave composta
de uma tabela OU
Parte da chave composta identifica um ou mais atributos da
tabela
DF Total
um atributo depende funcionalmente de todos os atributos da
chave composta de uma tabela
A chave composta completa identifica um ou mais atributos da
tabela
Banco de Dados
DF Total e DF Parcial
DF Parcial
ProjetoEmpregado (#codProj, #codEmp, nome, categ, sal, dataIni, tempoAl)
codEmp (parte da chave) identifica o empregado, a categoria e seu salario
DF Total
Projeto (#codProj, tipo, descr)
ProjetoEmpregado (#codProj, #codEmp, nome, categ, sal, dataIni, tempoAl)
Banco de Dados
2FN:
Banco de Dados
Exerccio
Transformar os sistemas acadmico e da
transportadora para a segunda forma normal
Banco de Dados
Banco de Dados
Banco de Dados
3FN:
Banco de Dados
Questes
Anlise de chaves primrias (Pks)
tabelas podem ou no ter atributos que garantam a
identificao nica de suas tuplas ou ter uma CP muito
extensa
Questes
Dados irrelevantes
tabelas podem ter atributos que no precisam ser
mantidos necessariamente no BD
sugesto: eliminar estes atributos
N: Projetos (CodProj, Tipo, Descr, NroEmps,
(CodEmp, Nome, Cat, Sal, DataIni, TempoAloc))
N: Projetos (CodProj, Tipo, Descr, (CodEmp, Nome,
Cat, Sal, DataIni, TempoAloc))
Banco de Dados
Questes
Dados relevantes, porm implcitos
sugesto: definir tais dados
N: Aprovao (CodCurso, Nome,(CodCand, Nome,
Endereo))
a ordem
determina a
classificao
do candidato
Exemplo
N - Matricula (cod_aluno, cod_turma, cod_disciplina,
nome_disciplina, nome_aluno, cod_local_nasc, nome_local_nasc)
Dependncias:
(cod_aluno, cod_turma)- > cod_disciplina
cod_aluno -> nome_aluno, cod_local_nasc, nome_local_nasc
cod_disciplina -> nome_disciplina
cod_local_nasc -> nome_local_nasc
Banco de Dados
Exemplo
Matricula (cod_aluno, cod_turma, cod_disciplina, nome_disciplina,
nome_aluno, cod_local_nasc, nome_local_nasc)
2FN
Matricula (cod_aluno, cod_turma, cod_disciplina, nome_disciplina)
Aluno(cod_aluno, nome_aluno, cod_local_nasc, nome_local_nasc)
Banco de Dados
Exemplo
Matricula (cod_aluno, cod_turma, cod_disciplina, nome_disciplina,
nome_aluno, cod_local_nasc, nome_local_nasc)
2FN
Matricula (cod_aluno, cod_turma, cod_disciplina, nome_disciplina)
Aluno(cod_aluno, nome_aluno, cod_local_nasc, nome_local_nasc)
3FN
Matricula (cod_aluno, cod_turma, #cod_disciplina)
Disciplina (cod_disciplina, nome_disciplina)
Aluno (cod_aluno, nome_aluno, cod_local_nasc)
Local(cod_local_nasc, nome_local_nasc)
Banco de Dados
Exerccio
Transformar os sistemas acadmico e da
transportadora para a segunda forma normal
Banco de Dados