Sumário



Projecto de bases de dados relacionais
Conceitos básicos
Metodologia de normalização
Gabriel David
FEUP - Rua Dr. Roberto Frias, 4200-465 Porto - PORTUGAL
Tel. 351-225081408 - Fax: 351-225081440
Email: [email protected]
URL: http://www.fe.up.pt
1
Projecto de BD relacionais
Esquema da BD =
esquemas das relações + regras de integridade



Identificar os elementos de informação relevantes,
os atributos
Como organizar os atributos em tabelas?
Optar entre vários esquemas alternativos


critérios de comparação
Noções úteis também para BDOO e grandes
aplicações tradicionais
Projecto de BD - 2
BD Coop

Esquema



Sócios( nome, endereço, balanço )
Encomendas( nome, produto, quant )
Fornecedores( empresa, morada, produto, preço )
Sócios
nome
João
Pedro
Antónia
Jaime
endereço
balanço
Boavista, 45 530
Galvão, 61
200
Constituição, 5 -47
Breyner, 95
0
Encomendas
nome produto
João
farinha
João
bolacha
Antónia farinha
Pedro batata
quant
5
10
3
8
Projecto de BD - 3
Defeitos do esquema

Redundância

Fornecedores
empresa morada
Agro
Massarelos, 80
Agro
Massarelos, 80
Agro
Massarelos, 80
Alimentar Industrial, 2
Alimentar Industrial, 2
Alimentar Industrial, 2
Nutriente Lordelo, 509
Nutriente Lordelo, 509
Nutriente Lordelo, 509
produto preço
farinha
129
batata
89
bacalhau
540
massa
70
feijão
80
bolacha
125
batata
79
massa
79
bacalhau
570

anomalias de actualização


valores nulos, chave?
anomalias de apagamento


inconsistência
anomalias de inserção


mesmo facto, vários registos
dois factos, mesmo registo
Vantagem


dispensa a junção, eficiência
segurança vs. eficiência
Projecto de BD - 4
Esquema alternativo
Forn
empresa
Agro
Alimentar
Nutriente
Prod
empresa
Agro
Agro
Agro
Alimentar
Alimentar
Alimentar
Nutriente
Nutriente
Nutriente

morada
Massarelos, 80
Industrial, 2
Lordelo, 509
produto preço
farinha
129
batata
89
bacalhau
540
massa
70
feijão
80
bolacha
125
batata
79
massa
79
bacalhau
570



Sócios( nome, endereço, balanço )
Encomendas(nome, produto, quant)
Forn ( empresa, morada )
Prod( empresa, produto, preço )

sem deficiências
um facto, um registo

junção recupera Fornecedores



maior esforço computacional
conjuntos de dados menores
Projecto de BD - 5
Restrições de integridade

Relações representam classes e associações


não basta garantir que possuem a aridade correcta e a
compatibilidade de certos domínios
Mais informação no modelo

restrições de semântica dos elementos do domínio
• validações

restrições de igualdade ou desigualdade
• interesse para o projecto

se BI1=BI2 implica nome1=nome2


nome= f( BI )
BI  nome
BI1
nome1
BI2
nome2
[nome depende funcionalmente de BI]
[BI determina funcionalmente nome]
Projecto de BD - 6
Dependência funcional



R( A1, A2, …, An )
X = AX1 AX2 …
Y = AY1 AY2 …
AXi, AYi  A1 … An
Se X  Y então dois tuplos Ta e Tb em
que Xa=Xb terão que satisfazer Ya=Yb

Caso contrário a BD está num estado inconsistente,
por violar a dependência funcional X  Y
Projecto de BD - 7
No exemplo Fornecedores

Dependências no modelo declaradas pelo
projectista



empresa  morada
empresa produto  preço
significam que uma empresa só tem uma morada e que
uma empresa tem um só preço para cada produto
No 1º esquema é fácil violar a primeira
dependência, por inserção ou actualização, devido
à redundância
No 2º esquema só existe uma morada, pelo que
não pode haver inconsistência (quando muito
incorrecção se a morada estiver errada)
Projecto de BD - 8
De onde vêm as dependências

Chave


