1
Gabriel DavidFEUP - Rua Dr. Roberto Frias, 4200-465 Porto - PORTUGALTel. 351-225081408 - Fax: 351-225081440
Email: [email protected]: http://www.fe.up.pt
Sumário Projecto de bases de dados relacionais Conceitos básicos Metodologia de normalização
Projecto de BD - 2
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 relacionais
Esquema da BD = esquemas das relações + regras de integridade
Projecto de BD - 3
BD Coop
Esquema Sócios( nome, endereço, balanço ) Encomendas( nome, produto, quant ) Fornecedores( empresa, morada, produto, preço )
Sóciosnome endereço balançoJoão Boavista, 45 530Pedro Galvão, 61 200Antónia Constituição, 5 -47Jaime Breyner, 95 0
Encomendasnome produto quantJoão farinha 5João bolacha 10Antónia farinha 3Pedro batata 8
Projecto de BD - 4
Defeitos do esquema
Redundância mesmo facto, vários registos
anomalias de actualização inconsistência
anomalias de inserção valores nulos, chave?
anomalias de apagamento dois factos, mesmo registo
Vantagem dispensa a junção, eficiência segurança vs. eficiência
Fornecedoresempresa morada produto preçoAgro Massarelos, 80 farinha 129Agro Massarelos, 80 batata 89Agro Massarelos, 80 bacalhau 540Alimentar Industrial, 2 massa 70Alimentar Industrial, 2 feijão 80Alimentar Industrial, 2 bolacha 125Nutriente Lordelo, 509 batata 79Nutriente Lordelo, 509 massa 79Nutriente Lordelo, 509 bacalhau 570
Projecto de BD - 5
Esquema alternativo
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
Prodempresa produto preçoAgro farinha 129Agro batata 89Agro bacalhau 540Alimentar massa 70Alimentar feijão 80Alimentar bolacha 125Nutriente batata 79Nutriente massa 79Nutriente bacalhau 570
Fornempresa moradaAgro Massarelos, 80Alimentar Industrial, 2Nutriente Lordelo, 509
Projecto de BD - 6
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 ) [nome depende funcionalmente de BI] BI nome [BI determina funcionalmente nome]
BI1 nome1
BI2 nome2
Projecto de BD - 7
Dependência funcional
R( A1, A2, …, An ) X = AX1 AX2 … AXi, AYi A1 … An
Y = AY1 AY2 …
Caso contrário a BD está num estado inconsistente, por violar a dependência funcional X Y
Se X Y então dois tuplos Ta e Tb em que Xa=Xb terão que satisfazer Ya=Yb
Projecto de BD - 8
No exemplo Fornecedores Dependências no modelo declaradas pelo
projectistaempresa moradaempresa 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 - 9
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 B A• A B C D• A B B D E
Associação muitos-um R( A1, A2, B, C, D1, D2, E )
• 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
Entidade 1 Entidade 2Ass
A1 A2 B
C
ED2D1
Projecto de BD - 10
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 C A, A B C A,A B, A B B, A C B, A B C B,A B, A B C, A C C, A B C C,A A B, A B A B, A C A B, A B C A B,A A C, A B A C, A C A C, A B C A C,A B C, A B B C, A C B C, A B C B C,A A B C, A B A B C, A C A B C, A B C A B C,A , A B , A C , A B C ,B B, B C B, B C, B C C,B B C, B C B C, B , B C ,C , B C
Dependências dadas, triviais, derivadas
Projecto de BD - 11
Fecho de um conjunto de dependências
Axiomas de Armstrong Reflexividade (triviais) Y X U X Y Aumento X Y e Z U XZ YZ Transitividade X Y e Y Z X Z Reunião X Y e X Z X YZ Pseudotransitividade X Y e WY Z X W Z Decomposição X Y e Z Y X Z
F+ (fecho de F) é o conjunto de todas as dependências implicadas logicamente por F
Projecto de BD - 12
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ço2 (dada) F_nome F_endereço3 (2 + aumento) F_nome Produto F_endereço Produto4 (3 + decomposição) F_nome Produto F_endereço5 (4+1+reunião) F_nome Produto F_endereço Preço
Projecto de BD - 13
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 se1. 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 - 14
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 - 15
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)
Solução: X Y pertence a F+ sse Y X+
Algoritmo de cálculo de X+, relativamente a F1. X(0) = X2. X(i+1) = X(i) {A | Y Z F, Y X(i), A Z}3. X+ = X(i), se X(i+1) = X(i)
X+ (fecho de X) é o conjunto de todos os atributos funcionalmente dependentes de X
Projecto de BD - 16
Exemplo de cálculo de X+
R(A, B, C, D, E, F) F= {AB C F ED
C A BE CBC F CD BFACF B CE AD }
Calcular o fecho de X = BF X(0)= BF X(1)= BDEF X(2)= BCDEF B+= B X(3)= ABCDEF = X+ = U F+= DEF U
Logo, X= BF é chave
Projecto de BD - 17
Conjuntos de dependências
F e G – conjuntos de dependências dois conjuntos são equivalentes se os respectivos
fechos forem iguais
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.
F G sse F+ = G+
Projecto de BD - 18
Forma minimal
Conjunto de dependências F numa forma minimal1. Membro direito das dependências tem só 1 atributo2. Não existe X A F tal que F \ {X A} F3. 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 - 19
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 FBC F BE C CE AACF 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 - 20
Duas formas minimais F’= { AB C F E
C A F D CD FBC F BE C CF B CE D }
F’’= { AB C F E CD BC A F D BC F BE C CE D }
Neste caso, as duas formas minimais têm um número diferente de elementos
Projecto de BD - 21
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
Fornecedores = FORN ⋈ PROD Fornecedores ( empresa, morada, produto, preço ) Forn ( empresa, morada ) Prod ( empresa, produto, preço ) (ver pág. 3 e 4)
Decomposição sem perdas seR = R1(R) ⋈ R2(R)
Projecto de BD - 22
Decomposição com perdas
Excesso de linhas
Perda de informação
FornProdempresa produtoAgro farinhaAgro batataAgro bacalhauAlimentar massaAlimentar feijãoAlimentar bolachaNutriente batataNutriente massaNutriente bacalhau
MoraProdmorada produto preçoMassarelos, 80 farinha 129Massarelos, 80 batata 89Massarelos, 80 bacalhau 540Industrial, 2 massa 70Industrial, 2 feijão 80Industrial, 2 bolacha 125Lordelo, 509 batata 79Lordelo, 509 massa 79Lordelo, 509 bacalhau 570
FornProd ⋈ MoraProd Fornecedoresempresa morada produto preçoAgro Massarelos, 80 farinha 129Agro Massarelos, 80 batata 89Agro Lordelo, 509 batata 79
…
Nutriente Massarelos, 80 batata 89Nutriente Lordelo, 509 batata 79
...
Projecto de BD - 23
Decomposição sem perdas
Algoritmo de teste R(A1, …, An), F relação inicial, dependências (R1, …, Rk) 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 XY 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 - 24
Aplicação do algoritmo 1º caso, sem perdas
2º caso, com 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
Fornecedores empresa morada produto preço
FornProd a1 b12 a3 b14
MoraProd b21 a2 a3 a4
Passo 1
Passo 2
empresa moradaempresa produto preço
Projecto de BD - 25
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 - 26
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 - 27
Falta de preservaçãoMORADA(Cidade, Rua, Cod) F= {Cidade Rua Cod, Cod Cidade}
decomposição:
R1(Rua, Cod) F1= {}
R2(Cidade, Cod) F2= {Cod Cidade}
sem perdas: Cidade Rua CodR1 b11 a2 a3
R2 a1 b22 a3
Cidade Rua CodR1 a1 a2 a3
R2 a1 b22 a3
mas F1+F2 / F, i.e. não preserva as dependências
Cidade Cod Porto 4000Porto 4100
Rua Cod Cedofeita, 50 4000Cedofeita, 50 4100
Cidade Rua Cod Porto Cedofeita, 50 4000Porto Cedofeita, 50 4100
R1 R2
R1⋈ R2
Conclusão: Cidade Rua Cod tem que ser verificada explicitamente
Projecto de BD - 28
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 união e verificar se este conjunto é equivalente a F.
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
Teste de preservação
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:= Xenquanto ocorrerem alterações a Z fazer
para i:= 1 até k fazerZ:= Z ((Z Ri)+ Ri) /*operação Ri, fecho relativo a F */
se Y Z então a dependência é preservada.
exponencial
Projecto de BD - 29
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 - 30
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 - 31
Primeira forma normal
Relação normalizada (1NF) atributos simples ou compostos mas não relações não normalizada:
normalizar: passar a forma tabular, só com valores simples Atributo principal
se pertencer a alguma chave candidata da relação
Nr produto data qualidade dia mês ano1 cebola 01 05 86 egipto2 feijão 25 06 86 branco, vermelho, frade
Projecto de BD - 32
Segunda forma normal
Uma relação é da 2NF, relativamente a F: se XA 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
produto
morada
preço
Projecto de BD - 33
Terceira forma normal
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}
• C+=?• Carro não é 3NF
Uma relação é da 3NF, relativamente a F: se XA e A não está em X, então A é principal ou X contém uma chave
matrícula
marca, potência
BI
nome, idade
Projecto de BD - 34
Relações 3NF Evidenciam as dependências simples relativamente à
chave meio de estruturar a informação
uma relação 3NF tende a representar uma entidade-tipo/classe ou uma associação
mais simples para o utilizador semântica = esquemas + dependências: clarifica
mais simples para o SGBD implementada pelo conceito de chave primária basta impedir chaves duplicadas
dispensa efeitos colaterais nas inserções e actualizações
Projecto de BD - 35
Forma normalizada Boyce-Codd
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 áreaMORADA(Cidade, Rua, Cod)
F= {Cidade Rua Cod, Cod Cidade}chaves (Cidade, Rua) ou (Cod, Rua)
Uma relação é da BCNF, relativamente a F: se XA e A não está em X, então X contém uma chave
Projecto de BD - 36
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 muitosmuitos entre A e B, representa-se pela dependência artificial AB
• decomposição nos esquemas (X,A) para cada XA em F• pares de relações entre cujos tuplos se possa estabelecer uma
correspondência biunívoca são agrupados
Projecto de BD - 37
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 - 38
Decomposição 3NF (cont.)
Passo dois (recomposição) Pessoa(BI, nome, idade ) Carro( matrícula, marca, potência) Proprietário( matrícula, BI)
se cada carro tiver dono e um só dono 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 - 39
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 inter-
relações, não sendo suportada pelo método da normalização
SGBD terá que a suportar através de triggers
Projecto de BD - 40
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 XA 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 - 41
Dependências multívocas
Origem das dependências multívocasCentroprojecto programador horáriointerna- Manuel 9-11mentos António 14-16
Isabelestatística Eduarda 11-13
Miguel 16-17
Centroprojecto programador horáriointernamentos Manuel 9-11internamentos António 9-11internamentos Isabel 9-11internamentos Manuel 14-16internamentos António 14-16internamentos Isabel 14-16estatística Eduarda 11-13estatística Miguel 11-13estatística Eduarda 16-17estatística Miguel 16-17
não normalizada
1NFChave trivial
projecto programador
projecto horário
(indissociáveis)
Projecto de BD - 42
Efeito Se existem
estatística Eduarda 11-13estatística Miguel 16-17
a dependência multívoca obriga à existência deestatística Miguel 11-13estatí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
Isto é, é o mesmo conjunto qualquer que seja C
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
Projecto de BD - 43
Características
Dependências multívocas generalizam dependências funcionais X Y X Y
Complementação (U – universo dos atributos) 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 - 44
4NF
Uma relação é da 4NF, relativamente a F, se para todas as XA então X contém uma chave (XYR).
Método da decomposiçãoSe em R(X,A,B), XA e X não contém uma chave, decompõe-se o esquema em R1(X,A) e R2(X,B).
Programadoresprojecto programadorinternamentos Manuelinternamentos Antóniointernamentos Isabelestatística Eduardaestatística Miguel
Horáriosprojecto horáriointernamentos 9-11internamentos 14-16estatística 11-13estatística 16-17
Centro não é 4NF
Projecto de BD - 45
Conclusão Uma relação que obedeça a uma das formas mais
restritivas obedece também às menos restritivas
Nível de normalização é um problema de semântica e não de valores 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.
4NF
3NF2NF
1NF
BCNF