04.12.2019 Views

BD1 - Normalização flipbook

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

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!