uma chave determina qualquer subconjunto de atributos
da relação
R( A, B, C, D, E )
A
A
B
D
D
• ABA
• ABCD
• ABBDE

Associação muitos-um

R( A1, A2, B, C, D1, D2, E )
1
2
Entidade 1
1
Ass
2
Entidade 2
C
• A1 A2  D1 D2 e como D1 D2 é chave da Entidade 2
• A1 A2  A1 A2 ... C ... E
• D1 D2  A1 A2

Cabe ao projectista decidir quais as chaves que existem
Projecto de BD - 9
E
Dependências implícitas


R( A, B, C )
(F: dependências sobre a relação R)
F= {A  B, B  C} implica A  C
F+= {A  A, A B  A,
A  B,
A B  B,
A  B,
A B  C,
A  A B, A B  A B,
A  A C, A B  A C,
A  B C, A B  B C,
A  A B C, A B  A B C,
A  ,
A B  ,
B  B,
B C  B,
B  B C, B C  B C,
C  ,
B C  

A C  A,
A C  B,
A C  C,
A C  A B,
A C  A C,
A C  B C,
A C  A B C,
A C  ,
B  C,
B  ,
A B C  A,
A B C  B,
A B C  C,
A B C  A B,
A B C  A C,
A B C  B C,
A B C  A B C,
A B C  ,
B C  C,
B C  ,
Dependências dadas, triviais, derivadas
Projecto de BD - 10
Fecho de um conjunto de dependências
F+ (fecho de F) é o conjunto de todas as
dependências implicadas logicamente por F

Axiomas de Armstrong






Reflexividade (triviais)
Aumento
Transitividade
Reunião
Pseudotransitividade
Decomposição
YXU
XY
X  Y e Z  U  XZ  YZ
XYeYZ XZ
X  Y e X  Z  X  YZ
X  Y e WY  Z  X W  Z
XYeZY XZ
Projecto de BD - 11
Dependência derivada

Cálculo de uma dependência derivada, a partir das
dependências dadas e das regras de cálculo
1 (dada)
F_nome Produto  Preço
2 (dada)
F_nome  F_endereço
3 (2 + aumento)
F_nome Produto  F_endereço Produto
4 (3 + decomposição) F_nome Produto  F_endereço
5 (4+1+reunião)
F_nome Produto  F_endereço Preço
Projecto de BD - 12
Chave de uma relação

Dados uma relação R( A1, A2, ..., An ) e um
conjunto de dependências funcionais F

X, subconjunto de A1, A2, ..., An é chave se
1. X  A1, A2, ..., An pertence a F+
2. Não se verifica Y  A1, A2, ..., An pertencer a F+, com
Y X.
 A chave determina todos os atributos e é mínima.
Projecto de BD - 13
Exemplo das moradas






Morada( cidade, rua, cod )
F = { cidade rua  cod, cod  cidade }
cidade rua  cidade rua cod
rua cod  cidade rua cod
Só rua, só cod ou só cidade não determinam
todos os atributos e portanto não são chaves
{cidade rua} e {rua cod} são chaves alternativas,
uma das quais pode ser escolhida para chave
primária
Projecto de BD - 14
Fecho de um conjunto de atributos

Problema: algoritmo de cálculo de F+ (todas as
dependências) é de ordem exponencial


não praticável para casos de dimensão realista
(X: conjunto de atributos)
X+ (fecho de X) é o conjunto de todos os
atributos funcionalmente dependentes de X


Solução: X  Y pertence a F+ sse Y  X+
Algoritmo de cálculo de X+, relativamente a F
1.
2.
3.
X(0) = X
X(i+1) = X(i)  {A | Y  Z  F, Y  X(i), A  Z}
X+ = X(i), se X(i+1) = X(i)
Projecto de BD - 15
Exemplo de cálculo de X+



R(A, B, C, D, E, F)
F= {AB  C
F  ED
CA
BE  C
BC  F
CD  BF
ACF  B
CE  AD }
Calcular o fecho de X = BF





X(0)= BF
X(1)= BDEF
X(2)= BCDEF
X(3)= ABCDEF = X+ = U
B+= B
F+= DEF  U
Logo, X= BF é chave
Projecto de BD - 16
Conjuntos de dependências


F e G – conjuntos de dependências
dois conjuntos são equivalentes se os respectivos
fechos forem iguais
F  G sse F+ = G+

Método de teste

Para cada Y  Z  F testar se Y  Z  G+
• Calcular Y+|G
• Verificar se Z  Y+

Vice-versa, para as dependências em G.
Projecto de BD - 17
Forma minimal

Conjunto de dependências F numa forma minimal
1.
2.
3.
Membro direito das dependências tem só 1 atributo
Não existe X  A  F tal que F \ {X  A}  F
Não existe X  A  F e Z  X
tal que F \ {X  A}  {Z  A}  F
•
•

(2) impede redundância nas dependências
(3) impede redundância nos atributos de uma dependência
Entre os conjuntos de dependências equivalentes a F


existe sempre pelo menos um que é minimal, isto é, que
não se pode simplificar mais;
mas pode existir mais do que um minimal, pelo que não se
define o mínimo.
Projecto de BD - 18
Determinação de forma minimal

Determine uma forma minimal de F (pág. 16)





Decompor as dependências com membro direito composto
F= {
AB  C
FE
CD  B
CA
FD
CD  F
BC  F
BE  C
CE  A
ACF  B
CE  D }
Eliminar CE  A (implicada por C  A)
Eliminar A em ACF  B (porque B  CF+|F)
a) eliminar CD  B (porque B  CD+|F’) ou
b) eliminar CF  B (porque B  CF+|F’’) e CD  F (F 
CD+|F’’)
Projecto de BD - 19
Duas formas minimais

