04.12.2019 Views

BD1 - Normalização flipbook

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Banco de Dados

Normalização

Normalização

03/12/2019 1


Normalização

• É um processo que objetiva substituir um conjunto de tabelas e

relacionamentos com dados redundantes, por outro que se

apresente mais estável, evitando perdas e redundância de

informações.

CLIENTE

PEDIDO

FUNCIONÁRIO

?

Modelo instável e com

redundância de dados

Modelo estável e sem

redundância de dados

Normalização 03/12/2019 2


Normalização

• Este processo deve ser realizado para cada tabela do banco de

dados que apresente anomalias de atualização.

• Anomalias de atualização são problemas existentes em tabelas

relacionais não normalizadas, que podem gerar inconsistências

causadas por redundância de dados

• O processo de normalização transforma cada tabela

desnormalizada em tabelas menores até que não reste mais

nenhuma redundância de dados.

• Essa transformação é feita através da aplicação das formas

normais para cada tabela, criando um número maior de tabelas

do que originalmente existente.

Normalização 03/12/2019 3


Normalização Botton-Up

• As formas normais são utilizadas durante a construção dos

modelos conceitual e lógico.

MINIMUNDO

FORMAS

NORMAIS

MODELO

CONCEITUAL

FORMAS

NORMAIS

BANCO

DE

DADOS

SQL

MODELO

LÓGICO

Normalização 03/12/2019 4


Normalização Bottton-Up

• Fatores importantes:

• Abrangência do modelo: quanto mais restrito, maior a chance

da criação de um modelo mais normalizado.

• Facilidade de compreensão e abstração: o correto entendimento

das regras de negócio poderá levar à criação de um modelo mais

normalizado.

• Conhecimento prévio do ambiente: o conhecimento prévio do

ambiente operacional e dos resultados esperados poderá levar à

criação de um modelo mais normalizado.

Normalização 03/12/2019 5


Normalização Top-Down

• As formas normais são aplicadas após a definição do modelo

lógico, para produzir tabelas mais estáveis.

BANCO

DE

DADOS

FORMAS

NORMAIS

MODELO

LÓGICO

MODELO

CONCEITUAL

TABELAS

ESTÁVEIS

Normalização 03/12/2019 6


Dependência Funcional

• É um relacionamento entre pelo menos dois atributos, onde o

valor de um deles determina o valor do outro.

• Um atributo B é funcionalmente dependente de um atributo A se

o valor de A determina o valor de B.

A → B

B é funcionalmente dependente de A

• Supondo que cada aluno tenha um número de matrícula e que

esteja matriculado em apenas um curso.

MAT → CURSO

CURSO é funcionalmente dependente de MAT

Normalização 03/12/2019 7


Dependência Funcional

• Os atributos do lado esquerdo da seta são chamados de

determinantes.

MAT → CURSO

• MAT é o determinante da dependência funcional.

• MAT determina funcionalmente CURSO.

• CURSO depende funcionalmente de MAT.

• Um valor particular de MAT corresponde a um único valor de

CURSO.

• Um valor particular de CURSO pode corresponder a um ou a

vários valores diferentes de MAT.

Normalização 03/12/2019 8


Dependência Funcional

• O determinante de uma dependência funcional pode ser um

conjunto de atributos.

