Normalização
Luiz Henrique Zambom Santana
17/11/2016
Agenda
● Objetivos da normalização
● Como é uma tabela sem normalização
● Como é uma tabela normalizada
● Processo de normalização
● Exemplo de fonte de dados
● Tabela ÑN
● 1° forma normal
● Exercícios
● Dependência Funcional
● 2° e 3° formas normais
● Exercícios
● DF Multivalorada
● 4° forma normal
● Exercícios
Objetivos da normalização
● Processo
○ Entrada
■ Fonte de dados estruturados da organização (e.g., relatório, fichário, tabela, documento
estruturado)
○ Saída
■ Esquema relacional para a fonte de dados
● Objetivos do processo
○ Obtenção de um BD relacional a partir da estrutura de uma fonte de dados
○ Evitar redundância de dados
Como é uma tabela sem normalização
ID Nome Salário Depto Andar
E1 João 5000 Vendas 1
E2 Ana 4500 Vendas 1
E3 Pedro 5000 Pessoal 2
E4 Carlos 5000 Vendas 1
E5 Maria 3500 Pessoal 2
E6 José 5500 Pessoal 2
Como é uma tabela sem normalização
ID Nome Salário Depto
E1 João 5000 D1
E2 Ana 4500 D1
E3 Pedro 5000 D2
E4 Carlos 5000 D1
E5 Maria 3500 D2
E6 José 5500 D2
ID Nome Andar
D1 Vendas 1
D2 Pessoal 2
Departamentos
Empregados
Processo de normalização
● Processo sistemático para criação de tabelas, baseado em Formas Normais
● Sendo que,
○ diz se que uma tabela T está em uma forma normal se atende um conjunto de regras
○ se T está na Forma Normal (FN) i, então T está automaticamente nas FNs i - 1, i - 2, ...
● Do ponto de vista prático
○ A três primeiras (1FN, 2FN e 3FN) são as mais usadas
○ Nem sempre é ideal pois gera uma proliferação de tabelas
Processo de normalização
Modificado de: http://slideplayer.com.br/slide/3121944/
Tabelas (ÑN)
4FN
Exemplo de fonte de dados
Tabela ÑN: entrada para o processo
● Objetivo
○ Obtenção de uma representação padrão para as fontes de dados
● Facilita o processo de normalização
● Forma de representação: Tabela ÑN
○ admite uma ou mais tabelas aninhadas
○ admite atributos multivalorados
● Atributo multivalorado
○ atributo que ao invés de conter um valor único (atômico), contém múltiplos valores
Tabela ÑN
Representação de uma Tabela ÑN
● Projetos (codProj, tipo, descr, (codEmp, nome, categ, sal, dataIni,
tempoAloc))
indicam-se as chaves primárias (CPs) de cada tabela (principal e aninhadas)
1ª Forma Normal (1FN)
“Uma tabela está na 1FN sse ela não possui tabelas
aninhadas nem atributos multivalorados”
● Solução: gerar uma tabela para cada aninhamento ou atributo multivalorado
1FN - Aplicação
● ÑN:
○ Projetos (codProj, tipo, descr, (codEmp, nome, categ, sal, dataIni, tempoAloc))
● 1FN:
○ Projetos (codProj, tipo, descr)
○ Alocações (codProj, codEmp, nome, categ, sal, dataIni, tempoAloc)
● Perguntas:
○ Por que o CP da tabela externa migra para a tabela aninhada?
○ Qual a CP da tabela aninhada?
○ Qual é a cardinalidade do relacionamento entre Projetos e Alocações? (Pode-
dados da tabela aninhada na fonte de dados como um todo ou validar com es
domínio)
1FN - Aplicação
● ÑN:
○ Departamentos (codD, nome, (CPF, nome, salário))
● 1FN:
○ Departamentos (codD, nome)
○ Empregados (codD, CPF, nome, salário)
● Perguntas:
○ Qual é a cardinalidade do relacionamento entre Departamentos e Empregados ?
Atributo Multivalorado
● ÑN:
○ Empresa (codE, nome, localizacoes (1,N))
● 1FN (nova tabela):
○ Empresa (codE, nome)
○ Localizações (codE, CodL, nome_local)
● 1FN (atributos adicionais):
○ Empresa (codE, nome, local_matriz, filial_1,
filial_2)
1FN – Observação 1
● Análise de CPs na forma ÑN
○ Tabelas em qualquer nível podem não ter atributos que garantam identificação única de suas
tuplas ou ter uma CP muito extensa
○ Sugestão: definir uma CP
● ÑN:
○ Projetos (CodProj, Tipo, Descr, (Nome, Cat, Sal, DataIni, TempoAloc))
● ÑN:
○ Projetos (CodProj, Tipo, Descr, (CodEmp, Nome, Cat, Sal, DataIni, TempoAloc))
1FN – Observação 2
● Dados irrelevantes na forma ÑN
○ tabelas podem ter atributos que não precisam ser mantidos necessariamente no BD
○ Sugestão: eliminar estes atributos
● ÑN:
○ Projetos (CodProj, Tipo, Descr, NroEmps, DataRel, (CodEmp, Nome, Cat, Sal, DataIni,
TempoAloc))
● ÑN:
○ Projetos (CodProj, Tipo, Descr, (CodEmp, Nome, Cat, Sal, DataIni, TempoAloc))
● Pergunta:
○ Por que esses atributos são irrelevantes? São sempre irrelevantes?
Exercício 1
● Apresente a Tabela ÑN e a 1FN para esta Nota Fiscal
Dependência Funcional
● Conceito necessário para o
entendimento da 2ª e 3ª formas
normais
● Definição
○ Um atributo A2 depende funcionalmente
de um atributo A1 (ou um atributo A1
determina um atributo A2 ) quando, em
todas linhas da tabela, para cada valor de
A1 que aparece na tabela, aparece o
mesmo valor de A2
Dependência Funcional - Exemplos
DF Total e DF Parcial
● DF Total (atributo depende de todos componentes da CP)
○ se um atributo Ax depende funcionalmente de todos os atributos que
compõem a CP de uma tabela T, diz-se que Ax possui DF total da CP de
T
● DF Parcial (atributo depende de parte dos componentes da CP)
○ se um atributo Ax depende funcionalmente apenas de alguns atributos
(não todos!) que compõem a CP de uma tabela T, diz-se que Ax possui
DF parcial da CP de T
2ª Forma Normal (2FN)
“Uma tabela está na 2FN sse ela estiver na 1FN
e não possuir DFs parciais”
● Solução: tabelas com DFs parciais devem ser desmembradas em tabelas
que possuam DFs totais
2FN – Observação
● Tabelas cuja CP possui apenas um atributo estão automaticamente na 2FN
2FN - Aplicação
● 1FN:
○ Projetos (CodProj, Tipo, Descr)
○ Alocações (CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempoAloc)
● DF:
○ CodEmp → Nome, Cat, Sal (DF Parcial!)
○ (CodProj, CodEmp) → DataIni, TempoAloc
● 2FN
○ Projetos (CodProj, Tipo, Descr)
○ Alocações (CodProj, CodEmp, DataIni, TempoAloc)
○ Empregados (CodEmp, Nome, Cat, Sal)
Exercício
3ª Forma Normal (3FN)
“Uma tabela está na 3FN sse ela estiver na 2FN
e não possuir DFs entre atributos não-chave”
● Solução: tabelas com tais DFs devem ser desmembradas em tabelas que
não possuam essas DFs
3FN – Observação 1
● Tabelas que possuem zero ou apenas um atributo que não faz parte da CP
estão automaticamente na 3FN
3FN - Aplicação
● 2FN:
○ Projetos (CodProj, Tipo, Descr)
○ Alocações (CodProj, CodEmp, DataIni, TempoAloc)
○ Empregados (CodEmp, Nome, Cat, Sal)
● DF:
○ Cat → Sal
● 3FN:
○ Projetos (CodProj, Tipo, Descr)
○ Alocações (CodProj, CodEmp, DataIni, TempoAloc)
○ Empregados (CodEmp, Nome, Cat)
○ CategoriasFuncionais(Cat, Sal)
Exercício
Normalizar até a 3FN
● ÑN:
○ Estantes (número, capacidade, (ISBN, título, ano (codAutor, nome, nacionalidade)))
DF Multivalorada
Se um atributo Ax1 de T determina um conjunto
finito de valores para os outros atributos Ax2 , ...,
Axn de T, então diz-se que Ax2 , ..., Axn possuem
DF multivalorada de Ax1 em T
Exemplo: DF Multivalorada
● ÑN:
○ Estantes (número, capacidade, (ISBN, título, ano (codAutor, nome, nacionalidade)))
● 1FN:
○ Estantes (número, capacidade)
○ DistribuiçãoLivros (número, ISBN, título, ano) DistribuiçãoLivrosAutor (número, ISBN,
codAutor, nome, nacionalidade)
● 2FN = 3FN:
○ Estantes (número, capacidade)
○ Livros (ISBN, título, ano)
○ DistribuiçãoLivros (número, ISBN)
○ Autores (codAutor, nome, nacionalidade)
○ DistribuiçãoLivrosAutor(número, ISBN, codAutor)
relacionamento contido em outra
tabela! (pode ser removido)
Exemplo: DF Multivalorada
4ª Forma Normal (4FN)
“Uma tabela está na 4FN sse ela estiver na 3FN
e não possuir DFs multivaloradas”
● Solução: tabelas com DFs multivaloradas devem ser desmembradas em
tabelas que não possuam tais DFs
4FN – Observação 1
● Tabelas que possuem CP composta por um ou dois atributos, ou que
possuem atributos não-chave estão automaticamente na 4FN
4FN - Aplicação
● 3FN:
○ Estantes (número, capacidade)
○ Livros (ISBN, título, ano)
○ Autores (codAutor, nome, nacionalidade)
○ DistribuiçãoLivrosAutor(número, ISBN, codAutor)
● DFM
○ ISBN ↠ codAutor
● 4FN:
○ Estantes (número, capacidade)
○ Livros (ISBN, título, ano)
○ Autores (codAutor, nome, nacionalidade)
○ DistribuiçãoLivros(número, ISBN)
○ Autoria(ISBN, codAutor)
Exercício
Exercício
A tabela abaixo está na 1FN e mostra dados de associados de um clube,
incluindo profissão, seus números de celular e as modalidades esportivas que ele
pratica no clube.
Obtenha a 2FN, 3FN e 4FN AssociadosClube (CPF-associado, nome-associado,
ID-profissão, descrição-profissão, número-celular, ID-modalidade,
nome-modalidade)
Resumo

