Anda di halaman 1dari 53

2008.

Normalizao

Renata Viegas

2008.1

Introduo
Um dos objetivos principais do gerenciamento de
Bancos de Dados manter a integridade dos dados
nele armazenados, e para esse fim, algumas regras
precisam ser consideradas.
Algumas dessas regras so garantidas pelo prprio
gerenciador
tais como unicidade da chave, ligao entre relaes atravs
da chave estrangeira, etc.

Outras regras so definidas nos programas de


aplicao que ficam responsveis por mant-las.

2008.1

Introduo
necessrio que as relaes sejam
bem fundamentadas, no sentido de
evitar redundncias que possam gerar,
entre outros problemas, inconsistncia
de dados.
Para procurar garantir esse aspecto, foi
desenvolvida uma tcnica chamada
Normalizao.

2008.1

Introduo
Redundncia a causa de vrios problemas
com esquemas relacionais:
armazenamento
redundante,
anomalias
insero, de excluso e de atualizao.

de

Restries de integridade podem ser usadas


para identificar esquemas com esses
problemas e para sugerir refinamentos.

2008.1

Introduo
Principal
tcnica
de
refinamento:
a
decomposio de um esquema em subesquemas.
A
decomposio
deve
ser
usada
cuidadosamente:
H motivos para se decompor uma relao?
A decomposio pode causar problemas?

2008.1

Introduo
Considere o esquema:
Pacientes(Id, Nome, Endereo, Telefone, Sexo,
Data_nascimento, Sigla_convnio,
Nome_convnio, Endereo_convnio,
Telefone_convnio)

Esse um exemplo de mau projeto!


Os dados de pacientes e os de convnios no
deveriam estar na mesma tabela.

2008.1

Introduo
Pacientes(Id, Nome, Endereo, Telefone, Sexo,
Data_nascimento,Sigla_convnio,
Nome_convnio, Endereo_convnio,
Telefone_convnio)

Por que?
Os dados de um convnio (nome, endereo e
telefone do convnio) so repetidos para cada
paciente associado a esse convnio.
Por exemplo, os dados da UNIMED sero repetidos
para cada um de seus associados.

2008.1

Introduo
Anomalia de Insero:
Quando se inserir um paciente preciso inserir tambm
os dados do convnio, mesmo que j estejam
cadastrados.
No possvel inserir um convnio sem inserir tambm
um paciente.
Anomalia de Excluso:
Ao se excluir um paciente, se este for o nico associado
de um convnio ento os dados do convnio sero
perdidos.
Anomalia de Modificao:
Para se modificar os dados de um convnio, preciso
atualizar os mesmos dados em todas as tuplas de
pacientes que estejam associados quele convnio.

2008.1

Dependncia Funcional
Dependncias funcionais (DFs) so restries de
integridade mais gerais que as restries de chave.
Exemplo de dependncia funcional:
{Sigla_convnio} {Nome_convnio, Endereo_convnio,
Telefone_convnio}

Leia-se: Sigla_convnio determina funcionalmente


Nome_convnio, Endereo_convnio e Telefone_convnio.

2008.1

Dependncia Funcional
Significado: Se duas linhas da tabela
Pacientes tiverem o mesmo valor de
Sigla_convnio, ento elas tem de ter
o mesmo valor de Nome_convnio, de
Endereo_convnio e de
Telefone_convnio.

2008.1

Dependncia Funcional
Identifique as dependncias funcionais:

2008.1

Dependncia Funcional
Identifique as dependncias funcionais:

Dependncias funcionais
Num_NF Data
Cod_Produto Descricao,Preco
Num_NF,Cod_Produto Quantidade

2008.1

Dependncia Funcional
Uma restrio de chave um caso especial de
DF: a chave determina funcionalmente todos os
outros atributos da tabela.
Como Id chave da tabela Pacientes, temos
que:

{Id} {Nome, Endereo, Telefone, Sexo, Data_nascimento,


Sigla_convnio, Nome_convnio, Endereo_convnio,
Telefone_convnio}

2008.1

Dependncia Funcional
Certas DFs causam redundncia!
Por exemplo Para cada associado de um
convnio, os dados do convnio so repetidos
na tabela Pacientes.
A causa desse problema a DF

{Sigla_convnio} {Nome_convnio, Endereo_convnio,


Telefone_convnio}

2008.1

Projeto de Banco de Dados


O objetivo
relacional

do

projeto

de