(PEDIDO, PRODUTO → QUANTIDADE

• PEDIDO e PRODUTO são necessários para se determinar a

quantidade de um produto em cada pedido.

• Nem PEDIDO nem PRODUTO determinam sozinhos o valor de

QUANTIDADE.

• Se (X, Y) → (A, B), então, (X, Y) → A e (X, Y) → B.

• Em toda tabela, todos os atributos não-chave possuem

dependência funcional da chave primária da tabela.

Normalização 03/12/2019 9


Dependência Funcional

• Exemplo:

A B C D E

Y J a 5 12

Z M b 8 15

Y K d 5 13

Y J a 5 12

Z N e 8 16

Z M b 8 15

X P c 4 18

X L f 4 14

X P c 4 18

A → D , B → E , (A, B) → C

Normalização 03/12/2019 10


Dependência Funcional Parcial

• Um atributo A tem dependência funcional parcial da chave

primária concatenada, se ele possui dependência funcional de

apenas parte dessa chave.

• Em uma tabela que possua os atributos X, Y, A, B, C e D com X e Y

sendo a chave primária concatenada da tabela:

• Se (X,Y) → A e (X,Y) → C, então A e C possuem dependência

funcional total da chave primária.

• Se X → B e Y → D, então B e D possuem dependência

funcional parcial da chave primária.

X Y A

B C

D

Normalização 03/12/2019 11


Dependência Funcional Transitiva

• Um atributo A tem dependência funcional transitiva da chave

primária, se ele possui dependência funcional de um atributo B,

que possui dependência dessa chave.

• Em uma tabela que possua os atributos X, A, B, C e D com X sendo

a chave primária da tabela:

• Se X → A e A → C, então C possui dependência transitiva da

chave primária.

• Se X → B e B → D, então D possui dependência

transitiva da chave primária.

X A

B

C

D

Normalização 03/12/2019 12


Um Exemplo

Tabelas

desnormalizadas

Normalização 03/12/2019 13


Anomalias de Atualização

• Inserção na tabela CLIENTE:

• Só é possível a inclusão de uma cidade ou país, a partir da

inclusão de um novo cliente.

• Sempre que um novo cliente for inserido, todos os dados de

cidade e país deverão também ser inseridos, mesmo que já se

tenha feito isso anteriormente (inclusão forçada).

• Haverá redundância dos valores de cidade e país,

considerando que em uma mesma cidade ou país poderão

existir vários clientes. Os valores redundantes poderão ser

inseridos de maneiras diferentes, causando inconsistência.

Normalização 03/12/2019 14


Anomalias de Atualização

• Exclusão na tabela CLIENTE:

• A exclusão de uma cidade ou país deverá ser feita em todos os

registros onde esses dados estejam inseridos (exclusão

forçada).

• A exclusão de uma cidade ou país acarretará na exclusão de

um ou vários clientes (exclusão indesejada).

• Alteração na tabela CLIENTE:

• Devido à redundância, a alteração dos valores de uma cidade

ou país poderá necessitar de ser realizada em várias linhas da

tabela.

Normalização 03/12/2019 15


Anomalias de Atualização

• Inserção na tabela FUNCIONÁRIO:

• Só é possível a inclusão de uma cidade, país, setor ou função,

a partir da inclusão de um novo funcionário.

• Sempre que um novo funcionário for inserido, todos os dados

de cidade, país, setor e função deverão também ser inseridos,

mesmo que já se tenha feito isso anteriormente (inclusão

forçada).

• Haverá redundância dos valores de cidade, país, setor e

função. Os valores redundantes poderão ser inseridos de

maneiras diferentes, causando inconsistência.

Normalização 03/12/2019 16


Anomalias de Atualização

• Exclusão na tabela FUNCIONARIO:

• A exclusão de uma cidade, país, setor ou função deverá ser

feita em todos os registros onde esses dados estejam

inseridos (exclusão forçada).

• A exclusão de uma cidade, país, setor ou função acarretará na

exclusão de um ou vários funcionários (exclusão indesejada).

• Modificação na tabela FUNCIONARIO:

• Devido à redundância, a alteração dos valores de cidade, país,

setor ou função poderá necessitar de ser realizada em várias

linhas da tabela.

Normalização 03/12/2019 17


Anomalias de Atualização

• Inserção na tabela PEDIDO:

• Só é possível a inclusão de um produto, a partir da inclusão de

um novo pedido.

• Sempre que um novo pedido for inserido, todos os dados de

produto deverão também ser inseridos, mesmo que já se

tenha feito isso anteriormente (inclusão forçada).

• Haverá redundância dos dados de produto, que poderão ser

inseridos de maneiras diferentes, causando inconsistência.

Normalização 03/12/2019 18


Anomalias de Atualização

• Exclusão na tabela PEDIDO:

• A exclusão de um produto deverá ser feita em todos os

registros onde esses dados estejam inseridos (exclusão

forçada).

• A exclusão de um pedido acarretará na exclusão de um ou

vários produtos (exclusão indesejada).

• Modificação na tabela PEDIDO:

• Devido à redundância, a alteração dos valores de produto

poderá necessitar de ser realizada em várias linhas da tabela.

Normalização 03/12/2019 19


Primeira Forma Normal

• Uma tabela está na primeira forma normal (1FN) se:

• as linhas não contêm itens repetitivos (atributos

multivalorados) que geram tabelas aninhadas. Cada

ocorrência da chave primária deve corresponder a apenas um

valor de cada atributo;

• não existem atributos compostos. Cada atributo deve ser

atômico, ou seja, armazenar a menor quantidade possível da

informação, sem perder sua identidade e funcionalidade.

Normalização 03/12/2019 20


Obtenção da Primeira Forma Normal

• Definir a chave primária da tabela (se não houver).

• Transformar os atributos compostos em atômicos.

• Eliminar os atributos multivalorados, gerando uma tabela para

cada conjunto de itens repetitivos.

• A chave primária da tabela original será chave estrangeira em

cada uma das tabelas geradas.

• A chave primária de cada tabela gerada será a concatenação da

chave estrangeira oriunda da tabela original, com um atributo da

nova tabela.

• Os atributos multivalorados são excluídos da tabela original.

Normalização 03/12/2019 21


Obtenção da Primeira Forma Normal

TABELA A

TABELA A

PK

##################

##################

PK

##################

##################

TABELA B

##################

##################

Conjunto de

atributos

multivalorados

##################

##################

##################

##################

##################

##################

PK

##################

##################

##################

##################

##################

FK

##################

##################

##################

##################

##################

##################

Conjunto de

atributos

multivalorados

##################

##################

##################

##################

##################

##################

##################

##################

##################

PK

TABELA C

################## FK

##################

##################

##################

##################

##################

##################

normalizada 1FN

##################

não normalizada 1FN

Normalização 03/12/2019 22


Obtenção da Primeira Forma Normal

Tabela

desnormalizada

1FN

Normalização 03/12/2019 23


Obtenção da Primeira Forma Normal

Tabelas

normalizadas

1FN

Normalização 03/12/2019 24


Esquema Resultante Após a 1FN

Tabelas obtidas a

partir da 1FN

Normalização 03/12/2019 25


Segunda Forma Normal

• Uma tabela está na segunda forma normal (2FN) se:

• estiver na primeira forma normal. Todos os atributos são

atômicos e não existem atributos multivalorados;

• não existem atributos com dependência parcial da chave

primária composta. Todos os atributos não-chave dependem

funcionalmente da totalidade da chave primária composta por

mais de um atributo.

Normalização 03/12/2019 26


Obtenção da Segunda Forma Normal

• Analisar, para cada atributo não-chave, se existe dependência

parcial da chave primária da tabela.

• Para cada grupo de atributos dependentes parcialmente da

chave, criar novas tabelas que herdarão a chave parcial e todos

os atributos que dependem dessa chave parcial. Essa chave

parcial será a chave primária da nova tabela criada tabela.

• O atributo que está causando a dependência parcial na tabela

original (parte da chave primária), será chave estrangeira nessa

tabela.

• Excluir da tabela original todas as colunas com dependência

parcial da chave.

Normalização 03/12/2019 27


Obtenção da Segunda Forma Normal

TABELA A

TABELA A

PK

##################

##################

FK

FK

PK

##################

##################

FK

FK

##################

##################

TABELA B

##################

##################

Conjunto de

atributos com

dependência

parcial

##################

##################

##################

##################

##################

##################

##################

##################

##################

##################

##################

PK

##################

##################

##################

##################

##################

##################

##################

##################

TABELA C

normalizada 2FN

Conjunto de

atributos com

dependência

parcial

##################

##################

##################

##################

##################

################## PK

##################

##################

##################

##################

##################

##################

##################

não normalizada 2FN

Normalização 03/12/2019 28


Obtenção da Segunda Forma Normal

Tabela

desnormalizada

2FN

Normalização 03/12/2019 29


Obtenção da Segunda Forma Normal

Tabelas

normalizadas

2FN

Normalização 03/12/2019 30


Esquema Resultante Após 2FN

Tabelas obtidas a

partir da 2FN

Normalização 03/12/2019 31


Terceira Forma Normal

• Uma tabela está na terceira forma normal (3FN) se:

• estiver na segunda forma normal. Todos os atributos são

atômicos, não possui atributos multivalorados e não existem

atributos com dependência parcial da chave primária da

tabela;

• não existem atributos com dependência transitiva da chave

primária. Todos os atributos não-chave dependem

diretamente da chave primária da tabela.

• não existem atributos derivados de outros atributos. Todos os

atributos são formados por dados primários, não existindo

atributos calculados, que derivam dos valores de outros

atributos.

Normalização 03/12/2019 32


Obtenção da Terceira Forma Normal

• Analisar, para cada atributo não-chave, se existe dependência

transitiva da chave primária da tabela.

• Para as colunas com dependência transitiva da chave primária,

criar uma nova tabela contendo as colunas com dependência

transitiva e também a coluna que está causando essa

dependência. Essa coluna será a chave primária da tabela criada.

• O atributo que está causando a dependência transitiva na tabela

original, será chave estrangeira nessa tabela.

• Excluir da tabela original os atributos com dependência transitiva

da chave primária e os atributos derivados de outros.

Normalização 03/12/2019 33


Obtenção da Terceira Forma Normal

TABELA A

TABELA A

PK

##################

PK

##################

##################

##################

Conjunto de

atributos com

dependência

transitiva

##################

##################

##################

##################

##################

##################

##################

FK

TABELA B

################## PK

##################

##################

##################

##################

##################

##################

##################

##################

##################

##################

FK

FK

##################

##################

##################

################## FK

TABELA C

##################

##################

Conjunto de

atributos com

dependência

transitiva

##################

##################

##################

##################

##################

##################

################## PK

##################

##################

##################

##################

normalizada 3FN

##################

não normalizada 3FN

Normalização 03/12/2019 34


Obtenção da Terceira Forma Normal

Atributos

derivados

Normalização 03/12/2019 35


Obtenção da Terceira Forma Normal

Normalização 03/12/2019 36


Obtenção da Terceira Forma Normal

Normalização 03/12/2019 37


Obtenção da Terceira Forma Normal

Normalização 03/12/2019 38


Esquema Resultante Após 3FN

Tabelas obtidas a

partir da 3FN

Normalização 03/12/2019 39


Copyright © 2019 Nilton Freire Santos.

Todos os direitos reservados.

Normalização 03/12/2019 40


Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!