F’= {
AB  C
CA
BC  F
CF  B
FE
FD
BE  C
AB  C
CA
BC  F
FE
FD
BE  C
CD  F
CE  D
}

F’’= {
CD  B
CE  D
}

Neste caso, as duas formas minimais têm um número
diferente de elementos
Projecto de BD - 20
Decomposição

Decomposição de R em R1 e R2



R1 e R2 obtêm-se de R por projecção e substituem-na
todos os atributos de R se encontram em R1 ou R2
Para recuperar R, faz-se a junção natural de R1 e R2
Decomposição sem perdas se
R = R1(R) ⋈ R2(R)

Fornecedores = FORN ⋈ PROD




Fornecedores ( empresa, morada, produto, preço )
Forn ( empresa, morada )
Prod ( empresa, produto, preço )
(ver pág. 3 e 4)
Projecto de BD - 21
Decomposição com perdas
FornProd
empresa
Agro
Agro
Agro
Alimentar
Alimentar
Alimentar
Nutriente
Nutriente
Nutriente
produto
farinha
batata
bacalhau
massa
feijão
bolacha
batata
massa
bacalhau
MoraProd
morada
Massarelos, 80
Massarelos, 80
Massarelos, 80
Industrial, 2
Industrial, 2
Industrial, 2
Lordelo, 509
Lordelo, 509
Lordelo, 509
FornProd ⋈ MoraProd  Fornecedores
empresa morada
produto preço
Agro
Massarelos, 80 farinha
129
Agro
Massarelos, 80 batata
89
Agro
Lordelo, 509
batata
79
…
Nutriente Massarelos, 80 batata
89
Nutriente Lordelo, 509
batata
79
...
produto preço
farinha
129
batata
89
bacalhau 540
massa
70
feijão
80
bolacha
125
batata
79
massa
79
bacalhau 570


Excesso de
linhas
Perda de
informação
Projecto de BD - 22
Decomposição sem perdas

Algoritmo de teste


R(A1, …, An), F
(R1, …, Rk)
relação inicial, dependências
decomposição
1. Construir uma tabela k  n


coluna j  atributo Aj
linha i  relação Ri
2. xij = aj
se Aj em Ri
xij = bij
c.c.
3. Iterativamente, para cada XY em F, forçar linhas
que coincidam em X a coincidir em Y

mesmo aj ou, se não houver, mesmo bij
4. Decomposição é sem perdas se, no fim, houver
uma linha só com a’s.
Projecto de BD - 23
Aplicação do algoritmo

Passo 1
Passo 2