um

BD

Gerar um conjunto de esquemas de


relaes
que
permitam
armazenar
informaes
sem
redundncia
desnecessria
Recuperar informaes facilmente

2008.1

Normalizao
Conjunto de regras que ajudam na
definio de bancos de dados que no
contenham redundncia desnecessria
e que permitam o fcil acesso s
informaes
Mtodo
permitindo
identificar
a
existncia de problemas (anomalias) no
projeto de um BD relacional

2008.1

Normalizao
Converte progressivamente uma tabela em
tabelas de grau e cardinalidade menores at
que pouca ou nenhuma redundncia de
dados exista
H diferentes nveis de normalizao, de acordo
com as condies atendidas
A hierarquia entre as formas normais indica que
uma tabela s pode estar numa forma mais
avanada se, alm de atender as condies
necessrias,
j
estiver
na
forma
normal
imediatamente anterior

2008.1

Nveis de Normalizao
1FN
2FN
3FN
FNBC
4FN
5FN

2008.1

Normalizao
Se a normalizao bem sucedida:
O espao de armazenamento dos dados
diminui
A tabela pode ser atualizada com maior
eficincia
A descrio do BD ser imediata

2008.1

Normalizao
A finalidade das regras de normalizao
evitar anomalias de atualizao no banco de
dados
Anomalias de insero

Evitar a repetio desnecessria de dados (redundncia)

Anomalias de alterao
Evitar inconsistncias
atualizao dos dados

Anomalias de excluso

reduzir

esforo

para

Evitar a perda de informaes associadas a um dado


registro

2008.1

Normalizao
Considere uma nica tabela Vendas para
representar as informaes sobre os
negcios de uma loja de CDs:
NOME_CLIENTE

COD_CD

MUSICA

CANTOR

PRECO

DATA_COMPRA

Alice Nbrega

215621

Bem que
se quis

Marisa
Monte

R$ 20,00

21/03/2003

...

...

...

...

...

...

Juliano Moreira

878650

Corcovado

Tom
Jobim

R$ 25,00

10/06/2003

2008.1

Normalizao
Caso fosse preciso registrar a compra de 5 CDs iguais
para um mesmo cliente, as seguintes anomalias
seriam observadas:
Anomalia de insero

Redundncia em todas as colunas (5 linhas iguais na tabela)

Anomalia de alterao

A mudana no preo do CD deveria ser feita em todas as linhas


correspondentes da tabela

Anomalia de excluso

S haveria registro dos CDs que fossem comprados; se a nica


venda de um CD fosse apagada, no haveria mais informaes
sobre aquele CD

2008.1

Primeira Forma Normal (1FN)


Conceito: Uma varivel de relao (tabela)
est em 1FN se, e somente se, em todo valor
vlido dessa varivel de relao, cada tupla
contm exatamente um valor para cada
atributo
Os atributos devem ser atmicos (indivisveis)
Atributos
compostos
ou
multivalorados
devem ser representados por novas linhas ou
novas tabelas

2008.1

Primeira Forma Normal (1FN)


Exemplo: Tabela Controle de Faltas numa Escola
A tabela abaixo no est na 1 FN
COD_TURMA

ALUNO

PROFESSOR

SALA

BD1032

Alice Luna
Juliano Camargo
Mrcio Andrade

Bruno Pereira

101

...

...

...

...

CAPACIDADE

QTE_FALTAS

50

02
00
04
...

Os atributos Aluno e Qte_Faltas no so atmicos


(h mais de um valor para cada registro)

2008.1

Primeira Forma Normal (1FN)


Passos para obteno da 1FN em uma
tabela
Identificar a chave primria da tabela
Identificar os atributos compostos ou
multivalorados
Incluir uma coluna/linha para cada atributo
composto/multivalorado

2008.1

Primeira Forma Normal (1FN)


A tabela abaixo est na 1FN (atributos
atmicos)
COD_TURMA

ALUNO

PROFESSOR

SALA

CAPACIDADE

QTE_FALTAS

BD1032

Alice Luna

Bruno Pereira

101

50

02

BD1032

Juliano
Camargo

Bruno Pereira

101

50

00

BD1032

Mrcio Andrade

Bruno Pereira

101

50

04

...

...

...

...

...

...

O prximo passo observar se ela est


tambm na 2FN

2008.1

Segunda Forma Normal (2FN)


