Você está na página 1de 7

Dependências Funcionais (DFs)

• Um tipo de restrição de integridade


Dependências Funcionais e – portanto, faz parte do esquema
Normalização • Identificá-las faz parte do projeto de um
banco de dados
• Usadas também para a normalização de
relações

1 5

Dependências Funcionais
Refinamento de Esquema Livro Texto: Capítulo 19
Definição:
Modelagem Esquema Armazenamento
de Dados Relacional Físico Se duas tuplas coincidem nos valores dos atributos
A1, A2, …, An
então elas devem também conter valores iguais nos atributos
B1, B2, …, Bm
Organização
Diagramas E/R Tabelas complexa de Formalmente:
==> Refinamento arquivos e
de Esquema estruturas de
A1, A2, …, An  B1, B2, …, Bm
índice.
2 6

Esquemas Alguns Exemplos de DFs


Esquema de Relação:
– Nome da relação e nomes de atributos Produto: name  price, manufacturer
– P.ex. Produto(Nome, Preco, Categoria, Fabricante)
– Na prática, também definimos o domínio de cada
Person: ssn  name, age
atributo.
zip  city
city, state  zip
Esquema de Banco de Dados
– Conjunto de esquemas de relações
– P.ex. Produto(Nome, Preco, Categoria, Fabricante),
Companhia(Nome, Endereco, Tel),
.......
3 7
Definição matemática, não confundir com tabelas SQL!

Primeira Forma Normal (1FN) Mais Exemplos


• Um esquema de relação está na 1FN se o Formalmente, uma DF é satisfeita ou violada por uma instância:
domínio de todos os atributos são simples.
Aluno EmpID Name Phone Position
Aluno Nome IRA E0045 Smith 1234 Clerk
Alice 3.8 E1847 John 9876 Salesrep
Nome IRA Disc Bob 3.7 E1111 Smith 9876 Salesrep
Carol 3.9
E9999 Mary 1234 Lawyer
Math

Alice 3.8 DB Matricula Disciplina


OS NomeAlu Disc
Alice Math Nome EmpID  Name, Phone, Position
DB
Bob 3.7
OS
Carol Math Math
Position  Phone
Alice DB DB
Bob DB OS mas não Phone  Position
Math
Carol 3.9 OS
Alice OS
4 8
Carol OS
Em Geral Uma Observação Interessante
• Para verificar se A  B, remova todas as outras
colunas
… A … B
X1 Y1
name  color
X2 Y2
Se todas estas Dfs são category  department
… … satisfeitas: color, category  price

• e verifica se a relação restante é muitos-para-um


Então esta DF também é: name, category  price
(dita funcional em matemática)
9 Por quê ?? 13

Exemplo Regras de Inferência para DFs

EmpID Name Phone Position A1, A2, …, An  B1, B2, …, Bm


Regras de
E0045 Smith 1234 Clerk
Composição e
E1847 John 9876 Salesrep É equivalente a
Decomposição
E1111 Smith 9876 Salesrep
E9999 Mary 1234 Lawyer A1, A2, …, An  B1
A1 ... Am B1 ... Bm

A1, A2, …, An  B2
.....
A1, A2, …, An  Bm
10 14

Exemplo Regras de Inferência para DFs


DF's são restrições:
• em algumas instâncias elas são satisfeitas name  color
• em outras não! category  department A1, A2, …, An  Ai Regra Trivial
color, category  price (reflexividade)
onde i = 1, 2, ..., n
name category color department price

Gizmo Gadget Green Toys 49


A1 … Am

Por quê ?
Tweaker Gadget Green Toys 99

Esta instância satisfaz todas as DFs? 11 15

Exemplo name  color


category  department
Regras de Inferência para DFs
color, category  price

name category color department price Regra de Fecho Transitivo

Gizmo Gadget Green Toys 49 Se A1, A2, …, An  B1, B2, …, Bm

Tweaker Gadget Black Toys 99


e B1, B2, …, Bm  C1, C2, …, Cp
Gizmo Stationary Green Office-supp. 59
então A1, A2, …, An  C1, C2, …, Cp

E nesta instância? 12 Por quê ? 16


Algoritmo: Fecho
Comece com X={A1, …, An}. Exemplo:
A1 … Am B1 … Bm C1 ... Cp
Repita até que X não se altere: name  color
category  department
se B1, …, Bn  C é uma DF e color, category  price
B1, …, Bn estão em X
então acrescente C a X.

{name, category}+ =
{ name, category, color, department, price }