empresa  morada
empresa produto  preço
1º caso, sem perdas
Fornecedores empresa morada produto preço
Forn
a1
a2
b13
b14
Prod
a1
b22
a3
a4
Fornecedores empresa morada produto preço
Forn
a1
a2
b13
b14
Prod
a1
a2
a3
a4
2º caso, com perdas
Fornecedores empresa morada produto preço
FornProd
a1
b12
a3
b14
MoraProd
b21
a2
a3
a4
Projecto de BD - 24
Vantagens da decomposição

Trabalhar com conjuntos menores
Redução das redundâncias
Redução das perdas de informação

Obriga a junções naturais



método da normalização vai indicar regras orientadoras
para a decomposição
Projecto de BD - 25
Projecção das dependências

A decomposição de uma relação R, sujeita ao conjunto de dependências
F, num conjunto de relações (R1, ..., Rk) é acompanhada da projecção de
F sobre cada uma das Ri
Projecção de F sobre os atributos Z — conjunto de
dependências X  Y no fecho de F tal que XY Z
 X  Y não precisa de estar em F, basta que esteja no fecho de F.
Decomposição que preserva o conjunto de dependências F —
quando a reunião das projecções de F sobre cada uma das
relações da decomposição implica logicamente F.
 Se não se preservarem as dependências, aquilo que é admitido na
decomposição pode não o ser na junção (nem no modelo...)
Projecto de BD - 26
Falta de preservação
F= {Cidade Rua  Cod, Cod  Cidade}
MORADA(Cidade, Rua, Cod)
decomposição:
R1(Rua, Cod)
F1= {}
R2(Cidade, Cod)
F2= {Cod  Cidade}
sem perdas:
Cidade Rua
R1
b11
a2
R2
a1
b22
Cod
a3
a3
Cidade Rua
R1
a1
a2
R2
a1
b22
Cod
a3
a3
mas F1+F2 / F, i.e. não preserva as dependências
R1 Rua
Cod
Cedofeita, 50 4000
Cedofeita, 50 4100
Conclusão: Cidade Rua  Cod tem
que ser verificada explicitamente
R2
R1 ⋈ R2
Cidade Cod
Porto 4000
Porto 4100
Cidade Rua
Cod
Porto Cedofeita, 50 4000
Porto Cedofeita, 50 4100
Projecto de BD - 27
Teste de preservação
 método inviável: calcular o fecho do conjunto de dependências F,
projectá-lo sobre as relações da decomposição, fazer a respectiva
exponencial
união e verificar se este conjunto é equivalente a F.

Algoritmo de teste da preservação das dependências



Entrada: decomposição (R1,..., Rk) e dependências F
Saída: decisão sobre a preservação de F.
Método: para cada X  Y em F fazer
Z:= X
enquanto ocorrerem alterações a Z fazer
para i:= 1 até k fazer
Z:= Z  ((Z  Ri)+  Ri)

/*operação Ri, fecho relativo a F */
se Y Z então a dependência é preservada.
 Para saber se X  Y em F está no fecho de G (a reunião das projecções)
• calcular o fecho de X relativamente a G [G não é calculado]
• truque: aplicar a operação-Ri até não haver mais alterações simula G
Projecto de BD - 28
Aplicação do algoritmo

Considerar R= { A B C D } decomposto em { AB, BC, CD } com as dependências
F = { A  B, B  C, C  D, D  A }.
À primeira vista, a projecção de F sobre AB, BC, CD parece não suportar D  A.
Acontece que, de facto, se projecta o fecho de F e portanto
B  C, C  D, D  A  B  A
pelo que F1= { A B, B  A}, F2= { B C, C  B}, F3= { C D, D  C}
e F1 + F2 + F3  D  A.

Verificação deste resultado pelo algoritmo:
•
•
começa-se com Z= {D}, mas {D}  [({D}  {A, B})+  {A, B}]= {D}
idem para a operação-BC; relativamente à operação-CD temos
Z= {D}  [({D}  {C, D})+  {C, D}]=
{D}  ({D}+  {C, D})=
{D}  ({A, B, C, D}  {C, D})= {C, D}
•
na passagem seguinte obtém-se Z = {B, C, D} na operação-BC e a seguir
Z= {A, B, C, D}, que contém A e logo D  A está no fecho das dependências
projectadas.
Projecto de BD - 29
Método da normalização