Conceito 1: uma varivel de relao est em 2FN se,
e somente se, ela est em 1FN e todo atributo nochave irredutivelmente dependente da chave
primria
Conceito 2: uma varivel de relao est em 2FN se,
e somente se, ela est em 1FN e, para tabelas com
chave primria composta, cada coluna no-chave
depende de toda a chave, e no de apenas uma
parte dela
Dica: tabelas em 1FN e com Chave Primria
simples esto automaticamente em 2FN

2008.1

Segunda Forma Normal (2FN)


A tabela abaixo est na 1FN mas no est na 2FN

COD_TURM
A

ALUNO

PROFESSOR

SALA

CAPACIDADE

QTE_FALTA
S

BD1032

Alice Luna

Bruno Pereira

101

50

02

BD1032

Juliano
Camargo

Bruno Pereira

101

50

00

BD1032

Mrcio Andrade

Bruno Pereira

101

50

04

...

...

...

...

...

...

Os atributos Professor, Sala e Capacidade dependem


apenas de Cod_Turma (repetio para todos os alunos
da turma)

2008.1

Segunda Forma Normal (2FN)


Passos para obteno da 2FN em uma tabela
Deix-la em 1FN
Identificar os atributos que no fazem parte da chave
primria da tabela
Para cada um desses atributos, analisar se seu valor
determinado por parte ou pela totalidade da chave
Criar novas tabelas para os atributos parcialmente
dependentes, incluindo a parte da chave correspondente, e
retir-los da tabela original

2008.1

Segunda Forma Normal (2FN)


As tabelas abaixo esto em 2FN
COD_TURM
A

ALUNO

QTE_FALTA
S

BD1032

Alice Luna

02

BD1032

Juliano
Camargo

00

BD1032

Mrcio
Andrade

04

...

...

...

COD_TURM
A

PROFESSO
R

SALA

CAPACIDAD
E

BD1032

Bruno
Pereira

101

50

LG1512

Marina
Lucena

101

50

JV8796

Ana Barbosa

101

50

...

...

...

...

2008.1

Terceira Forma Normal (3FN)


Conceito 1: uma varivel de relao est em 3FN se,
e somente se, ela est em 2FN e todo atributo nochave dependente de forma no transitiva da
chave primria
Conceito 2: uma varivel de relao est em 3FN se,
e somente se, ela est em 2FN e todo atributo nochave depende apenas da chave, e no de outros
atributos no-chave
Dica: tabelas em 2FN e com nenhum ou um
atributo alm da chave esto automaticamente
em 3FN

2008.1

Terceira Forma Normal (3FN)


A tabela abaixo est em 2FN, mas no est em
3FN
COD_TURMA

PROFESSOR

SALA

CAPACIDADE

BD1032

Bruno Pereira

101

50

LG1512

Marina Lucena

101

50

JV8796

Ana Barbosa

101

50

...

...

...

...

O atributo Capacidade depende do atributo Sala,


e no da chave Cod_Turma

2008.1

Terceira Forma Normal (3FN)


Passos para obteno da 3FN em uma tabela
Deix-la em 2FN
Identificar os atributos que no participam da chave primria
da tabela
Para cada um desses atributos, analisar se seu valor
determinado por algum outro atributo no pertencente
chave primria
Criar novas tabelas para os atributos que no dependem
exclusivamente da chave, incluindo o atributo determinante
correspondente, e retir-los da tabela original

2008.1

Terceira Forma Normal (3FN)


As tabelas abaixo esto em 3FN
COD_TURM
A

ALUNO

QTE_FALTA
S

BD1032

Alice Luna

02

BD1032

Juliano
Camargo

00

BD1032

Mrcio
Andrade

04

COD_TURM
A

...
PROFESSO
R

SALA

BD1032

Bruno
Pereira

101

LG1512

Marina
Lucena

101

JV8796

Ana Barbosa

101

...

...

...

...

...
SALA
CAPACIDAD
E
101

50

201

40

301

50

...

...

2008.1

Regras Gerais Normalizao


1FN: Eliminar atributos multivalorados
ou compostos
2FN: Eliminar atributos que dependem
apenas de parte da chave primria
composta
3FN: Eliminar atributos que dependem
de atributos no-chave

2008.1

Normalizao
Aumentar o nvel de normalizao
contribui para melhorar a qualidade do
projeto do banco de dados
H ainda outras trs formas normais
(FNBC, 4FN e 5FN), cada uma com suas
restries
Essas outras formas normais no sero
vistas nesse curso