17
Então: name, category  color, department, price 21

Exemplo (continuação) Outro Exemplo


Comece com as seguintes DFs: 1. name  color • Enrollment(student, major, course, room, time)
2. category  department student  major
3. color, category  price
Obtenha as seguintes DFs: major, course  room
course  time
Que regra você
DF resultante
aplica?
4. name, category  name
O que mais você consegue inferir?
5. name, category  color
6. name, category  category
7. name, category  color, category
8. name, category  price 18 22

Exemplo (continuação) Exemplo


1. name  color
Resposta: 2. category  department
3. color, category  price R(A,B,C,D,E,F) A, B  C
A, D  E
Que regra você aplica? B  D
DF resultante
A, F  B
4. name, category  name reflexividade
5. name, category  color transitividade em 4, 1
Compute {A,B}+ X = {A, B, }
6. name, category  category reflexividade
7. name, category  color, category composição em 5, 6 Compute {A, F}+ X = {A, F, }
8. name, category  price transitividade em 3, 7
Isso é muito complicado! Vamos ver uma forma mais simples.
19 23

Fecho de um conjunto de
Inferência de Todas as DFs
Atributos
Dado um conjunto de atributos A1, …, An Exemplo:
A, B  C
O fecho, {A1, …, An}+ , é um conjunto de atributos B A, D  B
tal que A1, …, An  B B  D

Passo 1: Compute X+, para todo X:


Exemplo: name  color
category  department A+ = A, B+ = BD, C+ = C, D+ = D
color, category  price AB+ = ABCD, AC+ = AC, AD+ = ABCD
ABC+ = ABD+ = ACD+ = ABCD
Fechos: BCD+ = BCD, ABCD+ = ABCD
name+ = {name, color}
{name, category}+ = {name, category, color, department, price} Passo 2: Enumere todas as DFs X  Y, tal que Y ⊆ X+ e X∩Y = ∅:
color+ = {color} 20
B D, AB  CD, ADBC, ABC  D, ABD  C, ACD 24B
Por que o Algoritmo está
Dfs em Diagramas E/R
correto?
• Prove por indução que:
– para todo B em X: Dada uma relação criada de um diagrama E/R, qual a sua chave?
• A1, …, An  B
Regra 1: Se a relação vier de uma entidade, então a chave da
• Inicialmente X = {A1, …, An} -- por reflexividade relação é o conjunto de atributos que forma a chave da
• Passo da indução: B1, …, Bm em X entidade.
– Implica que A1, …, An  B1, …, Bm
– Também temos que B1, …, Bm  C
– Por transitividade temos A1, …, An  C Person Person(address, name, ssn)
• Isto prova que o algoritmo é correto; ainda é preciso nam
add
provar que ele é completo ress e
ssn

25 29

Encontrando Chaves
Chaves Regra 2:
Se a relação foi criada a partir de um relacionamento muitos-para-
• Uma superchave é um conjunto de atributos A1, ..., An tal muitos, então a chave da relação é formada pelas chave das
que para qualquer atributo B da relação, temos que A1, entidades ligadas pelo relacionamento.
..., An  B nam
e bu
Product Person
ys
• Em outras palavras: um conjunto de atributos X é uma pric nam
superchave se X+ = todos os atributos ssn
e e
date

• Uma chave é uma superchave mínima


– ou seja, um conjunto de atributos que é superchave e que
nenhum subconjunto dele é também uma superchave
26 buys(name, ssn, date) 30

DFs em Diagramas E/R


Procurando (Super)chaves Exceção: quando houver uma seta do relacionamento para uma
entidade E, então a chave de E não é necessária para formar a
• Compute X+ para todos os conjuntos X chave do relacionamento.
sna
• Se X+ = todos os atributos, então X é uma Product
me
na Pur
superchave me cha
se
Store

• Liste somente os X mínimos card


-no CreditCard
Person ssn

Note: podem existir diversas chaves!


• Exemplo: R(A,B,C), ABC, BCA
Chaves: AB e BC Purchase(name , sname, ssn, card-no)
27 31

Exemplos de Chaves DFs em Diagramas E/R


• Product(name, price, category, color) Suponha que: “CreditCard determina Person”
name, category  price
category  color sna
Product
me
Chave: {name, category} na Pur
me cha Store
superchaves: todos os superconjuntos se

