Sei sulla pagina 1di 30

AULA 25-26

Normalizao
Curso: Tcnico em Informtica (Integrado)
Disciplina: Banco de Dados
Prof. Abraho Lopes
abrahao.lopes@ifrn.edu.br

Normalizao
 uma tcnica formal para projeto de banco de

dados que pode ser usada para realizar uma


verificao das estruturas produzidas a partir de
diagramas ER. (GILLENSON, 2006)
 Normalizao o processo que permite a

simplificao da estrutura de um banco de dados de


modo que esta se apresente em um estado timo,
sem duplicao de informaes (DAMAS, 2007)

Normalizao
 Ajuda a compreender conceitos importantes como

redundncia de dados e chaves estrangeiras, e responder


perguntas como: que atributos minha entidade deve ter?
que relacionamentos devem existir? como fica a
cardinalidade?
 Organiza os atributos em tabelas de modo que a

redundncia seja eliminada, ou seja, remove grupos


repetidos de informaes.
 Ajuda a melhorar o desempenho e facilitar a manuteno

do banco de dados.

Normalizao
 Ao projetar um banco de dados deve-se evitar:
 Existncia de grupos repetitivos;
 Existncia de atributos multivalorados;
 Redundncia de dados;
 Perda de Informaes;
 Falhas na sincronizao de dados idnticos em tabelas
diferentes;
 Existncia de atributos que dependem apenas de parte de uma
chave primria;
 Existncia de dependncias transitivas entre atributos;
 A normalizao ajuda a resolver esses problemas

Exemplo
 Observe a tabela a seguir:
Produto

Pedido

Cliente

Endereo

Crdito

Data

Vendedor

TV

1546

Joo

Rua A

01-03-10

Marcelo

DVD

2345

Miguel

Av. B

12-09-09

Felipe

Rdio

2466

Carlos

Trav. C

05-05-10

Marcelo

CD

0987

Joo

Rua A

11

11-12-08

Antonio

Geladeira 8576

Davi

Rua 9

15-04-10

Lidio

Exemplo
 Como as informaes sobre produtos, clientes e vendedores

esto todas na mesma tabela, existem informaes


redundantes (ex. o endereo de Joo). Isso gera
desperdcio de espao e no caso de uma atualizao ou
consulta toda a tabela precisa ser percorrida.
 O ideal decompor essa tabela em tabelas menores, cada

uma armazenando um domnio de dados (produtos,


clientes, vendedores, vendas...)
 Antes de estudarmos mais sobre normalizao, precisamos

compreender sobre Dependncias Funcionais.

Dependncia Funcional
 uma restrio entre dois conjuntos de atributos de uma

mesma entidade/relao representada por uma expresso


X  Y em que o componente Y dependente do valor X, ou
seja, existe um valor de X para cada valor de Y.
 Exemplo:
Produto

Preo

Imposto

Total

TV

400,00

10,00

410,00

DVD

100,00

5,00

105,00

SOM

300,00

8,00

308,00

 Como a coluna Total formada pela soma de Preo e Imposto,

dizemos que ela dependente funcionalmente dessas colunas.

Dependncia Funcional
 Se X for uma chave primria, todos os demais

atributos do registro so funcionalmente


dependentes de X.
Chave primria  Atributos no chave
 Quando uma chave primria composta (formada

por vrios atributos) e um depende de toda a


chave, dizemos que h uma dependncia
funcional completa (ou total).

Dependncia Funcional
 Exemplo:
Chave Composta

CodMatric

CodCurso

CodDiscipl

NomAluno

DataMatr

NomCurso

NomeDiscipl

NotaProva

 A nota da prova s poder ser identificada

corretamente quando usamos a chave completa.

Dependncia Funcional
 Quando um atributo depende apenas de parte da

chave composta, dizemos que h uma dependncia


parcial.
Chave Composta

CodMatric

CodCurso

CodDiscipl

NomAluno

DataMatr

NomCurso

NomeDiscipl

NotaProva

 O nome da disciplina depende exclusivamente do