Normalização

  • 1.
  • 2.
    Agenda ● Objetivos danormalização ● Como é uma tabela sem normalização ● Como é uma tabela normalizada ● Processo de normalização ● Exemplo de fonte de dados ● Tabela ÑN ● 1° forma normal ● Exercícios ● Dependência Funcional ● 2° e 3° formas normais ● Exercícios ● DF Multivalorada ● 4° forma normal ● Exercícios
  • 3.
    Objetivos da normalização ●Processo ○ Entrada ■ Fonte de dados estruturados da organização (e.g., relatório, fichário, tabela, documento estruturado) ○ Saída ■ Esquema relacional para a fonte de dados ● Objetivos do processo ○ Obtenção de um BD relacional a partir da estrutura de uma fonte de dados ○ Evitar redundância de dados
  • 4.
    Como é umatabela sem normalização ID Nome Salário Depto Andar E1 João 5000 Vendas 1 E2 Ana 4500 Vendas 1 E3 Pedro 5000 Pessoal 2 E4 Carlos 5000 Vendas 1 E5 Maria 3500 Pessoal 2 E6 José 5500 Pessoal 2
  • 5.
    Como é umatabela sem normalização ID Nome Salário Depto E1 João 5000 D1 E2 Ana 4500 D1 E3 Pedro 5000 D2 E4 Carlos 5000 D1 E5 Maria 3500 D2 E6 José 5500 D2 ID Nome Andar D1 Vendas 1 D2 Pessoal 2 Departamentos Empregados
  • 6.
    Processo de normalização ●Processo sistemático para criação de tabelas, baseado em Formas Normais ● Sendo que, ○ diz se que uma tabela T está em uma forma normal se atende um conjunto de regras ○ se T está na Forma Normal (FN) i, então T está automaticamente nas FNs i - 1, i - 2, ... ● Do ponto de vista prático ○ A três primeiras (1FN, 2FN e 3FN) são as mais usadas ○ Nem sempre é ideal pois gera uma proliferação de tabelas
  • 7.
    Processo de normalização Modificadode: http://slideplayer.com.br/slide/3121944/ Tabelas (ÑN) 4FN
  • 8.
  • 9.
    Tabela ÑN: entradapara o processo ● Objetivo ○ Obtenção de uma representação padrão para as fontes de dados ● Facilita o processo de normalização ● Forma de representação: Tabela ÑN ○ admite uma ou mais tabelas aninhadas ○ admite atributos multivalorados ● Atributo multivalorado ○ atributo que ao invés de conter um valor único (atômico), contém múltiplos valores
  • 10.
  • 11.
    Representação de umaTabela ÑN ● Projetos (codProj, tipo, descr, (codEmp, nome, categ, sal, dataIni, tempoAloc)) indicam-se as chaves primárias (CPs) de cada tabela (principal e aninhadas)
  • 12.
    1ª Forma Normal(1FN) “Uma tabela está na 1FN sse ela não possui tabelas aninhadas nem atributos multivalorados” ● Solução: gerar uma tabela para cada aninhamento ou atributo multivalorado
  • 13.
    1FN - Aplicação ●ÑN: ○ Projetos (codProj, tipo, descr, (codEmp, nome, categ, sal, dataIni, tempoAloc)) ● 1FN: ○ Projetos (codProj, tipo, descr) ○ Alocações (codProj, codEmp, nome, categ, sal, dataIni, tempoAloc) ● Perguntas: ○ Por que o CP da tabela externa migra para a tabela aninhada? ○ Qual a CP da tabela aninhada? ○ Qual é a cardinalidade do relacionamento entre Projetos e Alocações? (Pode- dados da tabela aninhada na fonte de dados como um todo ou validar com es domínio)
  • 14.
    1FN - Aplicação ●ÑN: ○ Departamentos (codD, nome, (CPF, nome, salário)) ● 1FN: ○ Departamentos (codD, nome) ○ Empregados (codD, CPF, nome, salário) ● Perguntas: ○ Qual é a cardinalidade do relacionamento entre Departamentos e Empregados ?
  • 15.
    Atributo Multivalorado ● ÑN: ○Empresa (codE, nome, localizacoes (1,N)) ● 1FN (nova tabela): ○ Empresa (codE, nome) ○ Localizações (codE, CodL, nome_local) ● 1FN (atributos adicionais): ○ Empresa (codE, nome, local_matriz, filial_1, filial_2)
  • 16.
    1FN – Observação1 ● Análise de CPs na forma ÑN ○ Tabelas em qualquer nível podem não ter atributos que garantam identificação única de suas tuplas ou ter uma CP muito extensa ○ Sugestão: definir uma CP ● ÑN: ○ Projetos (CodProj, Tipo, Descr, (Nome, Cat, Sal, DataIni, TempoAloc)) ● ÑN: ○ Projetos (CodProj, Tipo, Descr, (CodEmp, Nome, Cat, Sal, DataIni, TempoAloc))
  • 17.
    1FN – Observação2 ● Dados irrelevantes na forma ÑN ○ tabelas podem ter atributos que não precisam ser mantidos necessariamente no BD ○ Sugestão: eliminar estes atributos ● ÑN: ○ Projetos (CodProj, Tipo, Descr, NroEmps, DataRel, (CodEmp, Nome, Cat, Sal, DataIni, TempoAloc)) ● ÑN: ○ Projetos (CodProj, Tipo, Descr, (CodEmp, Nome, Cat, Sal, DataIni, TempoAloc)) ● Pergunta: ○ Por que esses atributos são irrelevantes? São sempre irrelevantes?
  • 18.
    Exercício 1 ● Apresentea Tabela ÑN e a 1FN para esta Nota Fiscal
  • 19.
    Dependência Funcional ● Conceitonecessário para o entendimento da 2ª e 3ª formas normais ● Definição ○ Um atributo A2 depende funcionalmente de um atributo A1 (ou um atributo A1 determina um atributo A2 ) quando, em todas linhas da tabela, para cada valor de A1 que aparece na tabela, aparece o mesmo valor de A2
  • 20.
  • 21.
    DF Total eDF Parcial ● DF Total (atributo depende de todos componentes da CP) ○ se um atributo Ax depende funcionalmente de todos os atributos que compõem a CP de uma tabela T, diz-se que Ax possui DF total da CP de T ● DF Parcial (atributo depende de parte dos componentes da CP) ○ se um atributo Ax depende funcionalmente apenas de alguns atributos (não todos!) que compõem a CP de uma tabela T, diz-se que Ax possui DF parcial da CP de T
  • 22.
    2ª Forma Normal(2FN) “Uma tabela está na 2FN sse ela estiver na 1FN e não possuir DFs parciais” ● Solução: tabelas com DFs parciais devem ser desmembradas em tabelas que possuam DFs totais
  • 23.
    2FN – Observação ●Tabelas cuja CP possui apenas um atributo estão automaticamente na 2FN
  • 24.
    2FN - Aplicação ●1FN: ○ Projetos (CodProj, Tipo, Descr) ○ Alocações (CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempoAloc) ● DF: ○ CodEmp → Nome, Cat, Sal (DF Parcial!) ○ (CodProj, CodEmp) → DataIni, TempoAloc ● 2FN ○ Projetos (CodProj, Tipo, Descr) ○ Alocações (CodProj, CodEmp, DataIni, TempoAloc) ○ Empregados (CodEmp, Nome, Cat, Sal)
  • 25.
  • 26.
    3ª Forma Normal(3FN) “Uma tabela está na 3FN sse ela estiver na 2FN e não possuir DFs entre atributos não-chave” ● Solução: tabelas com tais DFs devem ser desmembradas em tabelas que não possuam essas DFs
  • 27.
    3FN – Observação1 ● Tabelas que possuem zero ou apenas um atributo que não faz parte da CP estão automaticamente na 3FN
  • 28.
    3FN - Aplicação ●2FN: ○ Projetos (CodProj, Tipo, Descr) ○ Alocações (CodProj, CodEmp, DataIni, TempoAloc) ○ Empregados (CodEmp, Nome, Cat, Sal) ● DF: ○ Cat → Sal ● 3FN: ○ Projetos (CodProj, Tipo, Descr) ○ Alocações (CodProj, CodEmp, DataIni, TempoAloc) ○ Empregados (CodEmp, Nome, Cat) ○ CategoriasFuncionais(Cat, Sal)
  • 29.
    Exercício Normalizar até a3FN ● ÑN: ○ Estantes (número, capacidade, (ISBN, título, ano (codAutor, nome, nacionalidade)))
  • 30.
    DF Multivalorada Se umatributo Ax1 de T determina um conjunto finito de valores para os outros atributos Ax2 , ..., Axn de T, então diz-se que Ax2 , ..., Axn possuem DF multivalorada de Ax1 em T
  • 31.
    Exemplo: DF Multivalorada ●ÑN: ○ Estantes (número, capacidade, (ISBN, título, ano (codAutor, nome, nacionalidade))) ● 1FN: ○ Estantes (número, capacidade) ○ DistribuiçãoLivros (número, ISBN, título, ano) DistribuiçãoLivrosAutor (número, ISBN, codAutor, nome, nacionalidade) ● 2FN = 3FN: ○ Estantes (número, capacidade) ○ Livros (ISBN, título, ano) ○ DistribuiçãoLivros (número, ISBN) ○ Autores (codAutor, nome, nacionalidade) ○ DistribuiçãoLivrosAutor(número, ISBN, codAutor) relacionamento contido em outra tabela! (pode ser removido)
  • 32.
  • 33.
    4ª Forma Normal(4FN) “Uma tabela está na 4FN sse ela estiver na 3FN e não possuir DFs multivaloradas” ● Solução: tabelas com DFs multivaloradas devem ser desmembradas em tabelas que não possuam tais DFs
  • 34.
    4FN – Observação1 ● Tabelas que possuem CP composta por um ou dois atributos, ou que possuem atributos não-chave estão automaticamente na 4FN
  • 35.
    4FN - Aplicação ●3FN: ○ Estantes (número, capacidade) ○ Livros (ISBN, título, ano) ○ Autores (codAutor, nome, nacionalidade) ○ DistribuiçãoLivrosAutor(número, ISBN, codAutor) ● DFM ○ ISBN ↠ codAutor ● 4FN: ○ Estantes (número, capacidade) ○ Livros (ISBN, título, ano) ○ Autores (codAutor, nome, nacionalidade) ○ DistribuiçãoLivros(número, ISBN) ○ Autoria(ISBN, codAutor)
  • 36.
  • 38.
    Exercício A tabela abaixoestá na 1FN e mostra dados de associados de um clube, incluindo profissão, seus números de celular e as modalidades esportivas que ele pratica no clube. Obtenha a 2FN, 3FN e 4FN AssociadosClube (CPF-associado, nome-associado, ID-profissão, descrição-profissão, número-celular, ID-modalidade, nome-modalidade)
  • 39.