card Incompleto
• Enrollment(student, address, course, room, time) -no CreditCard
Person ssn (o que está chave
student  address significa?)
room, time  course
student, course  room, time
Purchase(name , sname, ssn, card-no)
28 32
Quais são as chaves? card-no  ssn
Projeto de Esquemas Relacionais
Decomposição em Geral
(ou Projeto Lógico)
R(A1, ..., An, B1, ..., Bm, C1, ..., Cp)
Idéia principal:
• Comece com um esquema relacional
• Encontre as DFs R1(A1, ..., An, B1, ..., Bm) R2(A1, ..., An, C1, ..., Cp)

• Utilize-as para melhorar o esquema


relacional
R1 = projeção de R em A1, ..., An, B1, ..., Bm
R2 = projeção de R em A1, ..., An, C1, ..., Cp

33 37

Anomalias de Dados Decomposição


Quando um esquema é mal projetado podem ocorrer • Decomposição correta:
anomalias: Name Price Category
Gizmo 19.99 Gadget
OneClick 24.99 Camera
Redundância: dados repetidos Gizmo 19.99 Camera

Anomalias de Atualização: necessidade de realizar Name Price Name Category


alterações em diversos lugares Gizmo 19.99 Gizmo Gadget
OneClick 24.99 OneClick Camera
Gizmo 19.99 Gizmo Camera
Anomalias de Remoção: possibilidade de perder dados34 38
inadvertidamente Decomposição sem perda

Projeto de Esquemas Relacionais Decomposição Incorreta


Relação de Pessoas que podem possuir diversos telefones:
Name SSN PhoneNumber City • Decomposição com perda
Fred 123-45-6789 206-555-1234 Seattle
Name Price Category
Fred 123-45-6789 206-555-6543 Seattle
Gizmo 19.99 Gadget O que está
Joe 987-65-4321 908-555-2121 Westfield
OneClick 24.99 Camera errado?
Gizmo 19.99 Camera
SSN  Name, City mas não SSN  PhoneNumber

Anomalia: Name Category Price Category


• Redundância = repetição de dados Gizmo Gadget 19.99 Gadget
• Anomalias de Atualização = Fred se muda para “Bellevue” OneClick Camera 24.99 Camera
• Anomalias de Remoção = Joe remove seu telefone: Gizmo Camera 19.99 Camera
Qual a sua cidade? 35 39

Decomposição de uma Relação Formas Normais


Decomposição em duas relações:
Name SSN PhoneNumber City Primeira Forma Normal (1FN) = todos os atributos são
Fred 123-45-6789 206-555-1234 Seattle atômicos
Fred 123-45-6789 206-555-6543 Seattle
Joe 987-65-4321 908-555-2121 Westfield Segunda Forma Normal (2FN) = velho e obsoleto

Name SSN City SSN PhoneNumber Terceira Forma Normal (3FN) = será discutido
Fred 123-45-6789 Seattle 123-45-6789 206-555-1234
Joe 987-65-4321 Westfield 123-45-6789 206-555-6543
Forma Normal de Boyce Codd Normal Form (FNBC ou
987-65-4321 908-555-2121
Não há mais anomalias: BCNF) = será discutido
• Sem repetição de dados
• Fácil de mudar Fred para “Bellevue” (como?) Outros...
• Fácil de remover o telefone de Joe (como?) 36 40
Algoritmo de Decomposição na
Forma Normal de Boyce-Codd
FNBC
Uma condição simples para remover anomalias: Decomposição_FNBC(R)

Uma relação está em FNBC se: encontre X tal que: X ≠X+ ≠ [todos atributos]
Se A1, ..., An  B é uma dependência não trivial
se (não achou) então “R está em FNBC”
em R então {A1, ..., An} é uma superchave de R
seja Y = X+ - X
em Português: seja Z = [todos atributos] - X+
decomponha R em R1(X ∪ Y) e R2(X ∪ Z)
Quando um conjunto de atributos de R determinar um outro continue a decompor R1 e R2
atributo, devem também determinar todos os outro atributos. 41 45

Encontre X tal que: X ≠X+ ≠ [todos atributos]

Algoritmo de Decomposição em FNBC Exemplo de Decomposição na FNBC


Repita Person(name, SSN, age, hairColor, phoneNumber)
escolha A1, …, Am  B1, …, Bn que viola a condição da FNBC SSN  name, age
decomponha R em age  hairColor

R1(A1, …, Am, B1, …, Bn) e R2(A1, …, Am, [outros]) Iteração 1: Person


