Anda di halaman 1dari 34

Normalizao de Tabelas

Sistemas de Informao
Profa. Andrea Alves
andreacpm04@gmail.com

Normalizao de Tabelas
A normalizao serve para analisar tabelas e
organiz-las de forma que a sua estrutura seja
simples, relacional e estvel, para que o
gerenciamento possa ser tambm simples,
eficiente e seguro.
Os objetivos so evitar a perda e a repetio da
informao e atingir uma forma de
representao adequada para o que se deseja
armazenar.
Oferece mecanismos para analisar o projeto do
BD e a identificao de erros. Oferece mtodos
para corrigir problemas.

Normalizao de Tabelas
Normalmente aps a aplicao das Regras de
Normalizao, algumas tabelas acabam sendo
divididas em duas ou mais tabelas, o que no
final gera um nmero maior de tabelas do que o
originalmente existente. Este processo causa a
simplificao dos atributos de uma tabela,
colaborando significativamente para a
estabilidade do modelo de dados, reduzindo-se
consideravelmente as necessidades de
manuteno. Vamos entender o Processo de
Normalizao na Prtica, atravs de exemplos.

Exemplo

Normalizao de tabelas
Problemas apresentados

atualizao: uma mudana na descrio da pea BT04 requer


vrias mudanas

Inconsistncia: no h nada no projeto impedindo que a pea


BT04 tenha duas ou mais descries diferentes no BD

Normalizao de Tabelas

Primeira Forma Normal:


"Uma Tabela est na Primeira Forma Normal quando seus atributos no contm
grupos de Repetio alm de tambm no permitir atributos multivalorados
macios".
Por isso dissemos que uma Tabela que possui Grupos de Repetio no est na
Primeira Forma Normal. Considere a estrutura da Tabela Indicada na Prxima
Figura:

Tabela que no est na Primeira Forma


Normal.

Normalizao de Tabelas
Uma tabela com esta estrutura apresentaria diversos
problemas. Por exemplo se um casal tiver mais de um filho,
teremos que digitar o Nome do Pai e da Me diversas
vezes, tantas quantos forem os filhos. Isso forma um Grupo
de Repetio. Alm do mais pode ser que por erro de
digitao o Nome dos Pais no seja digitado exatamente
igual todas as vezes, o que pode acarretar problemas na
hora de fazer pesquisas ou emitir relatrios.
Este problema ocorre porque "Misturamos Assuntos" em
uma mesma tabela. Colocamos as informaes dos Pais e
dos Filhos em uma mesma tabela. A resoluo para este
problema simples: Criamos uma tabela separada para a
Informao dos Pais e Relacionamos a tabela Pais com a
Tabela Filhos atravs de um relacionamento do tipo Um
para Vrios, ou seja, um casal da Pais pode ter Vrios Filhos.

Normalizao de Tabelas

Observe na figura abaixo as duas tabelas: Pais e Filhos, j normalizadas.

As duas tabelas Resultantes da Aplicao da Primeira


Forma Normal: Pais e Filhos esto na Primeira Forma
Normal, a Tabela Original, a qual misturava informaes de
Pais e Filhos, no estava na Primeira forma Normal

Outro Exemplo

Na tabela abaixo, vamos ver os problemas causados por


atributos multivalorados macios:

Outro Exemplo
Problemas com o exemplo apresentado:

No h como saber qual exatamente a data de nascimento


de cada criana, nada garante a seqncia que mostrada;

A pesquisa na tabela fica difcil, pois o domnio sugere


caracteres, pois no se sabe quantos so os filhos e
respectivas datas de nascimento.

Soluo Incorreta

Problemas com a soluo:


A relao est limitada a trs filhos
por funcionrio;
Pode-se ter muitos funcionrios com
apenas um filho ou sem filhos;
Pesquisar por um filho especfico
aumenta a complexidade da
consulta.

Soluo Correta

Normalizao de Tabelas
Segunda Forma Normal:
Uma relao est na 2FN se:
est na 1FN
no existe atributo no chave que dependente de somente
uma parte da chave primria.

Normalizao de Tabelas
De acordo com suas dependncias, o atributo NomeFunc viola a segunda
f
forma normal dada a dependncia CPF NomeFunc. O mesmo
acontece com os atributos NomeProj e LocalProj, dadas as dependncias
NumProj NomeProj e NumProj LocalProj.
Se um esquema de relao no esta na 2FN, ele pode ser normalizado
para a 2FN por meio de sua decomposio em um conjunto de esquemas
de relaes na 2FN onde os atributos esto associados somente com a
parte da chave primaria da qual eles dependem funcionalmente de forma
total. As dependncias CPF NomeFunc, NumProj NomeProj e
NumProj LocalProj levam a decomposiao de FUNC PROJ
em trs esquemas de relao.

Mais Exemplos

pedido (nro_pedido, data, nmero_cliente, nome_cliente,


nro_pea, nome_pea, qtde_comprada, preo_cotado)

nro_ped data, nmero_cliente, nome_cliente

nro_pea nome_pea

nro_ped, nro_pea qtde_comprada, preo_cotado

Mtodos de resoluo

para cada subconjunto do conjunto de atributos que constitui


a chave primria, comear uma relao com esse subconjunto
como sua chave primria;

incluir os atributos da relao original na relao


correspondente chave primria apropriada, isto , colocar
cada atributo junto com a coleo mnima da qual ele
depende, atribuindo um nome a cada relao.

