BANCO DE DADOS
Universidade do Estado de Santa Catarina
Centro de Ciências Tecnológicas
Departamento de Ciência da Computação
Prof. Alexandre Veloso de Matos
[email protected]
OBJETIVOS
 Orientações para Projetos de BD;
 Dependências Funcionais (DFs):
 Definição de DF;
 Regras de inferência para DFs.
 Formas Normais:
 Primeira Forma Normal;
 Segunda Forma Normal;
 Terceira Forma Normal.
 Outras Formas Normais.
NORMALIZAÇÃO DE PROJETOS DE BD
 Na prática, a normalização é realizada para obter projetos de alta
qualidade e atender a propriedades que facilitem a execução de
operações de consulta
 No entanto, os projetistas de bancos de dados, em geral, não precisam
normalizar na maior forma normal possível.

Pode-se lançar mão da Desnormalização


Processo de armazenar junções de relações que estejam em forma normal superior.
Servem como uma relação base para facilitar operações com outras relações que estão numa forma
normal inferior.
OUTRAS FORMAS NORMAIS
 Originalmente, Edgar Codd definiu três formas normais:

1FN, 2FN e 3FN (Primeira, Segunda e Terceira Forma Normal),

Mas, hoje existem outras:


Forma Normal de Boyce-Codd (FNBC), Quarta e Quinta Forma Normal
Entretanto, alguns autores sugerem que aplicando as três formas normais básicas
definidas por Codd, o projeto do BD já estará livre de redundâncias e
inconsistências.
FORMA NORMAL DE BOYCE-CODD (FNBC)
 Uma relação R está na FNBC se:


Estiver na 3FN e
Todos os seus atributos são dependentes não-transitivos de uma chave candidata

Ou seja, todo determinante de uma DF é uma chave candidata
FORMA NORMAL DE BOYCE-CODD (FNBC)
 A FNBC é considerada uma forma mais rígida da 3FN, pois trata de um
tipo de atributo não considerado em outras formas normais – a chave
candidata.
 Portanto, é adequado pensar em FNBC quando:



Uma tabela tem várias chaves candidatas
Chaves candidatas são compostas
Chaves candidatas sobrepõem-se
FORMA NORMAL DE BOYCE-CODD (FNBC)
 Exemplo:
nmAluno
nmCurso
nmDocente
João
Banco de Dados
Edgar Codd
Maria
Programação I
Edsger Dijkstra
José
Banco de Dados
Edgar Codd
Maria
Banco de Dados
Edgar Codd
João
Redes de Computadores
Douglas Comer
José
Redes de Computadores
Douglas Comer
{nmAluno, nmCurso}  nmDocente
nmDocente  nmCurso
Não há DF transitiva, mas, há uma DF em que
atributos da chave candidata {nmAluno, nmCurso}
não é o determinante !
FORMA NORMAL DE BOYCE-CODD (FNBC)
 Note-se, portanto, que se:



Temos 2 chaves candidatas: (nmAluno, nmCurso), (nmAluno, nmDocente)
Se a chave primária escolhida for (nmAluno, nmCurso) a tabela está na 3FN
Se a chave primária escolhida for (nmAluno, nmDocente) a tabela está na 3FN

Mas, tem-se uma DF que não possui chave candidata!


nmDocente -> nmCurso
Se uma tabela estiver na FNBC também estará na 3FN, mas não,
necessariamente, o inverso!
FORMA NORMAL DE BOYCE-CODD (FNBC)
 Algumas anomalias podem ser percebidas:
 Por exemplo:


Como se dá a inserção de um novo docente na tabela anterior?
Se Edsger Dijkstra deixa de ser professor é provável que qualquer menção a
Programação I seja perdida.
FORMA NORMAL DE BOYCE-CODD (FNBC)
 A solução pode ser decompor as tabelas, criando-se tabelas que o
mantenham as chaves candidatas de alguma forma isoladas.
Temos 2 chaves candidatas: (nmAluno, nmCurso), (nmAluno, nmDocente)
 Por exemplo:



(nmAluno, nmDocente) e (nmAluno, nmCurso)
Podem gerar anomalias em um join
(nmCurso, nmDocente) e (nmCurso, nmAluno)
(nmDocente, nmCurso) e (nmDocente, nmAluno)
Melhor solução
FORMA NORMAL DE BOYCE-CODD (FNBC)
 Em suma, a melhor alternativa para atingir-se a FNBC é separar em uma
