Aula 13 300311 Normalizacao (1)
53 pág.

Aula 13 300311 Normalizacao (1)

Disciplina:Informática8.662 materiais41.940 seguidores
Pré-visualização2 páginas
Banco de Dados
Haroldo Amaral (haroldo.amaral@gmail.com)
Licenciatura em Computação – 5º Período
30/03/2011
Aula 13 – Normalização
Normalização
Formas Normais
30/03/2011
Banco de Dados
2
Normalização
30/03/2011
Banco de Dados
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
30/03/2011
Banco de Dados
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
30/03/2011
Banco de Dados
5
Primeira Forma Normal (1FN)
30/03/2011
Banco de Dados
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)
30/03/2011
Banco de Dados
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)
30/03/2011
Banco de Dados
8
Por exemplo:

Tabela aninhada

Primeira Forma Normal (1FN)
30/03/2011
Banco de Dados
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)
30/03/2011
Banco de Dados
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)
30/03/2011
Banco de Dados
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)
30/03/2011
Banco de Dados
12
A passagem à 1FN, pela decomposição de tabelas, é feita nos seguintes passos:
É 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
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
São definidas as chaves primárias das tabelas na 1FN que correspondem a tabelas aninhadas
Primeira Forma Normal (1FN)
30/03/2011
Banco de Dados
13
De acordo com o exemplo, o esquema da relação:

Após a aplicação da 1FN:

Primeira Forma Normal (1FN)
30/03/2011
Banco de Dados
14
E se as tabelas não normalizadas fossem essas, como ficaria a normalização?

Primeira Forma Normal (1FN)
30/03/2011
Banco de Dados
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
30/03/2011
Banco de Dados
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
30/03/2011
Banco de Dados
17
Por exemplo:

A coluna Salário depende funcionalmente da coluna Código
Dependência Funcional
30/03/2011
Banco de Dados
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)
30/03/2011
Banco de Dados
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)
30/03/2011
Banco de Dados
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)
30/03/2011
Banco de Dados
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)
30/03/2011
Banco de Dados
22
Por exemplo, considerando a tabela Proj, a tabela abaixo encontra-se na 2FN?

Segunda Forma Normal (2FN)
30/03/2011
Banco de Dados
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)
30/03/2011
Banco de Dados
24
No exemplo:

Segunda Forma Normal (2FN)
30/03/2011
Banco de Dados
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)
30/03/2011
Banco de Dados
26
No exemplo:

Segunda Forma Normal (2FN)
30/03/2011
Banco de Dados
27

Segunda Forma Normal (2FN)
30/03/2011
Banco de Dados
28
De forma mais precisa, o processo de passagem da 1FN à 2FN é descrito como segue:
Copiar para a 2FN cada tabela que tenha chave primária simples ou que não tenha colunas além da chave
Para cada tabela com chaves primárias compostas e com pelo menos uma coluna não chave:
Criar, na 2FN, uma tabela com as chaves primárias da tabela na 1FN
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:
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
Criar a coluna dependente dentro da tabela na 2FN
Terceira Forma Norma (3FN)
30/03/2011
Banco de Dados
29
Uma dependência funcional transitiva acontece quando uma coluna nã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/03/2011
Banco de Dados
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