F - dependências funcionais (chave)
F+ - fecho de um conjunto de dependências (axiomas)
X+ - fecho de um conjunto de atributos relativamente a
F (algoritmo)
equivalência de conjuntos de dependências (algoritmo)
forma minimal
decomposição sem perdas (algoritmo de verificação)
decomposição com preservação das dependências
(algoritmo de verificação)
algoritmo de decomposição


sem perdas, para BCNF
sem perdas e com preservação das dependências para 3NF
Projecto de BD - 30
Primeira forma normal

Relação normalizada (1NF)


atributos simples ou compostos mas não relações
não normalizada:
Nr produto
data
qualidade
dia mês ano


1
cebola
01 05 86
egipto
2
feijão
25 06 86
branco, vermelho, frade
normalizar: passar a forma tabular, só com valores
simples
Atributo principal

se pertencer a alguma chave candidata da relação
Projecto de BD - 31
Segunda forma normal
Uma relação é da 2NF, relativamente a F: se XA e A
não está em X, então A é principal ou X não é um
subconjunto estrito de uma chave


não há dependências em partes da chave
exemplo Fornecedores
• empresa  morada
• chave: empresa produto
• não é 2NF
empresa
morada
produto
preço
Projecto de BD - 32
Terceira forma normal
Uma relação é da 3NF, relativamente a F: se XA e A
não está em X, então A é principal ou X contém uma
chave


Uma 3NF é 2NF e não tem dependências transitivas
Exemplo Carros
• Carro( matrícula, marca, potência, BI, nome, idade )
• F = {matrícula  marca potência,
BI  nome idade,
matrícula
BI
matrícula  BI}
• C+=?
marca,
nome,
• Carro não é 3NF
potência
idade
Projecto de BD - 33
Relações 3NF


Evidenciam as dependências simples relativamente
à chave
meio de estruturar a informação


mais simples para o utilizador


semântica = esquemas + dependências: clarifica
mais simples para o SGBD



uma relação 3NF tende a representar uma entidadetipo/classe ou uma associação
implementada pelo conceito de chave primária
basta impedir chaves duplicadas
dispensa efeitos colaterais nas inserções e
actualizações
Projecto de BD - 34
Forma normalizada Boyce-Codd
Uma relação é da BCNF, relativamente a F: se XA
e A não está em X, então X contém uma chave




deixa cair a excepção de A ser principal
dependências só na chave
não há dependências inesperadas
exemplo: relação MORADA não é BCNF e é 3NF


todos os atributos são principais
não é possível memorizar um código de uma dada cidade se
não se conhecer uma rua dessa área
MORADA(Cidade, Rua, Cod)
F= {Cidade Rua  Cod, Cod  Cidade}
chaves (Cidade, Rua) ou (Cod, Rua)
Projecto de BD - 35
Decomposição para 3NF

Algoritmo



entrada: R e F (forma minimal)
saída: decomposição 3NF com preservação das dependências
método:
• atributos que não apareçam nas dependências formam uma
relação
• uma associação muitosmuitos entre A e B, representa-se pela
dependência artificial AB
• decomposição nos esquemas (X,A) para cada XA em F
• pares de relações entre cujos tuplos se possa estabelecer uma
correspondência biunívoca são agrupados
Projecto de BD - 36
Exemplo de decomposição 3NF


Carro( matrícula, marca, potência, BI, nome, idade )
F = {matrícula  marca potência,
BI  nome idade}
associação muitos para muitos entre carros e pessoas

Passo zero


Carro( matrícula, marca, potência, BI, nome, idade )
F’ = {matrícula  marca, matrícula  potência,
BI  nome, BI  idade, BI matrícula  }

Passo um





Nome(BI, nome)
Idade(BI, idade )
Marca( matrícula, marca)
Potência( matrícula, potência)
Proprietário( matrícula, BI)
Projecto de BD - 37
Decomposição 3NF (cont.)

Passo dois (recomposição)




se cada carro tiver dono e um só dono