cdigo da disciplina.

Dependncia Funcional
 Se um atributo depende de valores que no chave

ou no fazem parte de uma chave, dizemos que h


uma dependncia transitiva.
 Veremos um exemplo desse tipo de dependncia

mais adiante.

O processo de normalizao
 A normalizao de dados um processo que nos

conduz por uma srie de anlises para verificao de


esquemas de relao quanto sua situao diante de
uma Forma Normal. (ALVES, 2004)
 Existem 5 formas normais, porm as 3 primeiras j

oferecem uma boa definio para a estrutura do


banco e sero as nicas abordadas aqui.
 Se as regras forem seguidas com cuidado, o sistema

ser bastante flexvel e confivel.

O processo de normalizao
 Dizemos que um esquema se encontra em uma

determinada forma normal quando todas as


tabelas do conjunto se encontram normalizadas na
mesma forma.

Dados no normalizados (0FN ou FN0)


 Dizemos que os dados no esto normalizados

quando todos os atributos se apresentam em um


nico conjunto.
 Exemplo:

Numero do vendedor, Nome do vendedor,


porcentagem da comisso ano de contratao,
nmero do departamento, nome do gerente,
nmero do produto, nome do produto, preo
unitrio, quantidade.

A primeira forma normal (1FN ou FN1)


 Dizemos que um esquema se encontra na primeira

forma normal (1FN) quando no existem


atributos multivalorados.
 importante escolher uma chave primria para

cada tabela.

A primeira forma normal (1FN ou FN1)


 Exemplo de uma tabela com campos multivalorados:
Numer
o do
vende
dor

Numer
o do
produt
o

Nome
do
vende
dor

Porcen
tagem
de
comiss
o

Ano de
contra
tao

Numer
o do
depart
ament
o

Nome
do
gerent
e

Nome
do
produt
o

Preo
Unitr
io

Quanti
dade

137

1000
1010
1030

Joo

1995

20

Carlos Bola
Cola
Goma

8,00
15,00
2,00

4
6
8

221

2000
3010
4020

Marco 5

2000

10

Pedro

456

3000
9999
0348

Maria

1995

20

Carlos Copo
Jarro
Palito

Lpis 1,00
Rgua 3,00
Pincel 2,00
4,00
20,00
0,50

9
4
1
2
6
7

A primeira forma normal (1FN ou FN1)


 Tabela anterior na primeira forma normal:
Numer
o do
vende
dor

Numer
o do
produt
o

Nome
do
vende
dor

Porcen
tagem
de
comiss
o

Ano de
contra
tao

Numer
o do
depart
ament
o

Nome
do
gerent
e

137

1000

Joo

1995

20

137

1010

Joo

1995

137

1030

Joo

221

2000

221
221

Nome
do
produt
o

Preo
Unitr
io

Quanti
dade

Carlos Bola

8,00

20

Carlos Cola

15,00

1995

20

Carlos Goma

2,00

Marco 5

2000

10

Pedro

Lpis

1,00

3010

Marco 5

2000

10

Pedro

Rgua 3,00

4020

Marco 5

2000

10

Pedro

Pincel 2,00

 Cada item ocupa sua prpria linha (registro).

A primeira forma normal (1FN ou FN1)


 Ou, em modo textual:

Numero do vendedor, Nmero do produto,


Nome do vendedor, porcentagem da
comisso ano de contratao, nmero
do departamento, nome do gerente,,
nome do produto, preo unitrio,
quantidade.

A primeira forma normal (1FN ou FN1)


 A primeira forma normal apenas um ponto de

partida para a normalizao, pois como podemos


notar ainda existe muita redundncia (ex. o nome do
vendedor repetido vrias vezes em um mesmo
pedido).
Numero do vendedor Numero do produto Nome do vendedor
137

1000

Joo

137

1010

Joo

137

1030

Joo

 Isso acontece por que h uma mistura de diferentes

domnios de dados numa nica tabela (vendedor e


produto).

