Prévia do material em texto
Arq. E Ger. De Banco de Dados
Aula 02 – Normalização
Adaptado de Haroldo Amaral (UPE)
igor@ifalpalmeira.edu.br
https://Sites.google.com/site/professorigorrocha
1
Aula 02 – Normalização
Normalização
Formas Normais
2
Normalização
3
Baseado no conceito de FORMA NORMAL
Um forma normal é uma regra que deve ser obedecida
por uma tabela para que ela seja considerada “bem
projetada”
Uma vez definido o esquema relacional de um BD, passa-
se ao processo de NORMALIZAÇÃO
Normalização
4
Técnica para eliminação de redundâncias de dados em
esquemas relacionais
Ou seja, método que permite identificar a existência de
problemas potenciais no projeto de um BD relacional
Converte, progressivamente, uma tabela em tabelas de grau e
cardinalidade menores até que pouca ou nenhuma redundância
de dados exista
Se a normalização for bem sucedida
O espaço de armazenamento dos dados diminui
A tabela pode ser atualizada com maior eficiência
A descrição do BD será imediata
Normalização
5
Formas normais:
• Primeira Forma Normal (1FN)
• Segunda Forma Normal (2FN)
• Terceira Forma Normal (3FN
• Forma Normal de Boyce-Codd (BCNF)
• Quarta Forma Normal (4FN)
• Quinta Forma Normal (5FN)
Primeira Forma Normal (1FN)
6
Primeiro passo do processo de normalização
A passagem à 1FN consiste na eliminação de tabelas
aninhadas, eventualmente, existentes
Eliminação de atributos compostos, multivalorados ou a
combinação de ambos
O domínio de um atributo deve incluir apenas valores
atômicos (indivisíveis)
Além disso, o valor de qualquer atributo deve ser um único
valor do domínio desse atributo
Portanto, a 1FN reprova ter um conjunto de valores, uma
tupla de valores ou uma combinação de ambos como
valor de atributo para uma única tupla
Primeira Forma Normal (1FN)
7
Em outras palavras, a 1FN reprova relações dentro de
relações ou relações como valores de atributo dentro de
tuplas
Tabelas aninhadas
Primeira Forma Normal (1FN)
8
Por exemplo:
Tabela aninhada
Primeira Forma Normal (1FN)
9
1ª Alternativa – Construir uma única tabela com
redundância de dados
Cria-se uma tabela na qual os dados das linhas externas à
tabela aninhada são repetidos para cada linha da tabela
aninhada
Para o exemplo anterior:
Nesta tabela, os dados do projeto aparecem repetidos para cada linha
da tabela de empregados
Primeira Forma Normal (1FN)
10
2ª Alternativa – Construir uma tabela para cada tabela
aninhada
Cria-se uma tabela referente à própria tabela que está sendo
normalizada e uma tabela para cada tabela aninhada
Para o exemplo anterior:
Primeira Forma Normal (1FN)
11
Das duas alternativas:
A primeira é menos recomendada pelas redundâncias que
podem ser geradas
A segunda alternativa deixa mais claro o modelo e de mais fácil
visualização
Primeira Forma Normal (1FN)
12
A passagem à 1FN, pela decomposição de tabelas, é feita
nos seguintes passos:
1. É criada uma tabela na 1FN referente à tabela não
normalizada e que contém apenas as colunas com valores
atômicos, ou seja, sem tabelas aninhadas
A chave primária da tabela na 1FN é idêntica a chave da tabela não
normalizada
2. Para cada tabela aninhada, é criada uma tabela na 1FN
composta pelas seguintes colunas:
A chave primária de cada uma das tabelas na qual a tabela em
questão está aninhada
As colunas da própria tabela aninhada
3. São definidas as chaves primárias das tabelas na 1FN que
correspondem a tabelas aninhadas
Primeira Forma Normal (1FN)
13
De acordo com o exemplo, o esquema da relação:
Após a aplicação da 1FN:
Primeira Forma Normal (1FN)
14
E se as tabelas não normalizadas fossem essas, como
ficaria a normalização?
Primeira Forma Normal (1FN)
15
E se as tabelas não normalizadas fossem essas agora,
como ficaria a normalização?
Como um candidato só pode fazer somente um curso, não
precisa compor a chave primária de Candidatos com a
coluna Cod-Curso
Dependência Funcional
16
Para entender as próximas formas normais – 2FN e 3FN
– é necessário compreender o conceito de
DEPENDÊNCIA FUNCIONAL
Numa tabela, diz-se que uma coluna C2 DEPENDE
FUNCIONALMENTE de uma coluna C1 quando, em
todas as linhas da tabela, para cada valor de C1 que
aparece, aparecer o mesmo valor de C2
Dependência Funcional
17
Por exemplo:
A coluna Salário depende funcionalmente da coluna Código
Dependência Funcional
18
De forma geral, o
determinante de uma
dependência funcional
pode ser um conjunto de
colunas e não somente
uma coluna, como no
exemplo anterior
Segunda Forma Normal (2FN)
19
Uma tabela encontra-se na 2FN quando, além de
encontrar-se na 1FN, cada coluna não chave depende da
chave primária completa
Assim, uma tabela que não se encontra na 2FN contém
DEPENDÊNCIAS FUNCIONAIS PARCIAIS
Contém colunas não chave que dependem apenas de uma
parte da chave primária
Segunda Forma Normal (2FN)
20
Portanto, um esquema de relação R está em 2FN se cada
atributo não principal A em R for total e funcionalmente
dependente da chave primária de R
Segunda Forma Normal (2FN)
21
Por exemplo, a tabela abaixo encontra-se na 2FN?
Encontra-se na 1FN
Não existe dependência parcial
Todos os campos não chaves dependem totalmente da chave
primária
Portanto, a tabela Proj encontra-se na 2FN
Segunda Forma Normal (2FN)
22
Por exemplo, considerando a tabela Proj, a tabela abaixo
encontra-se na 2FN?
Segunda Forma Normal (2FN)
23
Existem dependências parciais
As colunas Nome, Cat e Sal dependem apenas da coluna
CodEmp
Por sua vez, as colunas DataIni e TempAl dependem da
chave completa
Assim, não são dependentes parciais
Portanto, a tabela ProjEmp não se encontra na 2FN
Segunda Forma Normal (2FN)
24
No exemplo:
Segunda Forma Normal (2FN)
25
Para passar a 2FN, ou seja, eliminar as dependências
parciais é necessário dividir a tabela ProjEmp em duas
tabelas, conforme esquema abaixo:
Assim, o esquema relacional total ficará como segue:
Segunda Forma Normal (2FN)
26
No exemplo:
Segunda Forma Normal (2FN)
27
Segunda Forma Normal (2FN)
28
De forma mais precisa, o processo de passagem da 1FN à
2FN é descrito como segue:
1. Copiar para a 2FN cada tabela que tenha chave primária
simples ou que não tenha colunas além da chave
2. Para cada tabela com chaves primárias compostas e com pelo
menos uma coluna não chave:
a) Criar, na 2FN, uma tabela com as chaves primárias da tabela na 1FN
b) Para cada coluna não chave, fazer a seguinte pergunta: “a coluna
depende de toda a chave ou de apenas parte dela?”
Caso a coluna dependa de toda a chave, criar a coluna correspondente
na tabela com a chave completa na 2FN
Caso a coluna dependa apenas de parte da chave:
i. Criar, caso ainda não exista, uma tabela na 2FN que tenha como chave
primária a parte da chave que é determinante da coluna em questão
ii. Criar a coluna dependente dentro da tabela na 2FN
Terceira Forma Norma (3FN)
29
Uma dependência funcional transitiva acontece quando
uma colunanão chave primária depende funcionalmente
de outra coluna (ou combinação de colunas) não chave
primária
Uma tabela encontra-se na 3FN quando, além de estar na
2FN, toda coluna não chave depende diretamente da
chave primária
Quando não há dependências funcionais transitivas (ou
indiretas)
Terceira Forma Norma (3FN)
30
Portanto, um esquema de relação R está na 3FN se ele
satisfizer a 2FN e nenhum atributo não principal de R for
transitivamente dependente da chave primária
A passagem à 3FN consiste em dividir tabelas de forma a
eliminar dependências transitivas
Terceira Forma Norma (3FN)
31
Por exemplo, qual a dependência transitiva da tabela
abaixo, ou seja, que informação está representada de
forma redundante?
Terceira Forma Norma (3FN)
32
Vamos supor que o salário de um empregado dependa da sua
categoria
Nesse caso, a informação de que salário é pago por categoria
está representada de forma redundante
Terceira Forma Norma (3FN)
33
No exemplo:
Terceira Forma Norma (3FN)
34
Passagem à 3FN:
Terceira Forma Norma (3FN)
35
Terceira Forma Norma (3FN)
36
Terceira Forma Normal (3FN)
37
De forma mais precisa, o processo de passagem da 2FN à 3FN
é descrito como segue:
1. Copiar para o esquema na 3FN cada tabela que tenha menos que
duas colunas não-chave, pois nesse caso não há como haver
dependências transitivas
2. Para tabelas com duas ou mais colunas não-chave:
a) Criar uma tabela no esquema da 3FN com a chave primária da tabela
em questão
b) Para cada coluna não-chave fazer a seguinte pergunta: “a coluna
depende de alguma outra coluna não-chave (dependência transitiva ou
indireta)?”
Caso a coluna dependa apenas da chave:
I. Copiar a coluna para a tabela na 3FN
Caso a coluna dependa de outra coluna:
i. Criar, caso ainda não exista, uma tabela no esquema na 3FN que tenha como chave
primária a coluna da qual há a dependência indireta
ii. Copiar a coluna dependente para a tabela criada
iii. A coluna determinante deve permanecer também na tabela original
As Outras Formas Normais
38
Para a maioria dos projetos de bancos de dados, a
decomposição até a 3FN é suficiente para obter o
esquema de um banco de dados com qualidade
No máximo, a BCNF é executada
Forma Normal de Boyce-Codd (BCNF)
39
Foi proposta como uma forma mais simples que a 3FN,
mas é considerada mais rígida
Ou seja, toda relação na BCNF está na 3FN, porém uma
relação na 3FN não está necessariamente na BCNF
A 3FN não tratou satisfatoriamente casos onde uma
relação tem mais de uma chave candidata
Essas chaves são compostas e possuem atributos em comum
Assim, uma relação está em BCNF se todo determinante
for uma chave candidata
Forma Normal de Boyce-Codd (BCNF)
40
Exemplo:
Seja ENSINO(Estudante, Disciplina,
Professor) uma relação com o seguinte significado:
Para cada disciplina, cada estudante recebe aula de apenas um
professor
Cada professor ensina somente uma disciplina
Uma disciplina pode ser ensinada por diversos professores
Forma Normal de Boyce-Codd (BCNF)
41
Chaves candidatas
{Estudante, Disciplina}
{Estudante, Professor}
Dependências funcionais
(Estudante, Disciplina)
Professor
Professor Disciplina
Se a chave primária for (Estudante, Disciplina) ou
(Estudante, Professor), a relação está na 3FN
Porém, em ambos os casos a relação não está em BCNF
porque o determinante Professor não é uma chave
candidata
Forma Normal de Boyce-Codd (BCNF)
42
Processo para obtenção da BCNF
1. Identificar as dependências funcionais que violem a BCNF
2. Para cada dependência funcional achada em 1, criar uma
relação com a chave primária igual ao determinante
3. As colunas que têm seu valor determinado em 1 são
excluídas da relação original
Forma Normal de Boyce-Codd (BCNF)
43
Para o exemplo anterior, após a aplicação da BCNF
Quarta Forma Normal (4FN)
44
Para explicar a 4FN , consideremos o seguinte
relacionamento
Quarta Forma Normal (4FN)
45
De acordo com o exemplo, o relacionamento
UTILIZACAO indica que deseja-se manter a informação
de qual empregado usa qual equipamento em qual projeto
Assim, de acordo com as regras de mapeamento, quatro
relações serão geradas:
PROJETO(CodProj, NomeProj)
EQUIPAMENTO(CodEquip, NomeEquip)
EMPREGADO(CodEmp, NomeEmp)
UTILIZACAO(CodProj, CodEmp, CodEquip)
Quarta Forma Normal (4FN)
46
De acordo com o esquema
gerado, uma tabela que
implemente o
relacionamento
UTILIZACAO pode conter
redundâncias
A informação de que os
empregados {“1”, “2”, “3”}
trabalham no projeto “1” está
representada duas vezes
A informação de quais
equipamentos são usados em
um projeto está armazenada
redundantemente
Quarta Forma Normal (4FN)
47
Para evitar esse tipo de redundância de dados, é
necessário considerar uma forma normal (4FN), que se
baseia no conceito de DEPENDÊNCIA FUNCIONAL
MULTIVALORADA
Uma coluna ou conjunto de colunas depende
multivaloradamente de uma coluna (determinante), da
mesma tabela, quando um valor do atributo determinante
identifica repetidas vezes um conjunto de valores na
coluna dependente
Quarta Forma Normal (4FN)
48
No exemplo:
A coluna CodEmp depende multivaloradamente da coluna
CodProj, já que um valor de CodProj determina múltiplas
vezes um conjunto de valores de CodEmp
Assim, a tabela UTILIZACAO contém as seguintes
dependências funcionais multivaloradas:
CodProj CodEmp
CodProj CodEquip
Quarta Forma Normal (4FN)
49
Assim, uma tabela está na 4FN caso, além de estar na
3FN, não possua dependências funcionais multivaloradas
Portanto, a tabela UTILIZACAO deve ser decomposta
em duas tabelas:
ProjEmp(CodProj, CodEmp)
ProjEquip(CodProj, CodEquip)
Quarta Forma Normal (4FN)
50
Essas tabelas correspondem à implementação de dois
relacionamentos binários e duas tabelas implementam
esses relacionamentos
Quinta Forma Normal (5FN)
51
Uma relação de 4FN estará em 5FN quando o seu
conteúdo não puder ser reconstruído (existe perda de
informação) a partir das diversas relações menores que
não possuam a mesma chave primária
Essa forma normal trata especificamente dos casos de
perda de informação, quando da decomposição de
relacionamentos múltiplos
Quinta Forma Normal (5FN)
52
A 5FN trata de casos bastante particulares, que ocorrem
na modelagem de dados, que são relacionamentos
múltiplos (ternários, quaternários, e n-ários)
Ela fala que um registro está na sua 5FN, quando o
conteúdo desse mesmo registro não puder ser
reconstruído (junção) a partir de outros registros
menores, extraídos desse registro principal
Ou seja, ao se particionar um registro, e sua junção posterior
não conseguir recuperar as informações contidas no registro
original, então esse registro está na 5FN
Referências Usadas
53
Livros
Navathe, Shamkant B. e Elmasri, Ramez E. Sistemas
de Banco de Dados. Addison Wesley. 6a Edição,
2011
Silberschatz, Abraham; Korth, Henry F. e Sudarshan S.
Sistema de Banco de Dados. Elsevier. 5a Edição,
2006
Heuser, Carlos Alberto. Projeto de Banco de
Dados. Bookman. 6a Edição, 2009