Até que não haja mais violações SSN+ = SSN, name, age, hairColor
Decompõe em: P(SSN, name, age, hairColor)
Existe relação Phone(SSN, phoneNumber)
de 2 atributos que
não esteja em Iteração 2: P
B’s A’s Outros FNBC? age+ = age, hairColor
Decompõe em: People(SSN, name, age)
Na prática, existe um Hair(age, hairColor)
R1 R2 algoritmo melhor.
42
Phone(SSN, phoneNumber) 46

Decomponha na FNBC Exemplo


Name SSN City
• R(A,B,C,D) A  B, B  C
SSN  Name, City
Fred 123-45- Seattle
Joe 6789
987-65- Westfield • em R: A+ = ABC ≠ ABCD
4321 – Decomponha em R1(A,B,C), R2(A,D)
Quais são as
SSN PhoneNumber Verifique a existencia de • em R1: B+ = BC ≠ ABC chaves?
123-45-6789 206-555-1234 anomalias: – Decomponho em R11(B,C), R12(A,B)
123-45-6789 206-555-6543 • Redundancia ?
• de atualizacao ? • Resultado final: R11(B,C), R12(A,B), R2(A,D)
987-65-4321 908-555-2121
• de remocao ?
987-65-4321 908-555-1234
• O que acontece se em R escolhermos B+ ? Ou
43 AB+ ? 47

Decomposições Corretas
Exemplo de Decomposição
Uma decomposição é correta se é sem perda, ou
Person(name, SSN, age, hairColor, phoneNumber) seja, a relação original pode ser recuperada:
SSN  name, age
age  hairColor R(A,B,C)
Decomposição
Decomponha em FNBC (em sala):

R1(A,B) R2(A,C)
Recuperação

R’(A,B,C) deve ser o mesmo que


R(A,B,C)
44 R’ em geral é maior que R. Devemos assegurar que R’ = R 48
Decomposições Corretas Solução: Terceira Forma Normal (3NF)

• Dado R(A,B,C) tal que AB, a Uma condição simples para remover anomalias:

decomposição em R1(A,B), R2(A,C) é sem


perda Uma relação R está na 3FN se:

Quando houver uma DF não trivial A1, A2, ..., An → B em R


então {A1, A2, ..., An } é uma superchave de R
ou B é parte de uma chave.

Compromisso:
FNBC = nenhuma anomalia, mas pode perder DFs
49 3FN = mantém todas as DFs, mas pode conter anomalias
53

Algoritmo de Decomposição na 3FN


Um Problema com a FNBC Decomposicao_3FN(R)
Unit Company Product seja K = [todos atributos que são parte de uma chave]
Unit → Company
Company, Product → Unit Encontre X tal que:
X+ - X - K ≠ ∅ and X+ ≠ [todos atributos]
Unit+ = Unit, Company se (não achou) então “R já está na 3FN”

Unit Company Unit Product seja Y = X+ - X - K


seja Z = [todos atributos] - (X ∪ Y)
decomponha em R1(X ∪ Y) e R2(X ∪ Z)
decomponha, recursivamente, R1 e R2
Unit → Company

Perdemos a DF: Company, Product  Unit !! 50 54

Qual o Problema? Exemplo de Decomposição na 3FN


Unit Company Unit Product
R(A,B,C,D,E):
Galaga99 UW Galaga99 Databases Chaves: (computar X+, para diversos Xs)
AB → C AB, AC, AD
Bingo UW Bingo Databases C→D
Unit → Company D→B K = {A, B, C, D}
Nenhum problema até agora. Todas as DFs locais são D→E
Escolha X = C
satisfeitas. Colocando tudo em uma única tabela novamente: C+ = BCDE
C → BDE é uma violação da FNBC
Unit Company Product
Para 3FN: remova B, D (parte de K):
Galaga99 UW Databases C → E é uma violação da 3FN
Bingo UW Databases Decompose: R1(C, E), R2(A,B,C,D)
R1 está na 3FN
Violação da DF: Company, Product → Unit 51 R2 está na 3FN (por causa das chaves: AB, AC, AD) 55

O Problema Decomposição 3FN v.s. FNBC


• Começamos com uma tabela R em um conjunto de A B C D E F G H K

dependências funcionais FD.

• Decompomos R em tabelas R1, R2, … na FNBC


A B C D E E F G H K

com suas dependências funcionais FD1, FD2, …


3NF
A B C C D E E F G G H K

• Reconstruímos R de R1, R2, …

• Mas não conseguimos reconstruir FD de FD1, A B A B A B A B A B A B A B


A B

FD2, … 52 BCNF 56