Você está na página 1de 21

CAPITULO 10

Dependncias funcionais
10.1 INTRODUO
Neste captulo, examinaremos um conceito que foi
caracterizado como no de todo fundamental, mas quase isso
[10.7] ou seja, o conceito de dependncia funcional. Esse
conceito se mostrar de importncia crucial para um bom
nmero de questes que sero discutidas em captulos
posteriores, incluindo em particular a teoria do projeto de
bancos de dados descrita no Captulo 11.
Basicamente, uma dependncia funcional (em geral abreviada
como DF) um relacionamento de muitos-para-um entre um
conjunto de atributos e outro com respeito a uma determinada
varivel de relao. Por exemplo, no caso varivel de relao
de remessas FP, existe uma dependncia funcional do conjunto
de atributos {F#,P#} para o conjunto de atributos {QDE}. Isso
significa que, sobre qualquer relao que seja um valor
vlido da varivel de relao FP:
a. Para qualquer valor dado do par de atributos F# e P#,
existe apenas um valor correspondente do atributo QDE, porm
b. Muitos valores distintos do par de atributos F# e P# podem
ter o mesmo valor correspondente para o atributo QDE (em
geral).
Observe que nossa amostra habitual de valores de FP (ver
Figura 3.8) satisfaz a ambas as propriedades.
Na Seo 10.2, definimos o conceito de dependncia funcional
com maior preciso, distinguindo cuidadosamente entre as DFs
que devam ser satisfeitas por uma determinada varivel de
relao em algum instante particular e aquelas que devem ser
satisfeitas por essa varivel de relao todo o tempo. Como
j mencionamos, as DFs fornecem uma base para um tratamento
cientfico a numerosos problemas prticos. Alm disso, a
razo pela qual elas o fazem o fato de possurem um rico
conjunto de propriedades formais interessantes, que tornam
possvel tratar os problemas em questo de modo formal e
rigoroso. As Sees de 10.3 a 10.6 exploram algumas dessas
propriedades formais em detalhes e explicam algumas de suas
consequncias prticas. Finalmente, a Seo 10.7 apresenta um
breve resumo.
Nota: talvez voc queira saltar partes deste captulo em uma
primeira leitura. Na verdade, muito do que voc necessitar
para entender o assunto dos trs prximos captulos
focalizado nas Sees 10.2 e
10.3. Por essa razo, talvez voc prefira passar rapidamente
pelas sees restantes em uma primeira leitura e voltar a
elas mais tarde, quando tiver assimilado o material dos trs
captulos seguintes.
10.2 DEFINIES BSICAS
Para ilustrar as idias desta seo, faremos uso de uma
verso ligeiramente revisada da varivel de relao de
remessas, uma verso que inclui, alm dos atributos usuais
F#, P# e QDE, um atributo CIDADE, que representa a cidade do
fornecedor relevante. Faremos referncia a essa varivel de
relao revisada como FCP, a
fim de evitar confuso. Um valor possvel para a varivel de
relao FCP apresentado na Figura 10.1. 289
71
FCP F# CIDADE QDE
FIGURA 10.1 Amostra de valores para a varivel de relao FCP
Porm, muito importante nessa rea como em tantas outras
distinguir claramente entre (a) o valor de uma determinada
varivel de relao em um dado instante, e (b) o conjunto de
todos os valores possveis que a varivel de relao dada
poderia assumir em diferentes instantes. No texto seguinte,
definiremos primeiro o conceito de dependncia funcional como
ela se aplica ao Caso (a) e depois estenderemos esse conceito
para aplic-lo ao Caso (b). Aqui est ento a definio para
o Caso (a).
- Seja r uma relao e sejam X e Y subconjuntos arbitrrios
do conjunto de atributos de r. Ento, dizemos que Y
funcionalmente dependente de X em smbolos,
x v
(leia-se X determina funcionalmente Y, ou simplesmente X
seta Y) se e somente se cada valor X em r tiver associado
a ele precisamente um valor Y em r. Em outras palavras,
sempre que duas tuplas de r concordarem sobre seu valor X,
elas tambm concordaro sobre seu valor Y.
Por exemplo, a relao mostrada na Figura 10.1 satisfaz DF:
F# }* { CIDADE
porque cada tupla dessa relao com um valor F# dado tambm
tem o mesmo valor de CIDADE. Na verdade, ela tambm satisfaz
a vrias outras DFs, e as seguintes esto entre elas:
{ F#, P# } * { QDE
{F#,P#}*{CIDADE}
{ F#, P# } * { CIDADE, QDE }
{ F#, P# } * { F# }
{F#,P#}*{F#,P#,CIDADE,QDE}
{F#} +{QDE}
{QDE}
(Exerccio: verifique essas DFs)
O lado esquerdo e o lado direito de uma DF s vezes so
chamados o determinante e o dependente, respectivamente. Como
diz a definio, o determinante e o dependente so ambos
conjuntos de atributos. Porm, quando tal conjunto contm
apenas um atributo isto , quando ele um conjunto
unitrio, com frequncia abandonamos as chaves e escrevemos,
por exemplo, apenas:
F# * CIDADE
Conforme j explicamos, as definies precedentes se aplicam
ao Caso (a) isto , a valores de relaes individuais.
Porm, quando consideramos variveis de relaes em
particular, quando consideramos variveis de relaes bsicas
estamos normalmente interessados no tanto nas DFs que
possam ser vlidas para o valor particular que a varivel de
relao tem em algum instante especfico, mas sim nas DFs que
so vlidas para todos os valores possveis dessa varivel de
relao. Por exemplo, no caso de FCP, a DF:
* CIDADE
290
H
Fi Londres P1 100
F1 Londres P2 100
F2 Paris P1 200
F2 Paris P2 200
F3 Paris P2 300
F4 Londres P2 400
F4 Londres P4 400
F4 Londres P5 400
vlida para todos os valores possveis de FCP porque, em
qualquer instante dado, um determinado fornecedor tem
exatamente uma cidade correspondente, e assim quaisquer duas
tuplas pertencentes a FCP ao mesmo tempo com o mesmo nmero
de fornecedor devem necessariamente ter tambm a mesma
cidade. Na verdade, o fato de ser essa DF vlida para todo o
tempo (isto , para todos os valores possveis de FCP) uma
restrio de integridade sobre as variveis de relao FCP
ela estabelece limites sobre os valores que a varivel de
relao FCP pode receber de forma legtima. Aqui est uma
formulao dessa restrio com o uso da sintaxe do Captulo
8:
CONSTRAINT F#CIDADEDF
COUNT ( FCP { F# } ) = COUNT ( FCP { F#, CIDADE
A sintaxe F# * CIDADE pode ser considerada uma abreviao
para essa formulao mais longa. Aqui est ento a definio
do Caso (b) de dependncia funcional (as extenses sobre a
definio do Caso (a) so apresentadas em negrito):
Seja R uma varivel de relao, e sejam X e Y subconjuntos
arbitrrios do conjunto de atributos de R. Ento, dizemos que
Y funcionalmente dependente de X em smbolos,
x_* Y
(leia-se X determina funcionalmente Y, ou simplesmente X
seta Y) se e somente se, em todo valor possvel vlido de R,
cada valor X tem associado a ele exatamente um valor Y. Em
outras palavras, em todo valor possvel vlido de R, sempre
que duas tuplas concordam sobre seu valor X, elas concordam
tambm sobre seu valor Y.
Em consequncia disso, daqui por diante usaremos a expresso
dependncia funcional neste ltimo sentido, mais exigente e
independente do tempo, impedindo declaraes explcitas em
contrrio.
Aqui temos ento algumas DFs (independentes do tempo) que se
aplicam varivel de relao FCP:
{ F#, P# } * { QDE
{F#,P#}*{CIDADE}
{ F#, P# } * { CIDADE, QDE }
{ F#, P# } F#
{ F#, P# } > { F#, P#, CIDADE, QDE }
{F#} +{CIDADE}
Observe em particular que as DFs a seguir, que de fato so
vlidas para o valor da relao mostrada na Figura 10.1, no
so vlidas para todo o tempo para a varivel de relao
FCP:
F# > QDE
QDE * F#
Em outras palavras, a declarao de que (por exemplo) toda
remessa para um dado fornecedor tem a mesma quantidade vem a
ser verdadeira para o valor da relao FCP especfico
mostrado na Figura 10.1, mas no verdadeira para todos os
valores vlidos possveis da varivel de relao FCP.
Vale a pena observar que seX uma chave candidata da
varivel de relao R, ento todos os atributos Y da varivel
de relao R devero ser funcionalmente dependentes de X.
(Mencionamos esse fato de passagem na Seo 8.8. Ele vem da
definio de chave candidata.) Por exemplo, no caso da
varivel de relao de peas P, necessariamente temos:
> { P#, PNOME, COR, PESO, CIDADE
291
De fato, se a varivel de relao R satisfaz DF A * B e se
A no uma chave candidata,* ento R ter alguma
redundncia. Por exemplo, no caso da varivel de relao FCP,
a DF F# * CIDADE implica que o fato de um determinado
fornecedor estar localizado em uma dada cidade aparecer
vrias vezes, em geral (veja a Figura 10.1, que contm uma
ilustrao). Voltaremos a esse ponto e o discutiremos em
detalhes no prximo captulo.
Agora, mesmo se limitarmos nossa ateno s DFs que valem por
todo tempo, o conjunto completo de DFs para uma dada varivel
de relao ainda pode ser muito grande, como sugere o exemplo
de FCP. (Exerccio: enuncie o conjunto completo de DFs
satisfeitas pela varivel de relao FCP.) Gostaramos de
encontrar algum modo de reduzir esse conjunto a um tamanho
administrvel e, de fato, a maior parte do restante deste
captulo trata exatamente dessa questo.
Por que esse objetivo desejvel? Uma razo que (como j
foi dito) as DFs representam restries de integridade e,
portanto, o SGBD precisa impor essas restries. Assim, dado
um conjunto particular S de DFs, desejvel encontrar algum
outro conjunto Tque seja (no caso ideal) muito menor que Se
tenha a propriedade de toda DF em S ser implicada pelas DFs
em T. Se tal conjunto T puder ser encontrado, ser suficiente
o SGBD impor apenas as DFs em T, e as DFs em S sero ento
impostas automaticamente. Desse modo, o problema de encontrar
esse conjunto T de considervel interesse prtico.
10.3 DEPENDNCIAS TRIVIAIS E NO TRIVIAIS
Nota: no restante deste captulo, abreviaremos ocasionalmente
dependncia funcional simplesmente como dependncia.
Faremos o mesmo para funcionalmente dependente de,
determina funcional- mente etc.
Um modo evidente de reduzir o tamanho do conjunto de DFs com
que precisamos lidar eliminar as dependncias triviais. Uma
dependncia trivial se no puder deixar de ser
satisfeita. Apenas uma das DFs mostradas na seo anterior
para a varivel de relao FCP era trivial nesse sentido, ou
seja, a DF:
{ F#, P# } * F#
Na verdade, uma DF trivial se e somente se o lado direito
um subconjunto (no necessariamente um subconjunto prprio)
do lado esquerdo.
Como o nome implica, dependncias triviais no so muito
interessantes na prtica; em geral, estamos mais interessados
em dependncias no triviais (que so, claro, exatamente
aquelas que no so triviais), porque so as nicas que
correspondem a restries de integridade genunas. Porm,
quando estamos lidamos com a teoria formal, temos de levar em
considerao todas as dependncias, tanto as triviais quanto
as no triviais.
10.4 FECHO DE UM CONJUNTO DE DEPENDNCIAS
J sugerimos que algumas DFs podem implicar outras. Como um
exemplo simples, a DF:
F#, P# } * { CIDADE, QDE
implica as duas DFs a seguir:
F#, P# } CIDADE
{ F#, P# } * QDE
Como um exemplo mais complexo, vamos supor que temos uma
varivel de relao R com trs atributos A, B e C, tais que
as DFs A + B e B * C so ambas vlidas paraR. Ento,
fcil ver que a DF A * C
tambm vlida paraR. Aqui, a DF A * C um exemplo de DF
transitiva dizemos que C depende de A
transitivamente, atravs de B.
*Alm disso, a DF no trivial (consulte a Seo 10.3), A
no uma superchave (consulte a Seo 10.5) e R contm pelo
menos 292 duas tuplas.
O conjunto de todas as DFs implicadas por um determinado
conjunto S de DFs chamado fecho de S, representando por S.
E claro que precisamos de um algoritmo que (pelo menos em
princpio) nos permita calcular S a partir de S. A primeira
abordagem para solucionar esse problema surgiu em um artigo
de Armstrong [10.1], que forneceu um conjunto de regras de
inferncia (mais habitualmente chamadas axiomas de Armstrong)
pelo qual novas DFs podem ser inferidas a partir de DFs
dadas. Essas regras podem ser enunciadas de vrias maneiras
equivalentes, das quais uma das mais simples apresentada a
seguir. Sejam A, B e C subconjuntos arbitrrios do conjunto
de atributos da varivel de relao R dada e vamos concordar
em escrever (por exemplo) AB para indicar a unio de A e B.
Ento:
1. Reflexividade: se B um subconjunto de A, ento A * B.
2. Aumento: se A > B, ento AC * BC.
3. Transitividade: se A > B e B > C, ento A * C.
Cada uma dessas trs regras pode ser demonstrada diretamente
a partir da definio de dependncia funcional (a primeira
apenas a definio de dependncia trivial, naturalmente).
Ademais, as regras so completas, no sentido de que, dado um
conjunto S de DFs, todas as DFs implicadas por S podem ser
derivadas de S usando-se as regras. Elas tambm so corretas,
no sentido de que nenhuma DF adicional (isto , DFs no
implicadas por S) pode ser derivada. Em outras palavras, as
regras podem ser usadas para derivar com preciso o fecho S.
Vrias regras adicionais podem ser derivadas das trs regras
dadas anteriormente, dentre as quais encontramos as regras da
lista a seguir. Essas regras adicionais podem ser usadas para
simplificar a tarefa prtica de calcular S a partir de S. (No
texto a seguir, D outro subconjunto arbitrrio do conjunto
de atributos de R.)
4. Autodeterminao: A * A.
5. Decomposio: se A > BC, ento A > B e A * C.
6. Unio: seA*BeA*C,entoA--*BC.
7. Composio: se A * B e C * D, ento AC > BD.
Alm disso, na referncia [10.6], Darwen demonstra a seguinte
regra, que ele chama Teorema Geral de Unificao:
8. Se A * B e C * D, ento A c (C B) * BD (onde c
representa a unio e - a diferena de conjuntos).
O nome Teorema Geral de Unificao se refere ao fato de que
vrias das regras anteriores podem ser vistas como casos
especiais [10.6].
Exemplo: vamos supor que temos a relao R com os atributos
A, B, C, D, E, F e as DFs:
A * BC
B*E
CD > EF
Observe que estamos estendendo ligeiramente (mas no de forma
incompatvel) nossa notao ao escrever, por exemplo, BC para
o conjunto que consiste nos atributos B e C (anteriormente,
BC significaria a unio de B e C, onde B e C seriam conjuntos
de atributos). Nota: se preferir um exemplo mais concreto,
considere A como nmero de empregado, B como nmero de
departamento, C como nmero de empregado do gerente, D como
nmero de um projeto orientado por esse gerente (exclusivo
dentro de gerente), E como nome de departamento e F como
porcentagem de tempo designada pelo gerente especificado para
o projeto especificado.
Vamos mostrar agora que a DF AD * F vlida paraR e,
portanto, um membro do fecho do conjunto dado:
1. A *BC (dada)
2. A * C (1, decomposio)
293
3. AD > CD (2, aumento)
4. CD * EF (dada)
5. AD * EF (3 e 4, transitividade)
6. AD * F (5, decomposio) -
10.5 FECHO DE UM CONJUNTO DE ATRIBUTOS
Em princpio, podemos calcular o fecho S de um determinado
conjunto S de DFs por meio de um algo- ritmo que estabelece
aplicar repetidamente as regras da seo anterior, at elas
pararem de produzir novas DFs. Na prtica, existe pouca
necessidade de calcular fecho em si (o que est bem, porque o
algoritmo que acabamos de mencionar no ser muito
eficiente). Porm, nesta seo, mostraremos como calcular um
certo subconjunto do fecho: ou seja, o subconjunto que
consiste em todas as DFs com um certo conjunto (especificado)
Z de atributos do lado esquerdo. Mais exatamente, mostraremos
como, dada uma varivel de relao R, um conjunto Z de
atributos de R e um conjunto S de DFs vlidas para R, podemos
determinar o conjunto de todos os atributos de R que so
funcionalmente dependentes de Z o chamado fecho Z- deZ sob
S.* Um algoritmo simples para calcular esse fecho dado na
Figura 10.2. Exerccio: prove que o algoritmo correto.
FECHO[Z,S] : Z ;
faa `para sempre
para cada DF X * Y em 5
faa
se X # FECHO[Z,S] 1* # = subconjunto de' /
ento FECHO[Z,S] := FECHO[Z.SJ c Y
fim
se FECHO[Z,S] no mudou nesta iterao
ento saia do ioop ; 7* clculo concludo */
fim
FIGURA 10.2 OclculodofechoZdeZsobS
Exemplo: suponhamos que temos a varivel de relao R com
atributos A, B, C, D, E, F, e tambm as DFs:
A >BC
E * CF
B *E
CD * EF
Agora, vamos calcular o fecho {A,B} do conjunto de atributos
{A,B} sob esse conjunto de DFs.
1. Inicializamos o resultado FECHO[Z,S] como {A,B}.
2. Agora, vamos percorrer o loop interno quatro vezes, uma
vez para cada uma das DFs dadas. Na primeira iterao (para a
DF A * BC), vemos que o lado esquerdo de fato um
subconjunto de FECHO[Z,Sj como calculamos at agora; assim,
acrescentamos atributos (B e) C ao resultado. Agora,
FECHO[Z,S1 o conjunto {A,B,C}.
*0 conjunto de DFs com Z como lado esquerdo o conjunto que
consiste em todas as DFs da forma Z * Z', onde Z' algum
subconjunto de Z+. 0 fecho S+ do conjunto S original ento
a unio de todos esses conjuntos de DFs, tomados sob todos os
294 conjuntos de atributos Z possveis.
3. Na segunda iterao (para a DF E > CF), vemos que o lado
esquerdo no um subconjunto do resultado calculado at
agora, o qual permanece ento inalterado.
4. Na terceira iterao (para a DF B > E), acrescentamos E
ao FECHO[Z,S1, que agora tem o valor {A,B, C,E }.
5. Na quarta iterao (para a DF CD * EF), FECHO [Z,S]
permanece inalterado.
6. Agora, novamente percorremos o ioop interno quatro vezes.
Na primeira iterao, o resultado no muda; na segunda, ele
se expande para {A,B,C,E,F}; na terceira e na quarta, ele no
muda.
7. Agora, vamos percorrer de novo o loop interno quatro
vezes. FECHO[Z,S] no muda, e todo o processo termina com
{A,B}+ = {A,B,C,E,F}. -
Um importante corolrio do que foi dito : dado um conjunto 5
dc DFs, podemos saber facilmente se uma DF X * Y decorre de
S porque essa DF ocorrer se e somente se Y for um
subconjunto do fecho X de X sob S. Em outras palavras, agora
temos um modo simples de determinar se uma dada DF X Y est
no fecho S de S.
Outro corolrio importante dado a seguir. Vimos no Captulo
8 que uma superchave para uma varivel de relao R um
conjunto de atributos de R que inclui alguma chave candidata
de R como subconjunto no necessariamente um subconjunto
prprio, claro. Agora, decorre imediatamente da definio
que as superchavcs para uma dada varivel de relao R so
exatamente os subconjuntos K dos atributos de R, tais que a
DF:
K*A
vlida para todo atributo A de R. Em outras palavras, K
uma superchave se e somente se o fecho K de
K sob o conjunto de DFs dado exatamente o conjunto de
todos os atributos de R (e K ser uma chave
candidata se e somente se for uma superchave irredutvel).
10.6 CONJUNTOS IRREDUTIVEIS DE DEPENDNCIAS
Sejam Si e S2 dois conjuntos de DFs. Se toda DF implicada por
Si for implicada por S2 isto , se S1
for um subconjunto de S2 diremos que S2 uma cobertura
para Si.' O significado dessa afirmao
que, se o SGBD impuser as DFs em S2, ento ele estar impondo
automaticamente as DFs em Si.
Em seguida, se S2 uma cobertura para SI e Si uma
cobertura para S2 isto , se S1 = S2 dizemos que Si e S2
so equivalentes. E claro que, sendo Si e S2 equivalentes, se
o SGBD impuser as DFs em S2, ele estar automaticamente
impondo as DFs em Si, e vice-versa.
Agora definimos um conjunto S de DFs como irredutvel** se e
somente se ele satisfaz s trs propriedades seguintes:
1. O lado direito (o dependente) de cada DF em 5 contm
apenas um atributo (ou seja, ele um conjunto unitrio).
2. O lado esquerdo (o determinante) de cada DF em 5 por sua
vez irredutvel significando que nenhum atributo pode ser
descartado do determinante sem mudar o fecho S (isto , sem
converter S em algum conjunto no equivalente a S). Diremos
que uma DF desse tipo irredutvel esquerda.
3. Nenhuma DF em 5 pode ser descartada de 5 sem alterar o
fecho S (isto , sem converter 5 em algum conjunto no
equivalente a S).
A propsito, sobre os itens 2 e 3 anteriores, observe com
ateno que no necessrio conhecer exatamente qual o
fecho S para saber se ele ser alterado no caso de algo ser
descartado. Por exemplo, considere a j familiar varivel de
relao de peas P. As DFs a seguir (entre outras) so
vlidas para essa varivel de relao:
*Alguns autores empregam o termo cobertura para denotar o
que chamaremos (daqui a pouco) de conjunto equivalente.
**Habitualmente chamado mnimo ou minimal na literatura. 295
P# * PNOME
P# * COR
P# * PESO
P# * CIDADE
fcil perceber que esse conjunto de DFs irredutvel: o
lado direito um atributo nico em cada caso, por sua vez, o
lado esquerdo obviamente irredutvel e nenhuma das DFs pode
ser descartada sem alterar o fecho (isto , sem a perda de
alguma informao). Em contraste, os conjuntos de DFs a
seguir
no so irredutveis:
1. P# * { PNOME, COR } : O lado direito da primeira DF nesse
caso no um conjunto unitrio.
P# * PESO
P# CIDADE
2. { P#, PNOME } + COR : A primeira DF nesse caso pode ser
simplificada descartando-se PNOME do
P# * PNOME lado esquerdo sem alterar o fecho (ou seja, ela
no irredutvel esquerda).
P# , PESO
P# * CIDADE
1 P# * P# : Aqui, a primeira DF pode ser descartada sem
alterar o fecho.
P# > PNOME
P# * COR
P# * PESO
P# > CIDADE
Afirmamos agora que, para todo conjunto de DFs, existe pelo
menos um conjunto equivalente que irredutvel. Na verdade,
isso fcil de ver. Seja S o conjunto original de DFs.
Graas regra de decomposio, podemos supor sem perda de
generalidade que toda DF em S tem um lado direito unitrio.
Em seguida, para cada DF f em S, examinamos cada atributo A
no lado esquerdo de f; se a eliminao deA do lado esquerdo
de f no tiver nenhum efeito sobre o fecho S, eliminamos A do
lado esquerdo de f. Ento, para cada DF f restante em S, se a
eliminao de f de S no tiver nenhum efeito sobre o fecho S,
eliminamos f de S. O conjunto final s irredutvel e
equivalente ao conjunto S original.
Exemplo: vamos supor que temos a varivel de relao R com
atributos A, B, C, D e as DFs:
A > BC
A *8
AB * C
AC * D
Agora, calculamos um conjunto irredutvel de DFs que
equivalente a esse conjunto dado.
1. O primeiro passo reescrever as DFs de modo que cada uma
tenha um lado direito unitrio:
A *8
A >C
B*C
A B
AB * C
AC * D
Observamos imediatamente que a DF A > B ocorre duas vezes;
assim, uma ocorrncia pode ser eliminada.
2. Em seguida, o atributo C pode ser eliminado do primeiro
membro (do lado esquerdo) da DF AC * D, porque temos A + C,
ento A > AC por aumento, e tambm temos AC * D, e ento A
* D por transitividade; portanto, o C no lado esquerdo de AC
* D redundante.
296
3. Em seguida, observamos que a DF AB C pode ser eliminada
porque novamente temos A * C, logo AB * CB por aumento, e
ento AB * C por decomposio.
4. Finalmente, a DF A C implicada pelas DFs A * B e B *
C, e tambm pode ser eliminada. Ento, restam:
A *B
B*C
A *D
Esse conjunto e irredutvel. -
Um conjunto 1 de DFs que irredutvel e equivalente a algum
outro conjunto S de DFs chamado equivalente irredutvel a
S. Assim, dado algum conjunto S especfico de DFs que
precisem ser impostas, suficiente para o sistema encontrar
e impor as DFs de um equivalente irredutvel 1 em vez de S
(e, vale repetir, no h necessidade de calcular o fecho S+
para calcular um equivalente irredutvel 1). Porm, devemos
deixar claro que um dado conjunto de DFs no tem
necessariamente um equivalente irredutvel nico (veja o
Exerccio 10.12).
10.7 RESUMO
Uma dependncia funcional (DF) um relacionamento muitos-
para-um entre dois conjuntos de atributos de uma determinada
varivel de relao. Sendo dada uma varivel de relao R,
dizemos que a DF A
* B (onde A e B so subconjuntos do conjunto de atributos de
R) vlida para R se e somente se, sempre que duas tuplas
deR tm o mesmo valor para A, elas tambm tm o mesmo valor
para B. Toda varivel de relao necessariamente satisfaz a
certas DFs triviais; uma DF trivial se e somente se o lado
direito (o dependente) um subconjunto do lado esquerdo (o
determinante).
Certas DFs implicam outras. Dado um conjunto S de DFs, o
fecho S desse conjunto o conjunto de todas as DFs
implicadas pelas DFs em S. S necessariamente um
superconjunto de S. As regras de inferncia de Armstrong
fornecem uma base correta e completa para se calcular S a
partir de S (porm, em geral, no efetuamos realmente esse
clculo). Vrias outras regras teis podem ser derivadas
facilmente das regras de Armstrong.
Dado um subconjunto Z do conjunto de atributos da varivel de
relao R e um conjunto S de DFs vlidas para R, o fecho Z de
Z sob S o conjunto de todos os atributos A de R tais que a
DF Z * A um elemento de S. Se Z consiste em todos os
atributos de R, dizemos que Z uma superchave para R (e uma
chave candidata uma superchave irredutvel). Demos um
algoritmo simples para se calcular Z a partir de Z e S, e
assim um modo simples de determinar se uma dada DF X * Y
um elemento de S (X * Y um elemento de S se e somente se Y
um subconjunto de Xi.
Dois conjuntos de DFs Si e 52 so equivalentes se e somente
se eles so coberturas um para o outro, isto , se e somente
se S1 = S2. Todo conjunto de DFs equivalente a pelo menos
um conjunto irredutvel. Um conjunto de DFs irredutvel se
(a) toda DF no conjunto tem um lado direito unitrio, (b)
nenhuma DF no conjunto pode ser descartada sem mudar o fecho
do conjunto, e (c) nenhum atributo pode ser descartado do
lado esquerdo de qualquer DF no conjunto sem mudar o fecho do
conjunto. Se 1 um conjunto irredutvel equivalente a 5, a
imposio das DFs em 1 impor automaticamente as DFs em S.
Concluindo, observamos que muitas das idias anteriores podem
ser estendidas a restries de integridade em geral, no
apenas a DFs. Por exemplo, em geral verdade que:
- Certas restries so triviais.
- Certas restries implicam outras.
- O conjunto de todas as restries implicadas por um dado
conjunto pode ser considerado como o fecho do conjunto dado.
297
- A questo de saber se uma restrio especfica est em um
certo fecho isto , se a restrio especfica implicada
por certas restries dadas um problema prtico
interessante.
- A questo de encontrar um equivalente irredutvel para um
certo conjunto de restries um problema prtico
interessante.
O que torna as DFs em particular muito mais fceis de lidar
que as restries de integridade em geral a existncia de
um conjunto de regras de inferncia para DFs correto e
completo. As sees Referncias e bibliografia deste
captulo e do Captulo 12 oferecem referncias para artigos
que descrevem vrios outros tipos especficos de restries
MVDs, JDs e INDs para os quais tambm existem esses
conjuntos de regras de inferncia. No entanto, neste livro,
optamos por no dar a esses outros tipos de restries um
tratamento to extenso e to formal quanto o que acabamos de
dar s DFs.
EXERCICIOS
10.1 Seja R uma varivel de relao de grau n. Qual o
nmero mximo de dependncias funcionais a queR poder
satisfazer (triviais e no triviais)?
10.2 O que significa dizer que as regras de inferncia de
Armstrong so corretas? Completas?
10.3 Demonstre as regras de reflexividade, aumento e
transitividade, considerando apenas a definio bsica de
dependncia funcional.
10.4 Demonstre que as trs regras do exerccio precedente
implicam as regras da autodeterminao, decomposio, unio e
composio.
10.5 Demonstre o Teorema Geral de Unificao de Darwen.
Quais das regras dos dois exerccios precedentes voc
utilizou? Que regras podem ser derivadas como casos especiais
do teorema?
10.6 Defina (a) o fecho de um conjunto de DFs; (b) o fecho de
um conjunto de atributos sob um conjunto de DFs.
10.7 Liste todas as DFs satisfeitas pela varivel de relao
de remessas FP
10.8 A varivel de relao R{A,B,C,D,E,F,G} satisfaz s
seguintes DFs:
A * B
BC * DE
AEF * G
Calcule o fecho {A,C} sob esse conjunto de DFs. A DF ACF -
DG implicada por esse conjunto?
10.9 O que significa dizer que dois conjuntos Si e 52 de DFs
so equivalentes?
10.10 O que significa dizer que um conjunto de DFs
irredutvel?
10.11 Aqui esto dois conjuntos de DFs para uma varivel de
relao R{A,B,C,D,E}. Eles so equivalentes?
1. A>B AB*C D*AC D*E
2. A*BC D ,AE
10.12 A varivel de relao R{A,B,C,D,E,F} satisfaz s
seguintes DFs:
AB C
C A
BC * D
ACD *B
BE >C
CE FA
CF BD
D >EF
Encontre um equivalente irredutvel para esse conjunto de
DFs.
10.13 Uma varivel de relao HORRIO definida com os
seguintes atributos:
D Dia da semana (1 a 5)
298 P Perodo no dia (1 a 8)
C Nmero da sala de aula
T Nome do professor
A Nome da aula
A tupla {D:d,P:p,C:c,T:t,A:a} aparece nessa varivel de
relao se e somente se na hora {D:d,P:p} a aula a est sendo
ministrada pelo professor t na sala de aula c. Voc pode
supor que as aulas tm um perodo de durao e que toda aula
tem um nome exclusivo com relao a todas as aulas
ministradas na semana. Quais so as dependncias funcionais
vlidas nessa varivel de relao? Quais so as chaves
candidatas?
10.14 Uma varivel de relao NENDR definida com atributos
NOME (exclusivo), RUA, CIDADE, ESTADO e CEP. Para qualquer
CEP dado, existe apenas uma cidade e estado. Alm disso, para
qualquer rua, cidade e estado dados, h somente um CEP.
Fornea um conjunto irredutvel de DFs para essa varivel de
relao. Quais so as chaves candidatas?
10.15 A varivel de relao R{A,B,C,D,E,F,G,H,I,J} satisfaz
s seguintes DFs:
ABD * E
,IB * G
B *F
c j
cJ * 1
G *H
Esse conjunto irredutvel? Quais so as chaves candidatas?
REFERNCIAS E BIBLIOGRAFIA
10.1 W. W. Armstrong: Dependency Structures of Data Base
Relationships, Proc. IFIP Congress, Estocolmo, Sucia
(1974).
O artigo que primeiro formalizou a teoria de DFs ( a origem
dos axiomas de Armstrong). O artigo tambm d uma
caracterizao precisa de chaves candidatas.
10.2 Marco A. Casanova, Ronald Fagin e Christos H.
Papadimitriou: Inclusion Dependencies and Their Interaction
with Functional Dependencies, Proc. lst ACM SIGACT-SIGMOD
Symposium on Principles of Database Systems, Los Angeles,
Calif. (maro de 1982).
As dependncias de incluso (IND5 inclusion dependencies)
podem ser consideradas uma generalizao de restries
referenciais. Por exemplo, a IND:
FP.F# * F.F#
(no a notao usada no artigo) estabelece que os valores
que aparecem no atributo F# da varivel de relao FP deve
ser um subconjunto do conjunto de valores do atributo F# da
varivel de relao F. Esse exemplo particular de fato uma
restrio referencial, claro; em geral, porm, no h
nenhuma exigncia de que em uma IND o lado esquerdo seja uma
chave estrangeira, ou o lado direito uma chave candidata.
Nota: as INDs tm alguns pontos em comum com DFs pois ambas
representam relacionamentos muitos-para-um; entretanto, as
INDs normalmente abrangem as variveis de relaes enquanto
as DFs no o fazem.
O artigo fornece um conjunto correto e completo de regras de
inferncia para INDs, que podemos enunciar (de modo um pouco
impreciso) desta forma:
1. A-A.
2. SeAB*CD,entoA*CeB D.
3. SeA*BeB---*C,entoA*C.
10.3 R. G. Casey e C. Delobel: Decomposition of a Data Base
and the Theory of Boolean Switching Functions, IBMJ. R&D 17,
Nmero 5 (setembro de 1973).
O artigo mostra que para qualquer varivel de relao dada, o
conjunto de DFs (chamadas relaes funcionais nesse artigo)
satisfeitas por essa varivel de relao pode ser
representado por uma funo booleana de comutao. Alm
disso, essa funo nica no seguinte sentido: as DFs
originais podem ser especificadas de muitos modos
superficialmente diferentes (mas na realidade equivalentes),
cada qual dan- 299
do origem a uma funo booleana superficialmente diferente
mas todas essas funes podem ser reduzidas pelas leis da
lgebra booleana mesma forma cannica. O problema de
decompor a varivel de relao original (isto , de uma forma
sem perdas consulte o Captulo 11) ento demonstrado como
logicamente equivalente ao bem compreendido problema da
lgebra booleana de encontrar um conjunto de cobertura de
implicaes de nmeros primos para a funo booleana
correspondente a essa varivel de relao juntamente com suas
DFs. Ento, o problema original pode ser transformado em um
problema equivalente na lgebra booleana e tcnicas
conhecidas podero ser aplicadas a ele.
Esse artigo foi o primeiro de vrios a traar paralelos entre
a teoria da dependncia e outras disciplinas. Consulte, por
exemplo, a referncia [10.81 a seguir, e tambm vrias
referncias no Captulo 12.
10.4 E. F. Codd: Further Normalization of the Data Base
Relational Model, em Randall J. Rustin (editor), Data Base
Systems, Courant Com puter Science Symposia Series 6,
Englewood Cliffs, N.J.: Prentice-Hall (1972)
O artigo que primeiro introduziu o conceito de dependncia
funcional (alm de um memorando interno da IBM anterior). A
normalizao avanada do ttulo se refere disciplina
especfica de projeto de bancos de dados discutida no
Captulo 11; o propsito do artigo foi, muito
especificamente, mostrar a aplicabilidade das idias de
dependncia funcional ao problema do projeto de bancos de
dados. (De fato, as DFs representaram a primeira abordagem
cientfica para esse problema.) Porm, a idia de dependncia
funcional tem mostrado servir a uma aplicao muito mais
ampla.
10.5 E. F. Codd: Normalized Data Base Structure: ABrief
Tutorial, Proc. 1971 ACM SIGFIDET Workshop on Data
Description, Access, and Control, San Diego, Calif. (novembro
de 1971).
Uma introduo em forma de tutorial s idias da referncia
[10.41.
10.6 Hugh Darwen: The Role of Functional Dependence in Query
Decomposition em J. C. Date e Hugh Darwen, Relational
Database Writings 1989-1991. Reading, Mass.: Addison-Wesley
(1992).
Esse artigo fornece um conjunto de regras de inferncia pelas
quais as DFs que so vlidas para uma varivel de relao
derivada arbitrria podem ser inferidas a partir das que so
vlidas para a(s) varivel(is) de relao(es) da(s) qual(is)
a varivel de relao em questo derivada. O conjunto de
DFs assim inferido pode ento ser inspecionado, a fim de
determinar chaves candidatas para a varivel de relao
derivada, fornecendo desse modo as regras de inferncia de
chaves candidatas mencionadas de passagem muito rapidamente
nos Captulos 8 e 9. O artigo mostra como essas vrias regras
podem ser utilizadas para proporcionar melhorias
significativas no desempenho, na funcionalidade e na
facilidade de utilizao dos SGBDs.
10.7 Hugh Darwen: OObservations [sicj of a Relational
Bigot, apresentao para o BCS Special Interest Group on
Formal Aspects of Computing Science, Londres, Reino Unido (21
de dezembro de 1990).
10.8 R. Fagin: Functional Dependencies in a Relational
Database and Propositional Logic, IBMJ. R&D 21, Nmero 6
(novembro de 1977).
Mostra que os Axiomas de Armstrong [10.11 so estritamente
equivalentes ao sistema de declaraes de implicao na
lgica proposicional. Em outra palavras, o artigo define um
mapeamento entre DFs e declaraes proposicionais, e depois
mostra que uma dada DF f uma consequncia de um determinado
conjunto S de DFs se e somente se a proposio correspondente
a f uma consequncia lgica do conjunto de proposies
correspondente a S.
10.9 Claudio L. Lucchesi e Sylvia L. Osborn: Candidate Keys
for Relations,J. Comp. and Sys. Sciences 17, Nmero 2
(1978).
Apresenta um algoritmo para localizao de todas as chaves
candidatas correspondentes a uma determinada varivel de
relao, dado o conjunto de DFs que valem nessa varivel de
relao.
RESPOSTAS A EXERCICIOS SELECIONADOS
10.1 Uma DF basicamente uma declarao da forma A B, onde A
e B so ambos subconjuntos do conjunto de atributos deR. Como
um conjunto de n elementos tem 2' subconjuntos possveis, A e
B tm cada um 2 valores possveis, e portanto um limite
superior no nmero de DFs possveis 22n
300
10.5
1. A*B (dada)
2. C*D (dada)
3. A B n C (dependncia conjunta, 1)
4. C B * C B (autodeterminao)
5. Au(CB) (BnC)u(CB) (composio,3,4)
6. Au (C B) C (simplificao, 5)
7. Au (C B) D (transitividade, 6, 2)
8. Au(CB) BuD (composio, 1,7)
Isso completa a demonstrao. -
As regras usadas na demonstrao so as indicadas nos
comentrios anteriores. Os itens a seguir so todos casos
especiais do teorema de Darwen: unio, transitividade,
composio e aumento. O mesmo ocorre com a seguinte regra
til:
- SeA*BeAB-*C,entoA--*C.
10.7 O conjunto completo de DFs isto , o fecho para a
varivel de relao FP :
F#, P#, QDE } * { F#, P#, QDE
F#, P#, QDE } * { F#, P#
F#, P#, QDE } - { P#, QDE
F#, P#, QDE } { F#, QDE
{F#P#,QDE}*{F#)
{F#,P#,QDE}*{P#}
{F#,P#,QDE}*{QDE}
F#, P#, QDE } > {
{F#,P#) >{F#,P#,QDE}
{F#,P#}
{F#,P#} *{P#,QDE}
{F#,P#} *{F#,QDE}
{F#,P#} -{F#}
F#, P# } * { P#
{F#,P#} *{QDE}
{F#,P#} *{}
P#, QDE } * { P#, QDE
{P#,QDE} * {P#}
{P#,QDE} * {QDE}
{P#,QDE} * {}
{F#,QDE} - {F#,QDE}
{F#,QDE} * {F#}
{F#,QDE) * {QDE}
{F#,QDE) * {)
{F#}
{F#} - {}
{P#}
{P#} * {}
{QDE) * {QDE}
{QDE} * {}
{} > {} 301
10.8 {A,C} = {A,B,C,D,E}. A resposta para a segunda parte da
pergunta sim.
10.11 Eles so equivalentes. Vamos numerar as DFs do primeiro
conjunto da seguinte maneira:
1. A *B
2. AB*C
3. D *AC
4. 0 * E
Primeiro, 3 pode ser substituda por:
3. O * A e O > C
Em seguida, 1 e 2 juntas implicam que 2 pode ser substituda
por 2.
A *C
Porm, agora temos D * A eA * C; assim, D C implicada
(por transitividade), e ento pode ser descartada, restando:
3. O > A
O primeiro conjunto de DFs assim equivalente ao seguinte
conjunto irredutvel:
A *B
A *C
O >A
D*E
O segundo conjunto dado de DFs:
A * BC
D * AE
sem dvida, tambm equivalente a esse conjunto irredutvel.
Desse modo, os dois conjuntos dados sao equivalentes. -
10.12 O primeiro passo reescrever o conjunto dado de tal
modo que toda DF tenha um lado direito unitrio:
1. AB *C
2. C *A
3. BC >0
4. ACO > B
5. BE *C
6. CE *A
7. CE *F
8. CF >8
9. CF -D
10. D >E
11. O F
Agora:
- 2 implica 6; ento, podemos descartar 6.
- 8 implica CF > BC (por aumento) que, com 3, implica CF >
D (por transitividade); portanto, podemos descartar 10.
302
- 8 implica ACF + AB (por aumento) e 11 implica ACD * ACF
(por aumento), e ento ACD * AB (por transitividade), e
assim ACD B (por decomposio); logo, podemos descartar 4.
No possvel nenhuma outra reduo, e assim ficamos com o
seguinte conjunto irredutvel:
AB *C
C *A
BC *0
BE *C
CE *F
CF *B
D *E
O F
Outra alternativa :
- 2 implica CD * ACD (por composio) que, com 4 implica CD
* B (por transitividade); assim, podemos substituir 4 por CD
* B.
- 2 implica 6; ento, podemos descartar 6 (como antes).
- 2 e 10 implicam CF * AD (por composio), que implica CF
* ADC (por aumento) que, com (a original) 4 implica CF > B
(por transitividade); ,logo, podemos descartar 8.
No possvel nenhuma outra reduo, e ento ficamos com o
seguinte conjunto irredutvel:
AB *C
C >A
BC >0
CD *8
BE *C
CE *F
CF *0
D *E
O *F
Portanto, observe que h dois equivalentes irredutveis
distintos para o conjunto original de DFs.
10.13 As chaves candidatas so L, DPC e DPT.
10.14 Abreviando NOME, RUA, CIDADE, ESTADO e CEP como N, R,
C, Te Z, respectivamente, temos:
N *RCT RCT>Z Z*CT
Um conjunto irredutvel obviamente equivalente :
N*R N*C N*T RCT>Z Z*C Z*T
A nica chave candidata N.
10.15 No apresentamos uma resposta completa para esse
exerccio, mas nos contentamos com as seguintes observaes.
Primeiro, o conjunto claramente no irredutvel, pois C *
J e CJ * 1 juntas implicam C > 1. Segundo, uma superchave
bvia {A,B,C,D,G,J} (isto , o conjunto de todos os
atributos mencionados no lado esquerdo de cada uma das DFs
dadas). Podemos eliminarJ desse conjunto, porque C * J, e
podemos tambm eliminar G porqueAB * G. Tendo em vista que
nenhum dos elementosA, B, C, D aparece no lado direito de
qualquer das DFs dadas, decorre que {A,B,C,D} uma chave
candidata.
303