A segunda forma normal (2FN ou FN2)


 Uma tabela encontra-se na segunda forma normal

quando, alm de estar na primeira forma normal,


cada coluna no chave depende
funcionalmente da chave primria completa.
Ou seja, no existem dependncias parciais.
 Conseguimos isso decompondo a tabela em

diversas tabelas, cada uma com seu domnio de


dados.

A segunda forma normal (2FN ou FN2)


 Observe que Nome do Vendedor depende apenas

de Nmero do Vendedor e no de Nmero do


Produto.
 O mesmo acontece com Nome do Produto, que

depende apenas do Nmero do produto e no de


Nmero do Vendedor.

A segunda forma normal (2FN ou FN2)


Vendedor (Numero do vendedor, Nome do
vendedor, porcentagem da comisso, ano de
contratao, nmero do departamento, nome do
gerente);
Produto (nmero do produto, nome do produto,
preo unitrio).
Quantidade (nmero do produto, nmero do
vendedor, quantidade).

A segunda forma normal (2FN ou FN2)


Tabela VENDEDOR
Nmero do
vendedor

Nome do
vendedor

Porcentagem
de comisso

Ano
contratao

Nmero
departamento

Nome do
gerente

137

Joo

1995

20

Carlos

221

Marco

2000

10

Pedro

456

Maria

1995

20

Carlos

Tabela PRODUTO
Nmero do
produto

Nome do
produto

Preo
Unitrio

1000

Bola

8,00

1010

Cola

15,00

1030

Goma

2,00

Tabela QUANTIDADE
Nmero do
Vendedor

Nmero do
produto

Quantidade

137

1000

137

1010

137

1030

A segunda forma normal (2FN ou FN2)


 Aqui podemos observar que muita redundncia foi

eliminada em relao primeira forma normal. Cada


registro aparece apenas uma vez em sua prpria tabela.
 Porm nem toda a redundncia foi eliminada. Se

observarmos, o nome do gerente Carlos aparece duas vezes


na tabela vendedor.
Nmero do
vendedor

Nome do
vendedor

Porcentagem
de comisso

Ano
contratao

Nmero
departamento

Nome do
gerente

137

Joo

1995

20

Carlos

221

Marco

2000

10

Pedro

456

Maria

1995

20

Carlos

A segunda forma normal (2FN ou FN2)


 Esse problema acontece por que apesar dos atributos

serem dependentes de Nmero do vendedor na


relao, o atributo Gerente tambm
funcionalmente dependente de Nmero do
Departamento. o que chamamos de
Dependncia Transitiva.
 Isso nos leva terceira forma normal.

A terceira forma normal (3FN ou FN3)


 Um esquema est na terceira forma normal quando,

alm de estar na segunda forma normal, no


existem dependncias entre atributos no
chave (dependncias transitivas).
 Conseguimos isso decompondo ainda mais as tabelas

e criando chaves estrangeiras.

A terceira forma normal (3FN ou FN3)


Chave Estrangeira

Nmero do
vendedor

Nome do
vendedor

Porcentagem
de comisso

Ano
contratao

Nmero
departamento

137

Joo

1995

20

221

Marco

2000

10

456

Maria

1995

20

Nmero
departamento

Nome do
gerente

20

Carlos

10

Pedro

A terceira forma normal (3FN ou FN3)


 Nesse ponto nosso banco de dados est livre de

redundncia, respeitando todas as dependncias


funcionais e representa a transformao a partir de
um diagrama ER.

Exerccios

Referncias
 ALVES, W. P. Fundamentos de Bancos de Dados.

rica, 2004
 DAMAS, Luiz. SQL. 6 ed. LTC, 2007.
 GILLENSON, Mark L. Fundamentos de Sistemas
de Gerncia de Banco de Dados. LTC, 2006.
 HEUSER, Carlos Alberto. Projeto de Banco de
Dados. Sagra Luzzatto, 2004.
 TEOREY, Toby J. Projeto e modelagem de banco
de dados. Elsevier, 2007.