2008.1

Exerccios...
A tabela abaixo representa as vendas
numa loja de CDs.
Considerando as formas normais vistas
(1FN, 2FN e 3FN), indicar quais so
atendidas pelo projeto.
Caso alguma delas no seja atendida,
identifique o problema e proponha as
mudanas necessrias.

2008.1

Exerccio...
TABELA VENDAS
Chave composta
CLIENTE

COD_CD

215621
Alice
Nbrega

CANTOR

MUSICA

DURACA
O

Marisa
Monte

Beija Eu
Chocolat
e

2:20
3:05

Tom Jobim

Corcovad
o
Sabi

...

...

878650

...

...

PRECO

DATA_COMPRA

R$
20,00

21/03/2007

2:50
2:10
R$
25,00
...

...

...

2008.1

Soluo
A tabela Vendas no est na 1FN, pois h
vrios atributos no atmicos
Para deix-la em 1FN, preciso dividir
esses atributos em linhas
TABELA VENDAS
CLIENTE

COD_CD

CANTOR

MUSICA

DURACA
O

PRECO

DATA_COMPR
A

Alice
Nbrega

215621

Marisa
Monte

Beija Eu

2:20

R$
20,00

21/03/2007

Alice
Nbrega

215621

Marisa
Monte

Chocolate

3:05

R$
20,00

21/03/2007

Alice
Nbrega

878650

Tom Jobim

Corcovad
o

2:50

R$
25,00

21/03/2007

Alice

878650

Tom Jobim

Sabi

2:10

R$

21/03/2007

2008.1

Soluo
A tabela Vendas no est na 2FN, pois
h atributos que dependem apenas de
parte da chave primria composta
Para deix-la em 2FN, preciso criar
uma nova tabela

2008.1

Soluo

TABELA VENDAS

TABELA CDs

CLIENTE

COD_CD

DATA_COMPRA

Alice
Nbrega

215621

21/03/2007

Alice
Nbrega

878650

21/03/2007

...

...

...

COD_CD

CANTOR

MUSICA

DURACA
O

PRECO

215621

Marisa
Monte

Beija Eu

2:20

R$
20,00

215621

Marisa
Monte

Chocolat
e

3:05

R$
20,00

878650

Tom Jobim

Corcovad
o

2:50

R$
25,00

878650

Tom Jobim

Sabi

2:10

R$

2008.1

Soluo
A tabela CDs no est na 3FN, pois h
atributos que dependem de atributos
no-chave
Para deix-la em 3FN, preciso criar
uma nova tabela

2008.1

Soluo
COD_CD

CANTOR

MUSICA

PRECO

215621

Marisa
Monte

Beija Eu

R$
20,00

215621

Marisa
Monte

Chocolate

R$
20,00

878650

Tom Jobim

Corcovad
o

R$
25,00

878650

Tom Jobim

Sabi

R$
25,00

TABELA CDs

TABELA MUSICAS

MUSICA

DURACA
O

Beija Eu

2:20

Chocolat
e

3:05

Corcovad
o

2:50

Sabi

2:10

2008.1
CLIENTE

COD_CD

CANTOR

MUSICA

DURACA
O

PRECO

DATA_COMPR
A

Alice
Nbrega

215621

Marisa
Monte

Beija Eu

2:20

R$
20,00

21/03/2007

Alice
Nbrega

215621

Marisa
Monte

Chocolate

3:05

R$
20,00

21/03/2007

Alice
Nbrega

878650

Tom Jobim

Corcovad
o

2:50

R$
25,00

21/03/2007

Alice
Nbrega

878650

...

Tom Jobim
Sabi COD_CD
2:10 DATA_COMPRA
R$
21/03/2007
CLIENTE
25,00
Alice
215621
21/03/2007
...
... Nbrega ...
...
...
...
TABELA VENDAS
Alice
878650
21/03/2007
Nbrega
...

...

TABELA MUSICAS
MUSICA

DURACA
O

...

TABELA CDs
COD_CD

CANTOR

MUSICA

PRECO

215621

Marisa
Monte

Beija Eu

R$
20,00

Beija Eu

2:20

Chocolat
e

3:05

215621

Marisa
Monte

Chocolate

R$
20,00

Corcovad
o

2:50

878650

Tom Jobim

Corcovad
o

R$
25,00

2008.1