Pessoa(BI, nome, idade )
Carro( matrícula, marca, potência)
Proprietário( matrícula, BI)
matrícula  BI
Proprietário ( matrícula, BI)
Passo dois’ (recomposição)


Pessoa(BI, nome, idade )
Carro( matrícula, marca, potência, BI)
Projecto de BD - 38
Outra decomposição 3NF

Decomposição

Carro( matrícula, marca, potência)
• F1 = {matrícula  marca potência}

Bilhete( matrícula, BI)
• F2 = {matrícula  BI}

Dono(matrícula, nome, idade )
• F3 = {}



sem preservação das dependências
restrição BI  nome idade passa a ser interrelações, não sendo suportada pelo método da
normalização
SGBD terá que a suportar através de triggers
Projecto de BD - 39
Decomposição para BCNF

Algoritmo



entrada: R e F (forma minimal)
saída: decomposição sem perdas em que cada esquema é
BCNF relativamente à projecção de F sobre esse esquema
método:
•
•
•
•
•

condição inicial: D0 = {R}
em cada passo, decompõe-se uma relação que viole a BCNF:
Di+1 = Di \ {S}  {S1, S2}
em que se verifica XA  F, {X, A}  S, S  X+, A  X
sendo S1 = {X, A} e S2 = S \ {A}
não garante a preservação das dependências
Projecto de BD - 40
Dependências multívocas

Origem das dependências multívocas
Centro
projecto
internamentos
programador
Manuel
António
Isabel
estatística Eduarda
Miguel
Centro
horário
9-11
14-16
11-13
16-17
não normalizada
projecto  programador
projecto  horário
(indissociáveis)
projecto
internamentos
internamentos
internamentos
internamentos
internamentos
internamentos
estatística
estatística
estatística
estatística
1NF
Chave trivial
programador
Manuel
António
Isabel
Manuel
António
Isabel
Eduarda
Miguel
Eduarda
Miguel
horário
9-11
9-11
9-11
14-16
14-16
14-16
11-13
11-13
16-17
16-17
Projecto de BD - 41
Efeito



Se existem
estatística
Eduarda 11-13
estatística
Miguel
16-17
a dependência multívoca obriga à existência de
estatística
Miguel
11-13
estatística
Eduarda 16-17.
Originada pela normalização de relações

Manifestam-se pelo facto de a presença de alguns tuplos
implicar a presença de outros
Dependência multívoca
A  B em R(A,B,C) se e só se o conjunto de valores de B
associados a um par (A,C) depender só de A e não de C
 Isto é, é o mesmo conjunto qualquer que seja C
Projecto de BD - 42
Características

Dependências multívocas generalizam
dependências funcionais


Complementação (U – universo dos atributos)



X Y  X Y
X Y  X U-X-Y
uma relação só com dois atributos não pode violar a 4NF
Junção sem perdas (revisitada)


Seja D={R1, R2} uma decomposição de R e F um
conjunto de dependências funcionais e multívocas
Então D tem uma junção sem perdas relativamente a F se
e só se R1  R2  R1 - R2 (ou R2-R1)
Projecto de BD - 43
4NF
Uma relação é da 4NF, relativamente a F, se para todas
as XA então X contém uma chave (XYR).
Método da decomposição
Se em R(X,A,B), XA e X não contém uma chave,
decompõe-se o esquema em R1(X,A) e R2(X,B).
Programadores
projecto
internamentos
internamentos
internamentos
estatística
estatística
programador
Manuel
António
Isabel
Eduarda
Miguel
Centro não é 4NF
Horários
projecto
internamentos
internamentos
estatística
estatística
horário
9-11
14-16
11-13
16-17
Projecto de BD - 44
Conclusão

Uma relação que obedeça a uma das formas mais
restritivas obedece também às menos restritivas
1NF
2NF

Nível de normalização é um problema de
semântica e não de valores


3NF BCNF
4NF
Não basta olhar para o conteúdo das várias relações para
dizer se são 3NF, é preciso saber o significado dos dados
e as dependências existentes
A normalização é uma disciplina para captar a
semântica da realidade.
Projecto de BD - 45
Download

Projecto de BD e normalização