Corrigindo o problema

Colocando em 1FN

Cliente (nro_cliente, nome_cliente)

Separando as tabelas

pedido (nro_ped, data, nmero_cliente)

pea (nro_pea, nome_pea)

pedido_pea (nro_ped, nro_pea, qtde_comprada, preo_cotado)

Normalizao de Tabelas
Uma relao r est na 3FN se:

est na 2FN
no existem atributos no chave que sejam dependentes de
outros atributos no chave

Tabela com um Campo dependente de Outro campo que no a


Chave Primria. No est na Terceira Forma Normal.

Normalizao de Tabelas
Observe que o Campo DescrioDoCargo depende
apenas do Campo CdigoDoCargo, o qual no faz
parte da Chave Primria. Por isso dizemos que esta
tabela no est na terceira forma normal. A Soluo
deste problema tambm simples. Novamente basta
dividir a tabela em duas outras, conforme indicado
pela figura a seguir. As duas tabelas resultantes esto
na Terceira Forma Normal.

Tabelas Resultantes que esto na Terceira Forma


Normal.

Exemplo 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)

Primeira Forma Normal (1FN)


Colocar a tabela abaixo em 1FN

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

...

...

...

...

...

...

Exemplo Segunda Forma Normal (2FN)


A tabela 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)

Segunda Forma Normal (2FN)

As tabelas abaixo esto em 1FN e 2FN


COD_TURM
A

COD_ALUNO

QTE_FALTA
S

BD1032

02

BD1032

00

BD1032

04

...

...

...

COD_TURM
A

PROFESSO
R

SALA

CAPACIDAD
E

BD1032

101

50

LG1512

101

50

JV8796

10

101

50

...

...

...

...

Exemplos Terceira Forma Normal (3FN)


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

PROFESSOR

SALA

CAPACIDADE

BD1032

101

50

LG1512

101

50

JV8796

10

101

50

...

...

...

...

O atributo Capacidade depende do atributo Sala,


e no da chave Cod_Turma

Terceira Forma Normal (3FN)

As tabelas abaixo esto em 3FN

COD_TURM
A

ALUNO

QTE_FALTA
S

BD1032

02

BD1032

00

BD1032

04

...

...

...

COD_TURM
A

PROFESSO
R

SALA

BD1032

101

LG1512

101

JV8796

10

101

...

...

...

SALA

CAPACIDAD
E

101

50

201

40

301

50

...

...

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

BOYCE AND CODD NORMAL FORM BCNF

Trata de dados dependentes que podem ser perdidos em um caso


de deleo.
Aluno
Disciplina
Monitor
Exemplos:
1930
AC8
1401
7890

AC9

1402

1930

CD8

1403

5678

CD8

1403

5678

AC8

1237

Cada disciplina pode ter vrios monitores

Um monitor s monitora 1 disciplina

O aluno pode ter monitores em vrias disciplinas

BOYCE AND CODD NORMAL FORM BCNF

Problemas:

Se deletar o Aluno de cdigo 7890 perde-se o registro de qual era


o monitor da disciplina

Se o aluno no solicitar monitoria em uma disciplina, no


possvel inserir o monitor para a mesma, ou seja, no se tem
registro de quem o monitor escolhido para esta disciplina.

Apesar da tabela estar em 3FN, ela no est em BCNF.

BOYCE AND CODD NORMAL FORM BCNF

Soluo:

Cod_A_
D
PK

Aluno
FK

Disciplina
FK

Cod_M_D
PK

Disciplin
a
FK

Monitor
FK

1930

AC8

AC8

1401

7890

AC9

AC9

1402

1930

CD8

CD8

1403

5678

CD8

CD8

1403

5678

AC8

AC8

1237

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.

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
...

...

...

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.

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/15

CasaSoftware

8888

R. Lapa, 77

004

27/01/15

BrasilSoftware

5555

Al. It, 49

002M
083P
145J

Corel
ZAPT
ABC

02
10
50

R$ 450
R$ 85
R$ 110

...

...

...

...

...

...

...

...

...

Agora modele e normalize


as seguintes tabelas
a)

Empregado (Nmero Empregado, Nome do Empregado,


Nmero do Departamento, Nome do Departamento, Nmero do
Gerente, Nome do Gerente, Nmero do Projeto, Nome do Projeto,
Dia de Incio do Projeto, Nmero de horas trabalhadas no
projeto).

b)

Ordem_Compra

(cd_ordem_compra,
dt_emisso,
cd_fornecedor, nm_fornecedor, endereo_fornecedor, cd_material
(n vezes), descrio_material (n vezes), qt_comprada (n vezes),
vl_unitrio (n vezes), vl_total_item (n vezes), vl_total_ordem).

c)

Tabela de Notas Fiscais (Num. NF, Srie, Data emisso, Cod.


Cliente, Nome cliente, Endereo cliente, CGC cliente, Cdigo
Mercadoria, Descrio Mercadoria, Quantidade vendida, Preo de
venda, Total da venda da Mercadoria e Total Geral da Nota).Cada
nota pode ter mais do que um mercadoria.

d)

Inscrio (Cdigo do Aluno, Nome do Aluno, Telefone para


contato, Ano de Admisso, Cdigo da Disciplina, Nome da
Disciplina, Nome do Curso, Data da Matricula).