Observao...
Veja que as tabelas Vendas, CDs e Musicas j
esto em 3FN, mas ainda apresentam
algumas redundncias desnecessrias
Cliente e Data_Compra na tabela Vendas
Cod_CD, Cantor e Preco na tabela CDs
Para
resolver
esses
problemas,
seria
necessrio aplicar outras formas normais

2008.1

Exerccio...
A tabela abaixo representa os pedidos
de produtos de software para uma loja
e no obedece nenhuma das formas
normais vistas (1FN, 2FN e 3FN).
Indique os passos para deix-la em
cada uma dessas formas normais.

2008.1

Exerccio...
TABELA PEDIDOS

NUM_PEDIDO

DATA

FORNECEDOR

CNPJ

ENDERECO

COD_PRODUTO

NOME

QUANT

PRECO

033A
002M
145J

DOS
Corel
ABC

04
01
13

R$ 130
R$ 499
R$ 256

003

20/01/03

CasaSoftware

8888

R. Lapa, 77

004

27/01/03

BrasilSoftware

5555

Al. It, 49

002M
083P
145J

Corel
ZAPT
ABC

02
10
50

R$ 450
R$ 85
R$ 110

...

...

...

...

...

...

...

...

...

2008.1

Soluo...
Para deixar a tabela em 1FN, preciso
dividir os atributos no-atmicos em
linhas
A chave da tabela composta por
Num_Pedido e Cod_Produto

2008.1

Soluo...
TABELA PEDIDOS

NUM_PEDIDO

DATA

FORNECEDOR

CNPJ

ENDERECO

COD_PRODUTO

NOME

QUANT

PRECO

003

20/01/03

CasaSoftware

8888

R. Lapa, 77

033A

DOS

04

R$ 130

003

20/01/03

CasaSoftware

8888

R. Lapa, 77

002M

Corel

01

R$ 499

003

20/01/03

CasaSoftware

8888

R. Lapa, 77

145J

ABC

13

R$ 256

004

27/01/03

BrasilSoftware

5555

Al. It, 49

002M

Corel

02

R$ 450

004

27/01/03

BrasilSoftware

5555

Al. It, 49

083P

ZAPT

10

R$ 85

004

27/01/03

BrasilSoftware

5555

Al. It, 49

145J

ABC

50

R$ 110

...

...

...

...

...

...

...

...

...

2008.1

Soluo
Para deixar a tabela em 2FN, preciso criar
novas tabelas para os atributos que
dependem apenas de parte da chave
primria composta
Data, Fornecedor, CNPJ e Endereco dependem
apenas de Num_Pedido
Nome depende apenas de Cod_Produto
Quantidade e Preco dependem da chave composta

2008.1

Soluo
TABELA PEDIDOS

TABELA PRODUTOS

NUM_PEDIDO

COD_PRODUTO

QUANT

PRECO

COD_PRODUTO

NOME

003

033A

04

R$ 130

033A

DOS

003

002M

01

R$ 499

002M

Corel

003

145J

13

R$ 256

145J

ABC

004

002M

02

R$ 450

083P

ZAPT

004

083P

10

R$ 85

004

145J

50

R$ 110

TABELA DADOS_PEDIDOS
NUM_PEDIDO

DATA

FORNECEDOR

CNPJ

ENDERECO

003

20/01/03

CasaSoftware

8888

R. Lapa, 77

004

27/01/03

BrasilSoftware

5555

Al. It, 49

2008.1

Soluo
Para deixar as tabelas em 3FN,
preciso criar novas tabelas para os
atributos dependentes de atributos nochave
CNPJ e Endereco dependem de Fornecedor

2008.1

Soluo
TABELA PEDIDOS
NUM_PEDID
O

COD_PRODUT
O

QUAN
T

PRECO

003

033A

04

003

002M

003

TABELA PRODUTOS
COD_PRODUTO

NOME

R$ 130

033A

DOS

01

R$ 499

002M

Corel

145J

13

R$ 256

145J

ABC

004

002M

02

R$ 450

083P

ZAPT

004

083P

10

R$ 85

004

145J

50

R$ 110

TABELA DADOS_PEDIDOS

TABELA FORNECEDORES

NUM_PEDIDO

DATA

CNPJ

003

20/01/03

8888

004

27/01/03

5555

CNPJ

FORNECEDO
R

ENDEREC
O

8888

CasaSoftware

R. Lapa, 77

5555

BrasilSoftware

Al. It, 49

Anda mungkin juga menyukai