O documento fornece diretrizes para projeto de bancos de dados relacionais, incluindo: (1) evitar anomalias de dados e garantir que atualizações funcionem corretamente, (2) projetar esquemas para evitar tuplas espúrias, e (3) seguir as formas normais para assegurar dependências funcionais corretas.
2. Guidelines para Projeto de Bancos
de Dados Relacionais
• Projete um esquema de relação de forma que seja fácil
explicar seu significado. Não combine atributos de múltiplos
tipos de entidades e relacionamentos numa única relação.
• Evite anomalias de inserção, exclusão ou de modificação
não sejam possíveis. Caso não seja possível evitá-las,
assegure-se que os programas que atualizam o banco de
dados vão funcionar corretamente.
• Tanto quanto possível, evita colocar atributos numa relação
cujos valores possam ser frequentemente valores nulos.
• Projete esquemas de relações de modo que elas possam
ser juntadas com condições de junção de igualdade sobre
atributos que sejam chaves primárias ou chaves
estrangeiras, de forma que tuplas espúrias não sejam
geradas.
3. Primeira Forma Normal (1NF)
• É parte da definição formal de uma
relação; foi definida para não permitir
atributos multivalorados, atributos
compostos e suas combinações.
• Uma relação está em 1FN se e somente
se todos os seus atributos contêm
apenas valores atômicos (simples,
indivisíveis).
4. Segunda Forma Normal (2NF)
• Uma relação está em 2NF se e somente
se estiver em 1NF e todo atributo não-
primo (isto é, que não seja membro de
uma chave) for totalmente dependente
de qualquer chave.
5. Terceira Forma Normal (3NF)
• Uma relação está em 3NF se e somente se
estiver em 2NF e nenhum atributo não-
primo (isto é, que não seja membro de uma
chave) for transitivamente dependente da
chave primária.
• Em outras palavras, para toda FD X -> A,
uma das duas condições seguintes devem
valer:
– X é uma superchave ou
– A é membro de uma chave candidata
6. Algoritmo para decomposição em 3NF
(preservando as dependências e sem
perdas na junção)
• Entrada: Esquema de relação R e
dependências F.
• Saída: Uma decomposição D de R tal
que D tem junção sem perdas, as
dependências de R são preservadas, e
todas as relações de D estão em 3NF.
7. Algoritmo para decomposição em
3NF
• 1. Encontre a cobertura mínima G para F;
• 2. Para cada X do lado esquerdo de uma FD em
G, crie um esquema de relação {XA1... An} em
D, onde X A1, ..., X An são todas as FDs
em G com X do lado esquerdo.
• 3. Coloque todos os atributos restantes em uma
única relação.
• 4. Se uma chave de R não está contida em
nenhum dos esquemas de relação, crie uma
relação que contenha os atributos da chave.
8. Cobertura Mínima de FDs
• Um conjunto de FDs F é mínimo se satisfaz as
seguintes condições:
– Todas as FDs em F tem um único atributo do lado
direito.
– Não se pode remover uma FD de F e ainda ter um
conjunto de FDs que é equivalente a F.
– Não se pode substituir uma FD X A em F por Y A,
onde Y X e ainda ter um conjunto de FDs que é
equivalente a F.
• Obs: Podem existir várias coberturas (fecho) mínimo
para um conjunto de FDs F. Não existe algoritmo
simples para determinar uma cobertura mínima.
9. Algoritmo para Determinar a
Cobertura Mínima para F
• Passo 1
– Obtenha o conjunto equivalente H com somente um atributo
do lado direito
• Passo 2
– Remova as FDs redundantes em H
• Passo 3
– Remova atributos redundantes no lado esquerdo das FDs (é
possível chegar ao atributo do lado direito, sem alguns dos
atributos do lado esquerdo?)
• Passo 4
– Junte todas as FDs que tem o mesmo lado esquerdo
10. BCNF
• Uma relação esquema R está na BCNF
se, sempre que houver uma DF X -> A
em R, então X é uma superchave de R.
• Diferença:
– Condição que permite que A seja principal
(parte da chave) está ausente da FNBC
• A maioria dos esquemas de relação que
estão na 3FN também estão na FNBC
11. Decomposição em BCNF
• Escolher uma das dependências que viola
BCNF no conjunto R para decompor R;
– decompor R em R1 e R2, tendo R1 todos os
atributos da dependência funcional escolhida, e
R2 todos os atributos de R exceto Y (em X ->
Y);
– repetir os passos anteriores para o conjunto R2;
– repetir os passos 1 e 2 para o conjunto Ri;
– parar quando não houver mais dependências
que viole BCNF em qualquer subconjunto Ri.
13. Pois que aproveita ao homem ganhar o
mundo inteiro, se perder a sua alma?
Ou que dará o homem em recompensa
da sua alma?
Mateus 16.26
Até a próxima aula!