tabela as DFs que violem a FNBC
(nmDocente, nmCurso) e (nmDocente, nmAluno)
Violou a FNBC
Chave candidata escolhida
QUARTA FORMA NORMAL (4FN)
 Uma relação está na 4FN se não ocorrerem dependências
multivaloradas nesta tabela
 Dependência Multivalorada


Um atributo B é multidependente de outro atributo A se um valor de A é
associado a uma coleção de valores de B.
Nesse caso, diz-se que B é multidependente de A (AB)
QUARTA FORMA NORMAL (4FN)
vendedorId
clienteId
nmCliente
nmParente parentesco
vendedorId  {clienteId, nmCliente}
vendedorId  {nmParente, grauParentesco}
Existe uma intrínseca incerteza em como manter as linhas.
Várias abordagens são possíveis e diferentes programadores
podem tomar diferentes caminhos!
QUARTA FORMA NORMAL (4FN)
 Para que uma tabela atinja a 4FN, a abordagem deve seguir:


Para cada grupo de repetição separado, gera-se uma nova relação
correspondente contendo este grupo de repetição e a chave primária da
relação original
Determinar a chave primária da nova relação, a qual será a concatenação da
chave primária da relação original com a chave para o grupo de repetição
Vendedor {vendedorId, nmVendedor}
Vendedor_Cliente {vendedorId, clienteId, nmCliente}
Vendedor_Parente {vendedorId, nmParente, parentesco)
QUARTA FORMA NORMAL (4FN)
 Se uma relação está na 4FN então necessariamente está na FNBC
 É uma forma normal geralmente tratada como uma abordagem
excepcional (pois, depende de um projeto top-down)
QUINTA FORMA NORMAL (5FN)
 É também conhecida como Forma Normal de Projeção /Junção – FNPJ
 Definições:
X

Uma relação não estará na 5FN se for possível construir tuplas inconsistentes a
partir de tuplas menores


Uma relação está na 5FN se para toda a dependência que se verifique na
tabela, esta dependência é baseada em chaves
Uma relação está na 5FN se estiver na 4NF e as relações não puderem ser
decompostas em relações mais simples sem perda de informação

QUINTA FORMA NORMAL (5FN)
 Exemplo:
nmVendedor
João
João
nmEmpresa
Samsumg
Apple
Produto
Galaxy Tab
Ipad
Nunca deveria ser possível que:
 João venda Ipads da Samsumg
 João venda Galaxy Tabs da Apple
Então, há combinações menores que podem ser inconsistentes!
QUINTA FORMA NORMAL (5FN)
 Podemos reconstruir todos os fatos verdadeiros em 3 tabelas em vez de
1:
nmVendedor nmEmpresa
João
Samsumg
João
Apple
nmVendedor
Produto
João
Galaxy Tab
João
Ipad
nmEmpresa
Produto
Samsumg
Apple
Galaxy Tab
Ipad
QUINTA FORMA NORMAL (5FN)
 Algumas conclusões:

Os fatos tendem a ser registrados várias vezes em uma tabela que não está na
5FN.
O tamanho de uma tabela que fere a 5FN aumenta em progressão geométrica,
enquanto as tabelas normalizadas crescem em progressão aritmética.


Logo, é mais fácil escrever as regras de negócio a partir da 5FN
BIBLIOGRAFIA
 ELMASRI, R. E.; NAVATHE S. Sistemas de Banco de Dados. 4ª Ed., São
Paulo: Pearson Prentice Hall, 2005. Capítulo 10.
EXERCÍCIO DE FIXAÇÃO
 Considere a seguinte tabela não normalizada. Proponha um conjunto de
tabelas que esteja na 3FN.

Notas_Fiscais (Num. NF, Série, Data emissão, Cod. do Cliente, Nome do cliente,
Endereço do cliente, CGC do cliente, Relação das mercadorias vendidas e Total
Geral da Nota)
* (considere que para cada mercadoria temos: Código da Mercadoria, Descrição da
Mercadoria, Quantidade vendida, Preço de venda e Total da venda desta mercadoria)
Download

Banco de Dados