Você está na página 1de 48

CAPITULO 23

Sistemas baseados em lgica


23.1 INTRODUO
Em meados da dcada de 1980, uma nova e significativa
tendncia comeou a emergir na comunidade de pesquisadores de
bancos de dados, em direo a sistemas de bancos de dados
baseados em lgica. Expresses como banco de dados lgico,
SGBD inferencial, SGBD especialista, SGBD dedutivo, base de
conhecimento, sistema de gerenciamento de base de
conhecimento (SGBC), lgica como modelo de da- dos,
processamento de consultas recursivas, etc., etc., comearam
a aparecer na literatura de pesquisa. Contudo, nem sempre
fcil relacionar tais termos e as idias que eles representam
com termos e conceitos familiares de bancos de dados, nem
entender a motivao subjacente pesquisa de uma perspectiva
de banco de dados tradicional. Existe uma clara necessidade
de explicao de toda essa atividade em ter- mos de idias e
princpios de bancos de dados convencionais. Este captulo
uma tentativa de atender a essa necessidade.
Portanto, nosso objetivo explicar o que so os sistemas
baseados em lgica, do ponto de vista de algum familiarizado
com a tecnologia tradicional de bancos de dados, mas talvez
no muito familiariza- do com a lgica em si. Por isso,
medida que cada nova idia de lgica for introduzida, ns a
explicaremos em termos convencionais de bancos de dados, onde
for possvel ou apropriado. (Naturalmente, j discutimos
certas idias de lgica neste livro, em especial na nossa
descrio de clculo relacional no Captulo 7. O clculo
relacional se baseia diretamente na lgica. Porm, como
veremos, h muito mais detalhes sobre sistemas baseados em
lgica que apenas o clculo relacional.)
A estrutura deste captulo a seguinte: Depois desta seo
introdutria, a Seo 23.2 fornece uma breve viso geral do
assunto, com um pequeno histrico. Em seguida, as Sees 23.3
e 23.4 oferecem um tratamento elementar (e muito
simplificado), do clculo proposicional e do clculo de
predicados, respectivamente. Depois, a Seo 23.5 introduz a
chamada viso da teoria da prova de um banco de dados, e a
Seo 23.6 se baseia nas idias dessa seo para explicar o
que se entende pela expresso SGBD dedutivo. A Seo 23.7
discute algumas abordagens para o problema do processamento
de consultas recursivas. Para concluir, a Seo 23.8 oferece
um resumo e algumas observaes finais.
23.2 VISO GERAL
A pesquisa sobre o relacionamento entre a teoria de bancos de
dados e a lgica remonta pelo menos ao final da dcada de
1970, se no antes veja, por exemplo, as referncias
[23.5], [23.7] e [23. 13]. Contudo, o principal estmulo para
a recente expanso considervel do interesse no assunto
parece ter sido a publicao em 1984 de um artigo fundamental
de Reiter [23.15]. Nesse artigo, Reiter caracterizou a
percepo tradicional de sistemas de bancos de dados como
sendo de teoria dos modelos por meio da qual, entendemos
informalmente que:
661
a. O banco de dados em qualquer instante determinado pode ser
visto como um conjunto de relaes explcitas (isto ,
bsicas), cada qual contendo um conjunto de tuplas
explicitas.
h. A execuo de uma consulta pode ser considerada como a
avaliao de alguma frmula especificada (isto , expresso
com valor verdade) sobre essas relaes e tuplas explcitas.
Nota: definiremos a expresso teoria dos modelos com maior
preciso na Seo 23.5.
Em seguida, Reiter continuou a arguir que era possvel uma
viso alternativa da teoria da prova e que, de fato, essa
viso era prefervel sob certos aspectos. Nessa viso
alternativa (falando-se mais uma vez em termos informais):
a. O banco de dados em qualquer instante determinado visto
como um conjunto de axiomas (axiomas `bsicos,
correspondentes a valores em domnios e tuplas em relaes
bsicas, alm de certos axiomas dedutivos, a serem
discutidos).
b. A execuo de uma consulta considerada como a
comprovao de que alguma frmula especificada uma
consequncia lgica desses axiomas em outras palavras, a
prova de que ela um teorema.
Nota: tambm definiremos a expresso teoria da prova com
maior preciso na Seo 23.5 em- bora possa ser til
indicar agora que a viso da teoria da prova muito prxima
nossa caracterizao de um banco de dados apresentada no
Captulo 1, Seo 1.3 (na subseo Dados e modelos de
dados), como uma coleo de proposies verdadeiras [1.21.
Aqui cabe um exemplo. Considere a seguinte consulta de
clculo relacional sobre o banco de dados habitual de
fornecedores e peas:
FPX WHERE FPX.QDE > 250
( Aqui, FPX uma varivel de intervalo que varia sobre
remessas, claro.) Na interpretao tradicional isto , na
teoria dos modelos examinamos as tuplas de remessas uma a
uma, avaliando a frmula QDE
> 250' para cada tupla; o resultado da consulta consiste
ento apenas das tuplas de remessas para as quais a frmula
avaliada como verdadeira. Em contraste, na interpretao da
teoria da prova, considera- mos as tuplas de remessas (e mais
alguns outros itens) como axiomas de uma certa teoria
lgica; em se- guida, aplicamos tcnicas de demonstrao de
teoremas, a fim de determinar para quais valores possveis da
varivel de intervalo FPX a frmula FPX.QDE > 250 uma
consequncia lgica desses axiomas dentro dessa teoria.
Ento, o resultado da consulta consiste apenas nesses valores
particulares de FPX.
E claro que esse exemplo extremamente simples na verdade,
to simples que voc poderia ter dificuldades para perceber
qual realmente a diferena entre as duas interpretaes.
Porm, o importante que o mecanismo de raciocnio empregado
na tentativa de prova (na interpretao da teoria da prova)
pode naturalmente ser muito mais sofisticado que nosso
exemplo simples pode mostrar; de fato, ele pode manipular
certos problemas que esto alm dos recursos dos sistemas
relacionais clssicos, como veremos. Alm disso, a
interpretao da teoria da prova inclui um conjunto atraente
de recursos adicionais [23.151:
. Uniformidade de representao: ela nos permite definir uma
linguagem de banco de dados na qual valores de domnios,
tuplas em relaes bsicas, axiomas dedutivos, consultas e
restries de integridade so todos representados
essencialmente do mesmo modo uniforme.
. Uniformidade operacional: ela fornece uma base para um
ataque unificado a uma variedade de problemas aparentemente
distintos, inclusive a otimizao de consultas (em especial a
otimizao semntica), a imposio da restrio de
integridade, projeto de bancos de dados (teoria da
dependncia), provas de correo de programas e outros
problemas.
. Modelagem semntica: ela oferece uma boa base sobre a qual
se pode elaborar uma variedade de extenses semnticas para
o modelo bsico.
. Aplicao estendida: finalmente, ela oferece uma base para
se lidar com certas questes difceis de tratar em abordagens
clssicas por exemplo, informaes disjuntivas (como O
fornecedor
662 P5 fornece a pea P1 ou a pea P2, mas no se sabe
qual).
Axiomas dedutivos
Oferecemos uma explicao breve e preliminar do conceito, j
mencionado algumas vezes, de axioma dedutivo (tambm
conhecido como regra de inferncia). Basicamente, um axioma
dedutivo uma regra pela qual, dados certos fatos, somos
capazes de deduzir fatos adicionais. Por exemplo, da- dos os
fatos Anne me de Betty e Betty me de Celia, h um
axioma dedutivo bvio que nos permite deduzir que Anne av
de Celia. Assim, para irmos um pouco mais adiante, poderamos
imaginar um SGBD dedutivo no qual os dois fatos dados fossem
representados como tuplas em uma relao; portanto:
Esses dois fatos representam axiomas bsicos para o sistema.
Vamos supor tambm que o axioma dedutivo tenha sido enunciado
formalmente para o sistema como algo semelhante a:
IF ME_DE ( x, y
AND ME_DE ( y, z
THEN AV_DE ( x, z )
( em uma sintaxe hipottica e simplificada). Agora, o sistema
pode aplicar a regra expressa no axioma de- dutivo aos dados
representados pelos axiomas bsicos, de uma maneira que ser
explicada na Seo 23.4, a fim de deduzir o resultado AVO_DE
(Anne, Celia). Assim, os usurios podem formular consultas
como Quem a av de Celia? ou Quem so as netas de Anne?
(ou, mais precisamente, De quem Anne av?)
Agora, vamos tentar relacionar as idias anteriores aos
conceitos tradicionais de bancos de dados. Em termos
tradicionais, o axioma dedutivo pode ser imaginado como uma
definio de viso por exemplo:
VAR AV_DE VIEW
( MX.ME AS AV, MY.FILHA AS NETA
WHERE MX.FILHA = MY.ME
(deliberadamente, usamos aqui um estilo de clculo
relacional; MX e MY so variveis de intervalos que variam
sobre MAEDE). Consultas como as que mencionamos podem agora
ser postas em termos desta viso:
GX.AV WHERE GX.NETA = NOME ( `CeNa
GX.NETA WHERE GX.AV = NOME ( `Anne'
(GX uma varivel de intervalo que varia sobre AV_DE).
Ento, at agora tudo o que fizemos foi apresentar uma
sintaxe diferente e uma interpretao diferente para um
material j familiar. Porm, veremos nas prximas sees que
existem de fato algumas di- ferenas significativas, no
ilustradas por esses exemplos simples, entre sistemas
baseados em lgica e SGBDs mais tradicionais.
23.3 CLCULO PROPOSICIONAL
Nesta seo e na seo seguinte apresentaremos uma breve
introduo a algumas idias bsicas da lgica.
Esta seo considera o clculo proposicional e a prxima
examina o clculo de predicados. Porm, obser- 663
ME_DE ME
Anne
FILHA
Betty
Betty Celia
vamos de imediato que, no que nos diz respeito, o clculo
proposicional no to importante como um fim em si mesmo; o
principal objetivo desta seo , na realidade, apenas
pavimentar o caminho para uma compreenso da prxima seo.
Consideradas juntas, as duas sees tm a finalidade de
oferecer uma base sobre a qual ser elaborado o restante do
captulo.
Consideramos que o leitor est familiarizado com os conceitos
bsicos da lgebra booleana. Para fins de referncia,
enunciamos certas leis da lgebra booleana de que
necessitaremos mais tarde:
. Leis distributivas:
fAND (gOR li ) (fANDg) OR (fANDh ) ta
fOR (gANDh ) (fOR g ) AND (fOR h
. Leis de De Morgan:
NOT ( 1 AND g ) NOT f OR NOT g
NOT ( f OR g ) NOT f AND NOT g
Aqui, f, g e h so expresses booleanas (de valor verdade)
arbitrrias.
Agora, vamos nos voltar para a lgica propriamente dita. A
lgica pode ser definida como um mtodo formal de raciocnio.
Por ser formal, ele pode ser usado para executar tarefas
formais, tais como verificar a validade de um argumento
examinando apenas a estrutura desse argumento como um
sequncia de passos (isto , sem prestar ateno ao
significado desses passos). Em particular, claro, por ser
formal, ele pode ser mecanizado ou seja, pode ser
programado e, portanto, aplicado pela mquina.
o clculo proposicional e o clculo de predicados so dois
casos particulares da lgica em geral (na verdade, o primeiro
um subconjunto do outro). Por sua vez, o termo clculo
apenas um termo geral que se refere a qualquer sistema de
computao simblica; nos casos particulares que examina-
mos, a espcie de computao envolvida a do valor verdade
verdadeiro ou falso de certas frmulas ou expresses.
Termos
Comeamos pela suposio de que temos alguma coleo de
objetos, chamados constantes, sobre os quais podemos fazer
declaraes de vrias espcies. No jargo de bancos de dados,
as constantes so os valo- res nos domnios subjacentes, e
uma declarao poderia ser, por exemplo, uma expresso
condicional como 3 > 2. Definimos um termo como uma
declarao que envolve essas constantes e:
a. No envolve quaisquer conectivos lgicos (ver a seguir) ou
est colocada entre parnteses.
b. avaliada inequvoco como verdadeira ou falsa.
Por exemplo, O fornecedor Fi est localizado em Londres e
O fornecedor F2 est localizado em Londres e O fornecedor
Fi fornece a pea P1, so todos termos (pois essas
expresses so avaliadas como verdadeira, falsa e verdadeira,
respectivamente, considerando-se nossos exemplos de valores
de dados usuais). Em contraste, O fornecedor Fi fornece
alguma pea p (onde p uma varivel) e O for- necedor F5
fornecer a pea P1 em algum momento no futuro no so
termos, porque no so avalia- dos de forma inequvoca como
verdadeiro ou falso.
Frmulas
Em seguida, definimos o conceito de frmula. As frmulas do
clculo proposicional e, mais geralmente, do clculo de
predicados so usadas em sistemas de bancos de dados na
formulao de consultas (entre muitas outras coisas).
664
<frmul a>
: : <termo>
NOT <termo>
<termo> AND <frmula>
<termo> OR <frmula>
<termo> = <frmula>
<termo>
:: <frmula atmica>
1 ( <frmula>
As frmulas so avaliadas de acordo com os valores verdade de
seus termos constituintes e com as tabelas verdade usuais
correspondentes aos conectivos. Surgem diversos pontos
importantes:
1. Uma <frmula atmica> uma expresso de valor verdade que
no envolve nenhum conectivo e no est contida entre
parnteses.
2. O smbolo =`- representa o conectivo de implicao
lgica. A expresso f = g definida como logicamente
equivalente expresso NOT fORg. Nota: usamos IF ... THEN
... para esse conectivo no Captulo 7 e em outros captulos
anteriores.
3. Adotamos as regras de precedncia usuais para os
conectivos (NOT, depois AND, depois OR, de- pois =), a fim de
reduzir o nmero de parnteses necessrios para expressar uma
ordem de avalia- o desejada.
4. Uma proposio apenas uma <frmula > conforme definida
anteriormente (empregamos o ter- mo frmula por coerncia
com a prxima seo).
Regras de inferncia
Agora, chegamos s regras de inferncia do clculo
proposicional. Existem muitas dessas regras. Cada uma delas
uma declarao da frmula:
1 = g
( onde o smbolo 1 pode ser lido como sempre acontece que;
observe que precisamos de algum smbolo como esse para
podermos criar metadeclaraes, isto , declaraes sobre
declaraes). Aqui esto alguns exemplos de regras de
inferncia:
1. (IANDg) =i..f
2. f=' (fORg)
3. = ( (f=g) AND (g='.h ) ) = (f='-h )
4. (IAND (f=g) ) =g
Nota: essa ltima particularmente importante. Ela chamada
regra do modus ponens. Informal- mente, ela afirma que, se f
verdadeira e se f implica g, ento g tambm deve ser
verdadeira. Por exemplo, dado o fato de que a. e b. a seguir
so ambas verdadeiras
a. No tenho dinheiro;
b. Se no tenho dinheiro, ento terei de lavar pratos;
ento, podemos inferir que c. tambm verdadeira:
c. Terei de lavar pratos.
Continuando com as regras de inferncia:
5. (f=I.. (gi.h) ) =( (fANDg) =h)
6. ( (fORg ) AND ( NOTgORh ) ) = (fORh
665
Nota: essa tambm particularmente importante. Ela chamada
regra de resoluo. Teremos algo mais a dizer sobre ela na
seo Provas a seguir e novamente na Seo 23.4.
Provas
Agora, temos os instrumentos necessrios para lidar com
provas formais (no contexto do clculo proposicional). O
problema da prova o problema de determinar se alguma
frmula g dada (a concluso) uma consequncia lgica de
algum conjunto dado de frmulas [1, [2, ..., fn (as
premissas) em smbolos:
fl,f2, ...,fn g
(lida como g dedutvel a partir de [1, [2, ..., fn;
observe o uso de outro smbolo metalingustico, +). O mtodo
bsico de procedimento conhecido como encadeamento direto
(forward chaining). O encadeamento direto consiste na
aplicao das regras de inferncia repetidamente s
premissas, e a frmulas deduzidas a partir dessas premissas,
e a frmulas deduzidas a partir dessas frmulas etc. etc.,
at a concluso ser deduzida; em outras palavras, o processo
se encadeia de forma direta das premissas concluso.
Porm, existem diversas variaes sobre esse tema bsico:
1 . Adoo de uma premissa: se g da forma p q, adotar p
como uma premissa adicional e mostrar que q dedutvel a
partir das premissas dadas mais p.
2. Encadeamento inverso (backward chaining): em vez de tentar
provarp q, provar a contrapositiva NOT q = NOT p.
3 . Reductio ad absurdum : em vez de tentar provar p = q
diretamente, supor que p e NOT q so ambas verdadeiras e
derivar uma contradio.
4. Resoluo: esse mtodo usa a regra de inferncia de
resoluo (a regra nmero 6 na lista anterior). Discutiremos
a tcnica de resoluo com algum detalhe, pois ela tem
aplicao ampla (em particular, ela tambm generalizada
para o caso de clculo de predicados, como veremos na Seo
23.4).
Primeiro, observe que a regra de resoluo de fato uma
regra que nos permite cancelar subfrmulas; ou seja, dadas as
duas frmulas:
fORg e NOTgORh
podemos cancelar g e NOT g para derivar a frmula
simplificada:
1 OR h
Em particular, dadas f OR g e NOT g (isto , tomando-se h
como verdadeiro), podemos derivar f. Dessa forma, observe que
a regra em geral se aplica a um conjuno (AND) de duas
frmulas, cada
uma das quais uma disjuno (OR) de duas frmulas.
Portanto, para aplicar a regra de resoluo, procedemos da
seguinte maneira. (Para tornar nossa discusso um pouco mais
concreta, explicaremos o processo com base em um exemplo
especfico.) Vamos supor que desejamos determinar se a prova
sugerida a seguir na verdade vlida:
A = ( B =` C ), NOT D OR A, B = D =` C
( ondeA, B, C e D so frmulas). Comeamos adotando a negao
da concluso como uma premissa adicional e, em seguida,
escrevendo cada premissa em uma linha separada, como a
seguir:
A = ( 8 = C
NOT D OR A
8
666 NOT ( D C )
Essas quatro linhas passam todas por uma operao AND
implcita.
Agora, convertemos cada linha individual para a forma normal
conjuntiva, isto , uma forma que consiste em uma ou mais
frmulas, todas unidas por AND e com cada frmula individual
contendo (possivelmente) operaes NOT e OR, mas nenhuma
operao AND (consulte o Captulo 17). A segunda e a terceira
linha j esto nessa forma, claro. Para converter as outras
duas linhas, primeiro eliminamos todas as ocorrncias de
=`. (usando a definio desse conectivo em termos de NOT e
OR); em seguida, aplicamos as leis distributivas e as leis de
De Morgan, conforme necessrio (consulte o incio desta se-
o). Tambm eliminamos os parnteses redundantes e os pares
de operadores NOT adjacentes (os quais se cancelam). As
quatro linhas se tornam:
NOT A OR NOT B OR C
NOT D OR A
B
o AND NOT C
Em seguida, qualquer linha que inclua algum AND explcito
substituda por um conjunto de li- nhas separadas, uma para
cada uma das frmulas individuais unidas por AND (eliminando
os operadores AND no processo). No exemplo, esse passo s se
aplica quarta linha. Agora, as premissas so semelhantes a:
NOT A OR NOT B OR C
NOT D OR A
B
D
NOT C
Agora, podemos comear a aplicar a regra de resoluo.
Escolhemos um par de linhas que pode ser resolvido, isto ,
um par que contm (respectivamente) alguma frmula particular
e a negao dessa for- ma. Vamos escolher as duas primeiras
linhas, as quais contm NOTA eA, respectivamente, e resolv-
las para gerar:
NOT D OR NOT B OR C
B
D
NOT C
( Nota: em geral, tambm precisaremos manter as duas linhas
originais mas, nesse exemplo, especfico, elas no sero mais
necessrias.) Agora, aplicamos a regra de novo, escolhendo
mais uma vez as duas primeiras linhas (resolvendo NOT B e B
), o que nos d:
NOT D OR C
D
NOT C
Mais uma vez, escolhemos as duas primeiras linhas (NOT D e
D):
c
NOT C
E ainda uma vez (C e NOT C); o resultado final o conjunto
vazio de proposies (em geral, representado assim: [j),
interpretado como uma contradio. Portanto, pela reductio ad
absurdum, o resulta- do desejado provado. -
667
23.4 CLCULO DE PREDICADOS
Agora, voltaremos nossa ateno para o clculo de predicados.
A grande diferena entre o clculo prc sicional e o clculo
de predicados que este ltimo admite frmulas que contm
variveis* e quantif dores, o que o torna muito mais poderoso
e de aplicao bem mais ampla. Por exemplo, a declarao
fornecedor F 1 fornece a pea p e Algum fornecedor f
fornece a pea p no so frmulas vlida clculo
proposicional, mas so frmulas vlidas do clculo de
predicados. Por isso, o clculo de pred dos nos fornece uma
base para expressar consultas como Quais peas so
fornecidas pelo fornece Fi? ou Obtenha os fornecedores que
fornecem alguma pea, ou ainda Obtenha os fornecedores no
forneam pea alguma.
Predicados
Conforme explicamos no Captulo 3, um predicado uma funo
com valor verdade; isto , uma funo que, dados argumentos
apropriados para seus parmetros, retorna verdadeiro ou
falso. Por exemplo, >(x,y) mais convencionalmente,
escrita como x > y um predicado com dois parmetros, x
e
ela retorna verdadeiro se o argumento correspondente a x
maior que o argumento correspondente a
e falso em caso contrrio. Um predicado que toma n argumentos
(ou seja, de modo equivalente, um predicado definido em
termos de n parmetros) chamado predicado de n lugares. Uma
proposio (ou seja, uma frmula no sentido da Seo 23.3)
pode ser considerada como um predicado zero-place ela no
tem nenhum parmetro e avaliada de modo inequvoco como
verdadeira ou falsa.
conveniente supor que os predicados correspondentes a ,
>, _ etc., so internos (isto , fazem parte do sistema
formal que estamos definindo) e que as expresses que os
utilizam podem sem es- critas da maneira convencional. Porm,
os usurios tambm devem ser capazes de definir seus prprios
predicados. De fato, esse o ponto importante: o fato de
que, em termos de bancos de dados, um predicado definido pelo
usurio corresponde a uma varivel de relao, definida pelo
usurio (como j sabe- mos de captulos anteriores). Por
exemplo, a varivel de relao de fornecedores F pode ser
vista como um predicado com quatro parmetros,
especificamente F#, FNOME, STATUS e CIDADE Alm disso, as
expresses F (Fi, Smith, 20, Londres) e F (F6, White, 45,
Roma) representam instncias n ciaes ou invocaes
desse predicado que (considerando nossa amostra usual de
conjunto ae va o- res) so avaliadas respectivamente como
verdadeira e falsa. De modo informal, podemos considerar
es ;e predicados juntamente com quaisquer restries de
integridade aplicveis, que tambm so predicados. como a
definio do significado do banco de dados, conforme
explicamos em partes anteriores deste livro (em particular,
no Captulo 8).
Frmulas bem formadas
O passo seguinte estender a definio da frmula. Para
evitar confuso com as frmulas da seo antenor (que so um
caso particular), usaremos agora a expresso frmula bem
formada (FBF) do Captulo 7. Aqui est uma sintaxe
simplificada para FBFs:
<fbf> :: <termo>
NOT ( <fbf>
( <fbf> ) AND ( <fbf>
( <fbf> ) OR ( <fbf>
( <fbf> ) =i- ( <fbf>
EXISTS <nome de var> ( <fbf>
FORALL <nome de var> ( <fbf>
<termo> :: E NOT 1 <nome de pred> [ ( <listacomvrgulas de
argumentos>
Surgem pontos importantes:
1. Um <termo> apenas uma instncia de predicado,
possivelmente negada (se pensarmos em um predicado como uma
funo de valor verdade, ento uma instncia de predicado
ser uma invoca-
668
o dessa funo). Cada <argumento> tem de ser uma constante,
um nome de varivel ou uma invocao de funo, onde cada
argumento para uma invocao de funo , por sua vez, uma
constante ou um nome de varivel ou uma invocao de funo.
A <lista_com_vfrgulas de argumentos> e (opcionalmente) os
parnteses correspondentes so omitidos para um predicado de
zero lugar. Nota: funes (ou melhor, alm das funes de
valor verdade que so os predicados) so permitidas para
tornar possvel s FBFs inclurem expresses coladas como +
(x,y) de modo mais convenci- onal escritas como x + y
e assim por diante.
2. Como na Seo 23.3, adotamos as regras usuais de
precedncia para os conectivos (NOT, depois, AND, depois OR,
depois =`.), a fim de reduzir o nmero de parnteses
necessrios para expressar uma ordem de avaliao desejada.
3. Voc deve estar familiarizado com os quantificadores
EXISTS e FORALL. Nota: aqui, estamos preocupados apenas com o
clculo de predicados de primeira ordem; isso significa
basicamente que (a)
no existe nenhuma varivel de predicado (isto , variveis
cujos valores permitidos so predica-
dos) e, portanto, que (b) predicados no podem se sujeitar
quantificao. Consulte o Exerccio 7.9
no Captulo 7.
4. As leis de De Morgan podem ser generalizadas para se
aplicarem a FBFs quantificadas, como a seguir:
NOT ( FORALL x ( f ) ) EXISTS x ( NOT ( f ) )
NOT ( EXISTS x ( f ) ) FORALL x ( NOT ( f ) )
Esse ponto tambm foi discutido no Captulo 7
5. Repetindo ainda outro ponto do Captulo 7: dentro de uma
dada FBF, cada referncia a uma varivel livre ou limitada.
Uma referncia limitada se (a) aparece imediatamente depois
de um quantificador (isto , denota a varivel quantificada)
ou (b) reside dentro do escopo de um quantificador e se
refere varivel quantificada aplicvel. Uma referncia a
varivel livre se e somente se no li- mitada.
6. Uma FBF fechada aquela que no contm nenhuma referncia
a varivel livre (na verdade, uma proposio). Uma FBF
aberta uma FBF que no fechada.
Interpretaes e modelos
o que significam as FBFs? Para dar uma resposta formal a essa
pergunta, introduzimos a noo de inter- pretao. Uma
interpretao um conjunto de FBFs definido como a seguir:
. Primeiro, especificamos um universo de discurso, sobre o
qual essas FBFs devem ser interpreta- das. Em outras
palavras, especificamos um mapeamento entre (a) as constantes
permitidas do sistema formal (os valores de domnios, em
termos de bancos de dados) e (b) objetos do mundo real.
Cada constante individual corresponde a exatamente um objeto
no universo de discurso.
. Segundo, especificamos um significado para cada predicado,
em termos de objetos no universo de discurso.
. Terceiro, especificamos tambm um significado para cada
funo, em termos de objetos do uni- verso de discurso.
Ento, a interpretao consiste na combinao do universo de
discurso, mais o mapeamento de constantes individuais para
objetos nesse universo, mais os significados definidos para
os predicados e as funes com relao a esse universo.
A ttulo de exemplo, seja o universo de discurso o conjunto
de inteiros {O,1,2,3,4,5}; sejam as constantes como 2'
correspondentes a objetos nesse universo da maneira bvia, e
seja o predicado x >
definido com o significado usual. (Tambm poderamos definir
funes como +, -, etc., se o desejssemos.) Agora,
podemos atribuir um valores verdade a FBFs como as seguintes,
da maneira indicada: 669
2 > 1 : verdadeira
2 > 3 : falsa
EXISTS x ( x > 2 ) : verdadeira
FORALL x ( x > 2 ) : falsa
Contudo, observe que so possveis outras interpretaes. Por
exemplo, poderamos especi:
que o universo de discurso um conjunto de nveis de
classificao de segurana, como neste caso:
destruir antes de ler (nvel 5)
destruir depois de ler (nvel 4)
altamente secreto (nvel 3)
secreto (nvel 2)
confidencial (nvel 1)
no classificado (nvel O)
Agora, o predicado > poderia significar mais seguro
(isto , de classificao mais alta) que.
Agora, provavelmente voc perceber que as duas
interpretaes possveis que acabamos de dar so iso morfas
ou seja, possvel estabelecer uma correspondncia biunvoca
(de um para um) entre elas e, portanto, em um nvel profundo,
as duas interpretaes so na verdade uma s. Porm, deve
ficar bem claro que podem existir interpretaes genuinamente
diferentes em espcie. Por exemplo, poderamos, mais uma vez
tomar o universo de discurso como os inteiros de O a 5, mas
definir o predicado > com o significando de igualdade. (E
claro que provavelmente causaramos uma grande confuso, mas
estaramos no nosso direito de faz-lo.) Agora, a primeira
FBF da lista anterior seria avaliada como falsa em vez de
verdadeira.
Outro ponto que deve ser entendido com toda a clareza o
fato de que duas interpretaes pode- riam ser genuinamente
diferentes no sentido anterior, e ainda assim fornecerem os
mesmos valores ver- dade para o conjunto dado de FBFs. Esse
seria o caso com as duas definies diferentes de > em
nosso exemplo, se a FBF 2 > 1 fosse omitida.
Observe que todas as FBFs descrevemos nesta subseo at
agora foram FBFs fechadas. A razo para isso que, dada uma
interpretao, sempre possvel atribuir um valor verdade de
forma no ambgua a uma FBF fechada, mas o valor verdade de
uma FBF aberta depender dos valores atribudos s variveis
livres. Por exemplo, a FBF aberta:
x>3
ser (obviamente) verdadeira se o valor de x for maior que 3,
e falsa em caso contrrio (seja qual for o significado de
maior que e 3' na interpretao).
Agora, definimos um modelo de um conjunto de FBFs
(necessariamente fechadas) como uma inter- pretao pela qual
todas as FBFs do conjunto so verdadeiras. As duas
interpretaes dadas anteriormente para as quatro FBFs:
2>1
2>3
EXISTS x ( x > 2 )
FORALL x ( x > 2 )
em termos dos inteiros de O a 5 no eram modelos para essas
FBFs, porque algumas FBFs so avaliadas como falsas sob essa
interpretao. Em contraste, a primeira interpretao (em que
> foi definido convenientemente) teria sido um modelo
para o conjunto de FBFs:
2>1
3>2
EXISTS x ( x > 2 )
FORALLx (x>2ORNOT (x>2) )
670
-
Observe ainda que, como um determinado conjunto de FBFs pode
admitir vrias interpretaes nas quais todas as FBFs so
avaliam como verdadeiras, ele pode ento ter vrios modelos
(em geral). Assim, um banco de dados pode ter diversos
modelos (em geral), pois na viso da teoria dos modelos
um banco de dados apenas um conjunto de FBFs. Consulte a
Seo 23.5.
Forma de clusula
Da mesma maneira que qualquer frmula do clculo
proposicional pode ser convertida para a forma conjuntiva
normal, qualquer FBF do clculo de predicados pode ser
convertida para a forma clausular, que pode ser considerada
como uma verso estendida da forma conjuntiva normal. Uma
motivao para fazer tal converso que (de novo) ela nos
permite aplicar a regra de resoluo construo ou
verifica- o de provas, como veremos.
O processo de converso dado a seguir (em linhas gerais
para obter detalhes, consulte a referncia [23.10]).
Ilustramos aqui os passos para sua aplicao a um exemplo de
FBF, ou seja:
FORALL x ( p ( x ) AND EXISTS y ( FORALL z ( q ( y, z ) ) ) )
Aqui, /: e q so predicados e x, y e z so variveis.
1. Elimine os smbolos =` como na Seo 23.3. Em nosso
exemplo, essa primeira transformao no tem nenhum efeito.
2. Use as leis de De Morgan, e mais o fato de que dois
operadores NOT adjacentes se cancelam, para mover os
operadores NOT de modo que eles se apliquem apenas a termos,
e no a FBFs gerais. (De novo, essa transformao especfica
no tem efeito em nosso exemplo.)
3. Converta a FBF para a forma normal prenex, movendo todos
os quantificadores para a frente (renomeando sistematicamente
as variveis, se necessrio):
FORALL x ( EXISTS y ( FORALL z ( p ( x ) AND q ( y, z ) ) ) )
4. Observe que uma FBF quantificada existencialmente, como:
EXISTS v ( r ( v ) )
equivalente FBF:
r(a)
para alguma constante desconhecida a; isto , a FBF original
afirma que existe algum a, ns apenas no conhecemos seu
valor. Da mesma forma, uma FBF como:
FORALL u ( EXISTS v ( s ( u, v ) ) )
equivalente FBF:
FORALLu ( s ( u, f ( u ) ) )
para alguma funo desconhecida [da varivel universalmente
quantificada u. A constante a e a funo f nesses exemplos
so conhecidas respectivamente como uma constante de Skolem e
uma funo de Skolem, em homenagem ao lgico T. A. Skolem.
(Nota: uma constante de Skolem na verdade apenas uma funo
de Skolem sem argumentos.) Assim. o prximo passo eliminar
quantificadores existenciais, substituindo-se as variveis
quantificadas correspondentes por funes de Skolem
(arbitrrias) de todas as variveis universalmente
quantificadas que precedem o quantificador em questo na FBF:
FORALL x ( FORALL z ( p ( x ) AND q ( f ( x ), z ) ) )
671
5. Todas as variveis esto agora universalmente
quantificadas. Portanto, podemos adotar uma conveno pela
qual todas as variveis esto implicitamente universalmente
quantificadas e, ento, ehminar os quantificadores
explcitos:
p ( x ) AND q ( f ( x ), z)
6. Converta a FBF para a forma conjuntiva normal, isto , em
um conjunto de clusulas todas unidas por operadores AND,
onde cada clusula envolve possivelmente operadores NOT e OR,
mas no AND. Em nosso exemplo, a FBF j est nessa forma.
7. Escreva cada clusula em uma linha separada e abandone os
operadores AND:
p (x)
q ( f ( x ), z)
Essa a forma clausular equivalente FBF original
Nota: segue-se do procedimento anterior que o formato geral
de uma FBF na forma clausular um conjunto de clusulas,
cada qual em uma linha prpria e tendo cada uma a forma:
NOT Ai OR NOT A2 OR . . . OR NOT Am OR Bi OR B2 OR . . . OR
Bn
onde todas as ocorrncias de A e B so termos no negados.
Podemos reescrever essa clusula, se quiser- mos, como:
Ai AND A2 AND . . . AND Am = OR Bi OR B2 OR ... OR Bn
Se existir no mximo um B (n = O ou 1), a clusula ser
chamada uma clusula de Horn, em homenagem ao lgico Alfred
Horn.
o uso da regra de resoluo
Agora, estamos prontos para ver como um sistema de banco de
dados baseado na lgicapode lidar com consultas. Usamos o
exemplo do final da Seo 23.2. Primeiro, temos um predicado
MAEDE, que envolve dois parmetros representando me e filha,
respectivamente, e recebemos os dois termos seguintes
(instncias de predicados):
1. MEDE ( Anne, Betty )
2. MEDE ( Betty, Celia
Tambm recebemos a seguinte FBF (o axioma dedutivo):
3. ME_DE ( x, y ) AND ME_DE ( y, z ) = AV_DE ( x, z
(observe que essa uma clusula de Horn). Para simplificar a
aplicao da regra de resoluo, vamos reescrever a clusula
para eliminar o smbolo =`.:
4. NOT ME_DE ( x, y ) OR NOT ME_DE ( y, z ) OR
AV_DE ( x, z
Agora, continuamos a provar que Anne a av de Celia isto
, mostramos como responder consuhta Anne a av de
Cehia? Comeamos negando a concluso que deve ser provada e
a adotamos como uma premissa adicional:
5. NOT AV_DE ( Anne, Celia
Para aplicar a regra de resoluo, devemos substituir
sistematicamente os valores correspondentes a 672 variveis,
de tal modo que possamos encontrar duas clusulas que
contenham, respectivamente, uma
FBF e sua negao. Essa substituio legitima, porque as
variveis so todas implicitamente quantifica- das
universalmente e, assim, as FBFs individuais (no negadas)
devem ser verdadeiras para toda e qual- quer combinao
vlida de valores de suas variveis. Nota: o processo de
encontrar um conjunto de substituies que tornem possvel
resolver duas clusulas dessa maneira conhecido como
unificao.
Para ver como os passos anteriores funcionam nesse caso,
observe primeiro que as linhas 4 e 5 contm os termos AVO_DE
(x,z) e NOT AVO_DE (Anne,Celia), respectivamente. Assim,
substitumos x por Anne e Z por Celia na linha 4, obtendo:
6. NOT MEDE ( Anne, y ) OR NOT ME_DE ( y, Celia
A linha 2 contm MEDE (Betty,Celia). Ento, substitumos y
por Betty na linha 6 e obtemos:
7. NOT ME_DE ( Anne, Betty
Resolvendo a linha 7 e a linha 1, obtemos o conjunto vazio de
clusulas [ 1: Contradio. Desse modo, a resposta consulta
original Sim, Anne av de Celia. -
Agora, vamos consulta Quem so as netas de Anne? Observe
primeiro que o sistema no sabe nada sobre netas, ele s sabe
sobre avs. Poderamos acrescentar outro axioma dedutivo para
o efeito de que z a neta de xse e somente se x a av de z
(nenhum elemento do sexo masculino permitido nesse banco de
dados). E claro que outra alternativa seria reescrever a
pergunta como De quem Anne av? Vamos considerar essa
ltima formulao. Mais uma vez, as premissas so:
1. MEDE ( Arme, Betty
2. MEDE ( Betty, Celia
3. NOT ME_DE ( x, y ) OR NOT ME_DE ( y, z ) OR
AV_DE ( x, z
Introduzimos uma quarta premissa, assim:
4. NOT AV_DE ( Anne, r ) OR RESULTADO ( r
Intuitivamente, essa nova premissa afirma que Anne no av
de ningum, ou ento existe alguma pessoa r que pertence ao
resultado (porque ela a av dessa pessoa r). Queremos
descobrir a identidade de todas essas pessoas r. Prosseguimos
da maneira descrita a seguir.
Primeiro, substitua x por Anne e z por r e resolva as linhas
4 e 3 para obter:
5. NOT ME_DE ( Anne, y ) OR NOT ME_DE ( y, z
OR RESULTADO ( z
Em seguida, substitua y por Betty e resolva as linhas 5 e 1,
obtendo:
6. NOT ME_DE ( Betty, z ) OR RESULTADO ( z
Agora, substitua z por Celia e resolva as linhas 6 e 2, a fim
de obter:
7. RESULTADO ( Celia
Ento, Anne a av de Celia. -
Nota: se recebssemos um termo adicional, como este
MEDE ( Betty, Delia )
ento poderamos substituir z por Delia no passo final (em
vez de Celia) e obteramos:
RESULTADO ( Delia
claro que o usurio espera ver ambos os nomes no resultado.
Assim, o sistema precisa aplicar exaustivamente o processo de
unificao e resoluo para gerar todos os valores de
resultados possveis. Os detalhes desse refinamento esto
alm do escopo desta discusso.
673
23.5 UMA VISO DE BANCOS DE DADOS SEGUNDO A TEORIA DA PROVA
Conforme explicamos na Seo 23.4, uma clusula uma
expresso da forma:
AI AND A2 AND ... AND Am = OR 81 OR 82 OR ... OR Bn
onde os valores de A e B so todos termos da forma:
r(xl,x2 ..,xt)
(aqui, r um predicado, e xl, x2 xt so os argumentos desse
predicado). Seguindo a referncia [23.12], consideramos agora
dois casos especiais importantes dessa construo geral:
- Caso 1:m=O,n=1
Nesse caso, a clusula pode ser simplificada, fornecendo
apenas:
= Bl
ou, em outras palavras (descartando-se o smbolo de
implicao), somente:
r(xl,x2...,xt)
para algum predicado r e algum conjunto de argumentos xl, x2,
..., xt. Se os valores de x forem todos constantes, a
clusula representar um axioma aterrado (ground) isto ,
uma declarao inequivocamente verdadeira. Em termos de
bancos de dados, tal declarao corresponde a uma tupla de
alguma varivel de relao R. * O predicado r corresponde ao
significado da varivel de relao R, como j foi explicado
neste livro. Por exemplo, no banco de dados de fornecedores e
peas, existe uma varivel de relao chamada FP, cujo
significado que o fornecedor indicado (F#) est fornecendo
a pea indicada (P#) na quantidade indicada (QDE). Observe
que esse significado corresponde a uma FBF aberta, pois ela
contm referncias a variveis livres (F#, P# e QDE). Em
contraste, a tupla (F1,P1,300), em que os argumentos so
todos constantes, um axioma bsico ou uma FBF fechada, que
afirma inequivocamente que o fornecedor Fi fornece a pea P1
em uma quantidade igual a 300.
- Caso2:m>On=1
Nesse caso, a clusula toma a forma:
/11 AND A2 AND ... AND Am = 8
que pode ser vista como um axioma dedutivo; ela d uma
definio (possivelmente incompleta) do predicado do lado
direito do smbolo de implicao, em funo dos que esto no
lado esquerdo (veja a definio do predicado AVO_DE anterior,
como um exemplo).
Como outra alternativa, uma clusula desse tipo poderia ser
considerada como a definio de alguma restrio de
integridade na verdade, uma restrio de varivel de relao,
para usar a terminologia do Captulo 8. Suponha, a titulo de
exemplo, que a varivel de relao de fornecedores F tem
apenas dois atributos, F# e CIDADE. Ento, a clusula:
E ( f, cl ) AND E ( f, c2 ) = cl = c2
expressa a restrio de que CIDADE funcionalmente
dependente de F#. Observe o uso do predicado embutido =
nesse exemplo.
674 Ou a um valor em algum domnio.
Nota: conclumos do pargrafo anterior que uma diferena
entre as vises da teoria dos modelos e da teoria da prova
(em termos intuitivos) que, enquanto um banco de dados pode
ter muitos significados na viso da teoria dos modelos, em
geral ele ter exatamente um significado na viso da teoria
da prova exceto pelo fato de que (a) como se observou
antes, esse nico significado na realidade o significado
cannico no caso da teoria de modelos e, em qualquer caso,
(b) a observao para efeito de que s existe um significado
no caso da teoria da prova deixar de ser verdadeira, de modo
geral, se o banco de dados incluir qualquer axioma negativo
[23.9 a 23.101.
Os axiomas para um determinado banco de dados (na viso da
teoria da prova) podem ser resumidos informalmente desta
forma [23.151:
1. Axiomas bsicos, correspondendo aos valores dos domnios e
s tuplas das variveis de relaes bsicas. Esses axiomas
constituem o que se chama, as vezes, banco de dados
extensional (em oposio ao banco de dados intensional)
veja a prxima seo.
2. Um axioma de completeza para cada varivel de relao, o
qual afirma que o fato de uma tupla que seria vlida em caso
contrrio deixar de aparecer na varivel de relao em
questo pode ser interpretado como significando que a
proposio correspondente a essa tupla falsa. (Na verdade,
claro que esses axiomas de concluso considerados em
conjunto constituem a Hiptese do Mundo Fechado, j discutida
no Captulo 7.) Por exemplo, o fato de que a varivel de
relao de fornecedores F no inclui a tupla
(F6,White,45,Roma) significa que a proposio Existe um
fornecedor F6 denominado White com o status 45 e situado em
Roma falsa.
3. O axioma do nome nico, que afirma que toda constante
pode ser distinguida de todas as outras (isto , ela tem um
nome nico).
4. O axioma do fechamento de domnio, que afirma que no
existem constantes alm daquelas contidas nos domnios do
banco de dados.
5. Um conjunto de axiomas (essencialmente padro) para
definir o predicado interno de igualdade. Esses axiomas so
necessrios porque os axiomas dos itens 2, 3 e 4 anteriores
fazem uso do predicado de igualdade.
Conclumos esta seo com um breve resumo das principais
diferenas entre as duas percepes (da teoria dos modelos e
da teoria da prova). Antes de tudo, deve ser dito que, de um
ponto de vista puramente pragmtico, no poderia haver grande
diferena entre elas! pelo menos, considerando-se os SGBDs
de hoje. Porm:
- Os itens de 2 a 5 na lista de axiomas para a viso da
teoria da prova tornam explcitas certas suposies que so
implcitas na noo de interpretao da viso da teoria dos
modelos [23.15]. A declarao explcita de hipteses em geral
uma boa idia; alm disso, necessrio especificar
claramente esses axiomas adicionais, a fim de permitir a
aplicao de tcnicas gerais de prova, como o mtodo da
resoluo descrito nas Sees 23.3 e 23.4.
- Observe que a lista de axiomas no menciona as restries
de integridade. A razo para essa omisso que (na viso da
teoria da prova) a incluso dessas restries converte o
sistema em um SGBD dedutivo. Consulte a Seo 23.6.
- A viso da teoria da prova mostra uma certa elegncia que a
viso da teoria dos modelos no tem, pois oferece uma
percepo uniforme de diversas construes que costumam ser
imaginadas como mais ou menos distintas: dados bsicos,
consultas, restries de integridade (apesar do item
anterior), dados virtuais (etc.). Em consequncia disso,
surge a possibilidade de interfaces e implementaes mais
uniformes.
- A viso da teoria da prova tambm oferece uma base natural
para o tratamento de certos problemas com os quais os
sistemas relacionais sempre tm tido dificuldades a
informao disjuntiva (por exemplo, o fornecedor F6 est
situado em Paris ou Roma), a derivao de informaes
negativas (por exemplo, Quem no um fornecedor?) e as
consultas recursivas (consulte a
676
prxima seo) embora, pelo menos nesse ltimo caso, no
exista em princpio nenhuma razo pela qual um sistema
relacional clssico no possa ser estendido de modo
apropriado para lidar com tais consultas e vrios produtos
comerciais j foram estendidos (consulte tambm o Apndice
B). Teremos mais a dizer sobre tais questes nas Sees 23.6
e 23.7.
Por fim, para citar Reiter [23.15], a viso da teoria da
prova fornece um tratamento correto para [extenses do]
modelo relacional a fim de incorporar uma semntica mais do
mundo real (conforme observamos na Seo 23.2).
23.6 SISTEMAS DE BANCOS DE DADOS DEDUTIVOS
Um SGBD dedutivo um SGBD que admite a viso da teoria da
prova de um banco de dados e, em particular, capaz de
deduzir ou inferir fatos adicionais a partir dos fatos dados
do banco de dados extensional, aplicando axiomas dedutivos ou
regras de inferncia especificados a esses fatos. * Os
axiomas dedutivos, juntamente com as restries de
integridade (discutidas a seguir), formam aquilo que se
costuma chamar banco de dados intensional, e o banco de dados
extensional com o banco de dados intensional constituem o que
se chama banco de dados dedutivo (que no uma boa
expresso, pois o SGBD e no o banco de dados que realiza
as dedues).
Como afirmamos, os axiomas dedutivos formam uma parte do
banco de dados intensional. A outra parte consiste em axiomas
adicionais que representam restries de integridade (isto ,
regras cujo objetivo principal restringir atualizaes,
embora na verdade tais regras tambm possam ser usadas no
processo de deduo de fatos adicionais a partir de fatos
dados).
Vejamos qual seria o aspecto do banco de dados de
fornecedores e peas da Figura 3.8 na forma de um SGBD
dedutivo. Primeiro, haver um conjunto de axiomas aterrados
definindo os valores de domnio vlidos. Nota: no texto a
seguir, por razes de legibilidade, adotaremos em essncia as
mesmas convenes relacionadas com a representao de valores
que usamos (por exemplo) na Figura 3.8, escrevendo assim 300
como uma abreviao conveniente para QDE(300), etc.
F# ( Fi ) NOME ( Smith ) STATUS ( 5 )CIDADE ( Londres
F# ( F2 ) NOME ( Jones ) STATUS ( 10 )CIDADE ( Paris
F# ( F3 ) NOME ( Blake) STATUS ( 15 )CIDADE ( Roma
F# ( F4 ) NOME ( Clark ) etc. CIDADE ( Atenas
F# ( F5 ) NOME ( Adams ) etc.
F# ( F6 ) NOME ( White
F# ( F7 ) NOME ( Porca
etc. NOME ( Pino
NOME ( Parafuso
etc.
e assim por diante.
Em seguida, haver axiomas bsicos para as tuplas nas
relaes bsicas:
F ( Fi, Smith, 20, Londres
F ( F2, Jones, 10, Paris
etc.
P ( P1, Porca, Vermelho, 12, Londres
etc.
FP ( Fi, P1, 300
etc.
* Sobre esse assunto, vale a pena observar que Codd afirmava
desde 1974 que um dos objetivos do modelo relacional era
exatamente mesclar as aras de busca de fatos e do
gerenciamento de arquivos como preparao para a incluso em
um momento posterior de servios de inferncia no mundo
comercial 11.2, 25.81.
677
Nota: no estamos sugerindo seriamente que o banco de dados
extensional ser criado pela listagem explcita de todos os
axiomas bsicos da maneira indicada; em vez disso, claro
que sero usados mtodos tradicionais de definio de dados e
de entrada de dados. Em outras palavras, os SGBDs dedutivos
em geral aplicaro suas dedues a banco de dados
convencionais que j existem e que foram construdos do modo
convencional. Contudo, observe que agora torna-se mais
importante que nunca que o banco de dados extensional no
viole quaisquer das restries de integridade declaradas!
porque um banco de dados que viole quaisquer dessas
restries representa (em termos lgicos) um conjunto de
axiomas inconsistente, e sabido que se pode demonstrar como
verdadeira absolutamente qualquer proposio a partir desse
ponto inicial (em outras palavras, podem ser derivadas
contradies). Exatamente pela mesma razo, tambm
importante que o conjunto de restries de integridade
estabelecido seja consistente.
Agora, vamos ao banco de dados intensional. Aqui esto as
restries de atributos:
F ( f, fn, ft, fc ) = F# ( f ) AND
NOME ( fn ) AND
STATUS ( ft ) AND
CIDADE ( fc
P (p, pn, p1, pw, pc ) = P# (p ) AND
NOME ( pn ) AND
COR ( p1 ) AND
PESO ( pw ) AND
CIDADE ( pc
etc.
E estas so as restries de chaves candidatas:
F ( f, ff1, ftl, fcl ) AND F ( f, fnl, ftl, fcl )
fnl = fn2 AND
ftl = ft2 AND
fcl = fc2
etc.
Aqui esto as restries de chaves estrangeiras:
FP (s, p, q) ==F (f,fn,ft,fc) AND
P ( p, pn, p1, pw, fc )
E assim por diante. Nota: nessa exposio, vamos supor que as
variaveis que aparecem no lado direito do smbolo de
implicao, e no no lado esquerdo (no exemplo, fn, ft,
etc.), so quantificadas existencialmente. (Todas as outras
so universalmente quantificadas, como explicamos na Seo
23.4.) Do ponto de vista tcnico, precisamos de algumas
funes de Skolem; por exemplo, fn deve ser substituda
realmente por (digamos) FN (/), onde FN uma funo Skolem.
A propsito, note que em sua maioria as restries
apresentadas no so clusulas puras no sentido da Seo
23.5, porque o lado direito no apenas disjuno de termos
simples.
Agora, vamos acrescentar mais alguns axiomas dedutivos:
F (f, fn, ft, fc ) ANDIt >15
BOM_FORNECEDOR ( f, ft, fc
(compare com a definio da viso BOM_FORNECEDOR do Captulo
9, na Seo 9.1).
678
F ( fx, fxn, fxt, fc ) AND F ( fy, fyn, fyt, fc )
FFCOLOCADO ( fx, fy )
F (f, fn, ft, c ) AND P (p, pn, p1, pw, c
FPCOLOCADO ( f, p )
E assim por diante.
Para tornar o exemplo um pouco mais interessante, vamos agora
estender o banco de dados a fim de incluir uma varivel de
relao estrutura de pea, mostrando quais peas px contm
quais peas py como componentes imediatos (isto , do
primeiro nvel). Primeiro, aqui est uma restrio para
mostrar que px e py devem ambas identificar peas existentes:
ESTRUTURA_PEA ( px, py ) = P ( px, xn, xl, xw, xc ) AND
P(py,yn,yl,yw,yc)
Aqui esto alguns valores de dados:
ESTRUTURA PEA ( P1, P2
ESTRUTURA_PEA ( P1, P3
ESTRUTURA_PEA ( P2, P3
ESTRUTURA PEA ( P2, P4
etc.
(Na prtica, ESTRUTURA PEA provavelmente tambm teria um
argumento quantidade, inostrando quantas peas py so
necessrias para montar uma pea px, mas omitimos esse
refinamento por simplicidade.)
Agora, podemos acrescentar um par de axiomas dedutivos, para
explicar o que significa para a pea px conter a pea py como
componente (em qualquer nvel):
ESTRUTURA_PEA ( px, py ) = COMPONENTE DE ( px, py
ESTRUTURA_PEA ( px, pz ) AND COMPONENTE_DE ( pz, py
= COMPONENTE DE ( px, py
Em outras palavras, a pea py componente da pea px (em
algum nvel) se ela um componente imediato da pea px ou um
componente imediato de alguma pea pz que seja, por sua vez,
um componente (em algum nvel) da pea px. Observe que, nesse
caso, o segundo axioma recursivo ele define o predicado
COMPONENTE_DE em termos de si mesmo.* Em contraste, os
sistemas relacionais clssicos no permitem definies de
vises (ou consultas, ou vnculos de integridade, ou ...) que
sejam recursivas desse modo. Essa capacidade de admitir a
recurso uma das diferenas mais imediatamente bvias entre
os SGBDs dedutivos e seus correspondentes relacionais
clssicos embora, como foi dito na Seo 23.5 (e no
Captulo 6), no h nenhuma razo fundamental pela qual os
sistemas relacionais clssicos no devam se estendidos para
oferecer suporte a essa recurso, e alguns j foram
estendidos.
Teremos mais a dizer sobre a recurso na Seo 23.7.
Datalog
Da discusso precedente deve ter ficado claro que uma das
partes mais diretamente visveis de um SGBD dedutivo ser uma
linguagem em que os axiomas dedutivos (em geral chamados
regras) podero ser formulados. O exemplo mais conhecido de
tal linguagem chamado Datalog (por analogia com a linguagem
Prolog) [23.9]. Apresentamos uma breve discusso de Datalog
nesta subseo. Nota: a nfase de Da-
* Naturalmente, definimos de fato um fecho em qualquer
instante determinado, a relao correspondente a COMPO
NENTE_D o fecho da relao que corresponde a ESTRUTURA PEA
(consulte o Captulo 6). 679
talog est em sua capacidade descritiva e no computacional
(como tambm ocorre com o modelo relaciona! original [5.1]).
O objetivo definir uma linguagem que, em ltima anlise,
tenha maior poder de expresso que as linguagens relacionais
convencionais [23.9]. Em consequncia, a nfase em Datalog
na verdade, a nfase geral em todos os sistemas de bancos de
dados baseados em lgica muito intensa em consultas, e
no atualizaes, embora seja possvel e desejvel estender a
linguagem para suportar tambm a atualizaes (como veremos
adiante).
Em sua forma mais simples, Datalog admite a formulao de
regras como clusulas de Horn simples sem funes. Na Seo
23.4, definimos uma clusula de Horn como uma FBF com um dos
dois formatos a seguir:
Ai AND A2 AND ... AND An
Ai AND A2 AND ... AND An = B
(onde os valores de A e B so instncias de predicados no
negados, envolvendo somente constantes e variveis). Porm,
seguindo o estilo de Prolog, a linguagem Datalog na verdade
escreve a segunda expresso ao contrrio:
B = Ai AND A2 AND ... AND An
Ento, por coerncia com outras publicaes sobre o assunto,
faremos o mesmo nos exemplos seguintes.
Em uma clusula desse tipo, B a cabea da regra (ou
concluso) e os valores de A so o corpo da regra (ou
premissas, ou ainda objetivo (goa!); cada A individual um
subobjetivo (subgoal)). Para abreviar os operadores AND so
substitudos com frequncia por vrgulas. Um programa Datalog
um conjunto dessas clusulas separadas de algum modo
convencional por exemplo, por sinais de ponto-e-vrgula
(neste livro, porm, no usaremos sinais de ponto-e-vrgula,
mas simplesmente iniciaremos cada nova clusula em uma nova
linha). No h nenhum significado associado ordem das
clusulas dentro de tal programa.
Observe que o banco de dados dedutivo inteiro pode ser
considerado um programa Datalog no sentido anterior. Por
exemplo, poderamos tomar todos os axiomas enunciados antes
para fornecedores e peas (os axiomas bsicos, as restries
de integridade e os axiomas dedutivos), escrev-los no estilo
Datalog, separ-los por sinais de ponto-e-vrgula ou escrev-
los em linhas separadas, e o resultado seria um programa
Datalog. Contudo, como j observamos, a parte extensional d
banco de dados em geral no ser especificada dessa maneira,
mas sim de algum modo mais convencional. Dessa forma, a
finalidade principal de Datalog especificamente admitir a
formulao de axiomas dedutivos. Como j afirmamos, essa
funo pode ser considerada uma extenso do mecanismo de
definio de viso encontrado em SGBDs relacionais
convencionais de hoje.
Datalog tambm pode ser usada como uma linguagem de consulta
(de novo, como Prolog). Por exemplo, suponha que recebssemos
a seguinte definio em Datalog de BOM_FORNECEDOR:
BOM_FORNECEDOR ( f, ft, fc ) = F ( f, fn, ft, fc
AND ft > 15
Ento, aqui temos algumas consultas tpicas sobre
BOM_FORNECEDOR:
1. Obter todos os bons fornecedores:
? = BOM FORNECEDOR ( f, ft, fc
2. Obter bons fornecedores em Paris:
? = BOM FORNECEDOR ( f, ft, Paris
3. O fornecedor Fi um bom fornecedor?
= BOM FORNECEDOR ( f, ft, fc
680
E assim por diante. Em outras palavras, uma consulta em
Datalog consiste em uma regra especial com a cabea? e um
corpo formado por uma nica expresso que denota o resultado
da consulta; a cabea ? significa (por conveno) Exibir.
Devemos enfatizar que, apesar de Datalog admitir a recurso,
h vrios aspectos de linguagens relacionais convencionais
que Datalog em sua forma original no foi definida para
reconhecer: operadores escalares (+, , etc.), operadores
de agregados (COUNT, SUM, etc.), diferena de conjuntos
(porque as clusulas no podem ser negadas), agrupamento e
desagrupamento, etc. Ela tambm no reconhecia a nomeao de
atributos (o significado de um argumento de predicado
dependia de sua posio ordina!), nem oferecia suporte
completo para domnios (isto , tipos definidos pelo usurio,
no sentido do Captulo 5). Como indicamos no incio desta
seo, ela tambm no permitia quaisquer operaes de
atualizao nem (como consequncia desse ltimo fato) no
reconhecia a especificao declarativa de regras de excluso
e atualizao de chaves estrangeiras (ON DELETE CASCADE etc.)
Para tratar de algumas das deficincias anteriores, foram
propostas diversas extenses definio bsica de Datalog.
Essas extenses se destinavam a oferecer os seguintes
recursos, entre outros:
- Premissas negativas por exemplo:
FFCOLOCADO ( fx, fy ) = F ( fx, fxn, fxt, fc ) AND
F ( fy, fyn, fyt, fc ) AND
NOT ( fx = fy )
- Operadores escalares (internos e definidos pelo usurio)
por exemplo:
PESOPEM GRAMAS ( p, pn, p1, pg, pc ) =
P ( p, pn, p1, pw, pc ) AND pg pw * 454
Nesse exemplo, supomos que a funo interna pode ser
escrita com o uso da notao convencional infixada. Uma
representao lgica mais ortodoxa da expresso seguinte ao
operador AND seria (pg, * (pw,454)).
- Agrupamento e operadores de agregados (de certo,
semelhantes s linhas do nosso operador SUMMARIZE relaciona!
consulte o Captulo 6): esses operadores so necessrios
para tratar (por exemplo) o que se costumava chamar de
problema dos requisitos em bruto, que consiste em encontrar,
no apenas quais peas py so componentes de alguma pea px
em qualquer nvel, mas tambm quantas peas py (em todos os
nveis) so necessrias para formar uma pea px.
(Naturalmente, estamos supondo nesse caso que a varivel de
relao ESTRUTURA_PEA inclui um atributo QDE.)
- Operaes de atualizao: uma abordagem para atender a esse
requisito bvio no a nica se baseia nas observaes de
que, em Datalog bsica, (a) qualquer predicado em uma cabea
de regra deve ser no negado, e (b) toda tupla gerada pela
regra pode ser considerada inserida no resultado. Uma
extenso possvel seria ento permitir predicados negados em
uma cabea de regra e tratar a negao como a solicitao da
excluso (de tuplas pertinentes).
- Clusulas que no so de Horn no corpo da regra em outras
palavras, permitir FBFs completamente gerais na definio de
regras.
Uma exposio das extenses anteriores, acompanhada de
exemplos, pode ser encontrada no livro de Gardarin e
Valduriez [23.10], que tambm discute uma variedade de
tcnicas de implementao de Datalog.
23.7 PROCESSAMENTO DE CONSULTAS RECURSIVAS
Como dissemos, um dos aspectos mais notveis dos sistemas de
bancos de dados dedutivos seu suporte
recurso (definies de regras recursivas e, portanto,
tambm de consultas recursivas). Em consequn- 681
cia disso, os ltimos anos viram toda sorte de pesquisas
sobre tcnicas para implementao de tal re so na verdade,
quase todas as conferncias sobre bancos de dados desde 1986
incluram um ou artigos sobre o assunto (consulte a seo
Referncias e bibliografia, no final deste captulo). Co
suporte a consultas recursivas representa um problema que no
existia nos SGBDs clssicos, vamo cuti-lo rapidamente nesta
seo.
Como exemplo, repetimos aqui a definio recursiva dada na
Seo 23.6 de COMPONEN 1 L em termos de ESTRUTURA_PEA
(porm, para abreviar, reduzimos ESTRUTURA_PEA a
COMPONENTE_DE a COMP; tambm convertemos a definio para o
formato de Datalog):
COMP (px,py) = PS (px,py)
COMP ( px, py ) = PS ( px, pz ) AND COMP ( pz, py )
Aqui est uma consulta recursiva tpica sobre esse banco de
dados (Explodir pea P1):
? = COMP ( P1, py
Voltemos definio por um instante: a segunda regra nessa
definio isto , a regra recursiva dita linearmente
recursiva, porque o predicado na cabea da regra aparece
apenas uma vez no corpo da regra. Em contraste, aqui est uma
definio de COMP na qual a segunda regra (recursiva) no
linear- mente recursiva no mesmo sentido:
COMP ( px, py ) = PS ( px, py )
COMP ( px, py ) = COMP ( px, pz ) AND COMP ( pz, py )
Contudo, h um sentimento generalizado de que a recurso
linear representa o caso de interesse, no sentido de a
maioria das recurses que surgem na prtica naturalmente
linear e, alm disso, existem tcnicas eficientes e
reconhecidas para se lidar com o caso linear [23.1 6j. Por
essa razo, vamos restringir nossa ateno recurso linear
no restante desta seo.
Nota: por completeza, devemos enfatizar que necessrio
generalizar a definio de regra recursiva (e de recurso
linear) para lidar com casos mais complexos, como este:
P(x,y) = Q(x,z)ANDR(z,y)
Q ( x, y ) = P ( x, z ) AND S ( z, y )
Por brevidade, vamos ignorar tais refinamentos aqui. consulte
a referncia [23.16] se quiser ver uma descrio mais
detalhada.
Como no processamento clssico (ou seja, no recursivo) de
consultas, o problema geral de implementar uma determinada
consulta recursiva pode ser dividido em dois problemas
secundrios, especificamente (a) transformar a consulta
original em alguma forma equivalente, embora mais eficiente,
e depois (b) executar de fato o resultado dessa
transformao. A literatura contm descries de vrias
abordagens a esses dois problemas (mais uma vez, consulte a
seo Referncias e bibliografia). Nesta seo,
discutiremos rapidamente algumas tcnicas mais simples,
mostrando sua aplicao consulta Explodir pea P1, usando
a seguinte amostra de dados:
Ps Px PY
P1 P2
P1 P3
P2 P3
P2 P4
p3 5
p4 5
682
Unificao e resoluo
claro que uma das abordagens possveis usar as tcnicas
de unificao e resoluo de Prolog padro, descritas na
Seo 23.4. No exemplo, esse enfoque funciona da maneira
descrita a seguir. As primeiras premissas so os axiomas
dedutivos, semelhantes a estes (em forma normal conjuntiva):
1. NOT PS ( px, py ) OR COMP ( px, py )
2. NOT PS ( px, pz ) OR NOT COMP ( pz, py ) OR COMP ( px, py
Construmos outra premissa a partir da concluso desejada:
3. NOT COMP ( P1, py ) OR RESULTADO ( py
Os axiomas bsicos formam as premissas restantes. Por
exemplo, considere o axioma bsico:
4. ps ( P1, P2
Substituindo-se py por P1 e py por P2 na linha 1, podemos
resolver as linhas 1 e 4, obtendo:
5. COMP ( P1, P2
Agora, substitumos py por P2 na linha 3 e resolvemos as
linhas 3 e 5. Assim, obtemos:
6. RESULTADO ( P2
Dessa forma, P2 componente de P1. Um argumento exatamente
anlogo mostrar que P3 tambm componente de P1. Agora,
naturalmente, temos os axiomas adicionais COMP(P1,P2) e
COMP(P1,P3): podemos agora aplicar recursivamente o processo
anterior para determinar a exploso completa. Os detalhes
ficam como exerccio para o leitor.
Porm, na prtica a unificao e a resoluo podem ter um
custo bastante alto em desempenho. Assim, com frequncia ser
desejvel encontrar alguma estratgia mais eficiente. As
subsees restantes discutem algumas abordagens possveis
para esse problema.
Avaliao ingnua (naive)
A avaliao ingnua [23.25] provavelmente a abordagem mais
simples de todas. Como sugere o nome,
o algoritmo muito simples; ele pode ser mais facilmente
explicado (no caso de nosso exemplo de consulta) com base no
seguinte pseudocdigo.
COMP : PS
fazer at COMP chegar a um ponto fixo
COMP := COMP UNION ( COMP [Ateno produo: ><PS
fim ;
DISPLAY : COMP WFIERE PX = P# (`P1')
As variveis de relaes COMP e DISPLAY (como a varivel de
relao PS) tm cada uma dois atributos, PX e PY.
Informalmente, o algoritmo funciona pela formao repetida de
um resultado intermedirio que consiste na unio da juno de
PS com o resultado intermedirio anterior, at esse resultado
intermedirio chegar a um ponto fixo isto , at ele
deixar de crescer. Nota: a expresso COMP PS a abreviao
para juno de COMP e PS sobre COMP.PY e PS.PX e projeo
do resultado sobre COMP.PX e PS.PY; para abreviar, vamos
ignorar as operaes de renomeao de atributos que nosso
dialeto da lgebra exigiria para fazer essa operao
funcionar (consulte o Captulo 6).
Vamos percorrer passo a passo o algoritmo com nossa amostra
de dados. Depois da primeira iterao do loop, o valor da
expresso COMP x PS mostrado a seguir no lado esquerdo, e o
valor de COMP resultante mostrado no lado direito (com as
tuplas adicionadas nessa iterao assinaladas com
asteriscos):
683
COMP * PS PX PY COMP PX PY
P1 P3 P1 P2
P1 P4 P1 P3
P1 P5 P2 P3
P2 P5 P2 P4
P3 P6 P3 P5
P4 P6 P4 P5
P5 P6
P1 P4 *
P1 P5 *
P2 P5 *
P3 P6 *
P4 P6 *
Depois da segunda iterao, os dados tm esta aparncia:
COMP * PS PY COMP PX PY
P1 P3 P1 P2
P1 P4 P1 P3
P1 P5 P2 P3
P2 P5 P2 P4
P3 P6 P3 P5
P4 P6 P4 P5
P5 P6
P1 P4
P1 P5
P2 P5
P3 P6
P4 P6
P1 P6 *
P2 P6 *
Observe atentamente que o clculo de COMP x P5 nesse segundo
passo repete todo o clculo de COMP x P5 do primeiro passo,
mas calcula alm disso algumas tuplas extras (na realidade,
duas tuplas extras (P1,P6) e (P2,P6) em nosso exemplo).
Essa uma razo pela qual o algoritmo de avaliao ingnua
no muito inteligente.
COMP PX PY
P1 P2
P1 P3
P1 P4
P1 P5
P1 P6
P5 P6
Depois da terceira iterao, o valor de COMP PS (aps outros
clculos repetidos) se torna o mesmo da iterao anterior;
assim, COMP alcanou um ponto fixo e ns samos do ioop. O
resultado final ento calculado como uma restrio de COMP:
Outra ineficincia evidente aparece agora: o algoritmo
efetivamente calculou a exploso de cada pea na verdade,
ele calculou o fecho transitivo inteiro da relao PS e
depois repetiu tudo, com exceo das tuplas realmente
desejadas; em outras palavras, mais uma vez foi realizado um
grande trabalho desnecessrio.
Fechamos esta subseo mostrando que a tcnica da avaliao
ingnua pode ser considerada uma aplicao do encadeamento
direto(forward chaning): partindo do banco de dados
extensional (ou seja, dos valores de dados reais), ela aplica
as premissas da definio (isto , o corpo da regra)
repetidamente at obter o resultado desejado. De fato, o
algoritmo calcula na realidade o modelo mnimo para o
progra684 ma Datalog (consulte as Sees 23.5 e 23.6).
Avaliao semi-ingnua
O primeiro aperfeioamento bvio do algoritmo de avaliao
ingnua tem o objetivo de evitar a repetio dos clculos de
cada passo no passo seguinte: a avaliao semi-ingnua
(seminaive)[23.28]. Em outras palavras, calculamos em cada
passo apenas as novas tuplas que precisam ser acrescentadas
nessa iterao em particular. Mais uma vez, explicamos a
idia com base no exemplo de Explodir pea P1. Aqui est o
pseudocdigo:
NOVA : PS
COMP : NOVA
fazer at NOVA estar vazia
NOVA : ( NOVA ><PS ) MINUS COMP
COMP := COMP UNION NOVA
fim ;
DISPLAY : COMP WHERE PX = P# (`P1')
Vamos percorrer novamente o algoritmo passo a passo. Na
entrada inicial no loop, NOVA e COMP so ambas idnticas a
PS:
NOVA PX 1 COMP PX
P1 P2 P1 P2
P1 P3 P1 P3
P2 P3 P2 P3
P2 P4 P2 P4
1 P3 P5 P3 P5
P4 P5 P4 P5
No final da primeira iterao, elas tm essa aparncia:
NOVA[_PX COMP 1
P1 P4 P1 P2
P1 P5 P1 P3
P2 P5 P2 P3
P3 P6 P2 P4
[j P6 P3 P5
P4 P5
P5 P6
P1 P4 *
P1 p5 *
P2 P5 *
P3 P6 *
P4 P6 *
COMP igual ao que era nesse estgio sob a avaliao
ingnua, e NOVA contm apenas as novas tuplas que foram
acrescentadas a COMP nessa iterao; observe em particular
que NOVA no inclui a tupla (P1,P3) (compare esses dados com
os dados da avaliao ingnua).
Ao final da prxima iterao, temos:
NOVA[F yJ COMPI px 1 1
LJ :: j
A iterao seguinte torna NOVA vazia e, portanto, deixamos o
loop. 685
Filtragem esttica
A filtragem esttica um refinamento da idia bsica da
teoria clssica da otimizao de executar restries to cedo
quanto possvel. Ela pode ser considerada uma aplicao do
encadeamento inverso backward chainj, pelo fato de usar
efetivamente informaes da consulta (a concluso) para
modificar as regras (as premissas). Ela tambm referenciada
como a reduo do conjunto de fatos relevantes, porque (de
novo) usa informaes da consulta para eliminar desde o
comeo tuplas inteis no banco de dados extensional [23.29].
O efeito em nosso exemplo pode ser explicado com base no
seguinte pseudocdigo:
NOVA : PS WHERE PX = P# ( P1
COMP : NOVA
fazer at NOVA estar vazia
NOVA : ( NOVA ><PS ) MINUS COMP
COMP : COMP UNION NOVA
fim
DISPLAY : COMP
Novamente, percorremos o algoritmo passo a passo. Em nossa
entrada inicial no loop, NOVA e COMP tm esta aparncia:
NOVA PX PY COMP PX PY
P1 P2 P1 P2
P1 P3 P1 P3
Ao final da primeira iterao, elas so semelhantes a:
NOVA PX PY COMP PX PY
Aps a iterao seguinte, temos:
NOVA PX PY COMP PX PY
P1 P6 P1 P2
P1 P3
P1 P4
P1 P5
P1 P6 *
A prxima iterao torna NOVA vazia, e assim deixamos o loop.
-
Isso conclui nossa breve introduo s estratgias de
processamento de consultas recursivas. E claro que muitas
outras abordagens foram propostas na literatura, a maior
parte delas muito mais sofisticada que as abordagens simples
discutidas aqui; porm, no h espao suficiente em um livro
como este para cobrir toda a base necessria ao bom
entendimento dessas abordagens. Consulte, por exemplo, as
referncias [23.16 a 23.43], a fim de examinar uma discusso
adicional.
23.8 RESUMO
Assim chegamos ao final de nossa breve introduo ao assunto
dos bancos de dados baseados em lgica. Embora a maioria das
idias ainda esteja restrita ao mundo da pesquisa, algumas
delas comearam a sur686 gir em produtos relacionais
comerciais (essa observao especialmente verdadeira no
caso de algumas
tcnicas de otimizao). Acima de tudo, o conceito de bancos
de dados baseados em lgica parece muito interessante;
diversas vantagens potenciais foram identificadas em vrios
pontos das sees precedentes. Uma vantagem adicional, no
mencionada explicitamente no texto do captulo, o fato de
que a lgica poderia formar a base de um integrao
genuinamente uniforme entre as linguagens de programao de
uso geral e o banco de dados. Em outras palavras, em vez da
abordagem de sublinguagem de dados embutida, aceita hoje
por produtos de SQL uma abordagem no muito elegante, para
dizermos o mnimo
o sistema poderia fornecer uma nica linguagem baseada na
lgica, na qual dados so dados, independente de serem
mantidos em um banco de dados compartilhado ou serem locais
para a aplicao. (E claro que existe uma srie de obstculos
a serem superados antes de se poder alcanar tal objetivo, e
um deles demonstrar de forma satisfatria para a comunidade
de tecnologia de informaes que a lgica adequada como
base para uma linguagem de programao de uso geral.)
Vamos rever rapidamente os principais pontos do assunto que
focalizamos. Comeamos com um breve tutorial sobre clculo
proposicional e clculo de predicados, apresentando os
seguintes conceitos, entre outros:
- Uma interpretao de um conjunto de FBFs a combinao de
(a) um universo de discurso, (b) um mapeamento de constantes
individuais que aparecem nessas FBFs para objetos desse
universo e (c) um conjunto de significados definidos para os
predicados e as funes pertencentes a essas FBFs.
- Um modelo para um conjunto de FBFs uma interpretao para
a qual todas as FBFs no conjunto so avaliadas como
verdadeiras. Um dado conjunto de FBFs pode ter (em geral)
qualquer nmero de modelos.
- Uma prova (ou demonstrao) o processo de mostrar que
alguma FBF g (a concluso) uma consequncia lgica de algum
conjunto dado de FBFs [1, [2, ..., fn (as premissas).
Discutimos um mtodo de prova, conhecido como resoluo e
unificao, com alguns detalhes.
Em seguida, examinamos a viso da teoria da prova de bancos
de dados. Nessa viso, um banco de dados considerado como
formado pela combinao de um banco de dados extensional e um
banco de dados intensional. O banco de dados extensional
contm axiomas bsicos, isto , os dados bsicos (em termos
informais); o banco de dados intensional contm restries de
integridade e axiomas dedutivos, ou seja, vises (mais uma
vez, em termos informais). O significado do banco de dados
consiste ento no conjunto de teoremas que podem ser
deduzidos dos axiomas; a execuo de uma consulta passa a ser
(pelo menos conceitualmente) um processo de demonstrao de
teoremas. Um SGBD dedutivo um SGBD que admite essa viso da
teoria da prova. Descrevemos rapidamente a linguagem Datalog,
uma linguagem do usurio para esse SGBD.
Uma distino imediatamente bvia entre Datalog e as
linguagens relacionais tradicionais o fato de que Datalog
admite axiomas recursivos e, portanto, consultas recursivas
embora no exista nenhuma razo pela qual a lgebra
relacional tradicional e o clculo relaciona1 no devam ser
estendidos para fazer algo semelhante (veja a descrio do
operador TCLOSE no Captulo 6)* Discutimos algumas tcnicas
simples para avaliar essas consultas.
Concluindo: abrimos este captulo mencionando uma srie de
termos banco de dados lgico, SGBD inferencial, SGBD
dedutivo etc. que encontramos com frequncia na literatura
de pesquisa (e mesmo, sob certos aspectos, em alguns anncios
publicitrios). Portanto, vamos encerr-lo fornecendo algumas
definies para esses termos. Porm, devo adverti-lo de que
nem sempre h um consenso sobre essas questes, e
provavelmente podero ser encontradas definies diferentes
em outras publicaes. As definies a seguir so as
preferidas pelo autor:
* interessante observar sob esse aspecto que, de qualquer
modo, os SGBDs relacionais precisam ser capazes de executar
processamento recursivo nos bastidores, porque o catlogo
conter certas informaes estruturadas recursivamente (por
exemplo,
definies de vises expressas em termos de outras definies
de vises). 687
- Processamento de consultas recursivas: essa fcil. O
processamento de consultas recursivas se refere avaliao
e, em particular, otimizao, de consultas cuja definio
intrinsecamente recursiva (consulte a Seo 23.7).
- Base de conhecimento: essa expresso usada s vezes para
indicar aquilo que chamamos banco de dados intensional na
Seo 23.6 ou seja, ela consiste nas regras (as restries
de integridade e os axiomas dedutivos), em oposio aos dados
bsicos, que constituem o banco de dados extensional.
Contudo, outros autores utilizam base de conhecimento para
designar a combinao dos bancos de dados extensional e
intensional (ver banco de dados dedutivo a seguir) exceto
pelo fato de que, como mostra a referncia [23.10], uma base
de conhecimento inclui muitas vezes objetos complexos [bem
como] relaes clssicas (consulte a Parte VI deste livro
para ver uma discusso de objetos complexos). Novamente, a
expresso tem outro significado, mais especfico, em sistemas
de linguagem natural. Talvez seja muito melhor evitar
inteiramente a expresso.
- Conhecimento: essa tambm fcil! Conhecimento o que
est na base de conhecimento... Essa definio ento reduz o
problema de definir conhecimento a um problema no
resolvido antes.
- Sistema de gerenciamento de base de conhecimento (KBMS ou
SGBC): o software que gerencia a base de conhecimento. A
expresso usada tipicamente como sinnimo para SGBD
dedutivo (consulte o prximo pargrafo).
- SGBD dedutivo: um SGBD que admite a viso de bancos de
dados segundo a teoria da prova e, em particular, capaz de
deduzir informaes adicionais a partir do banco de dados
extensional, aplicando regras inferenciais (isto ,
dedutivas) que esto armazenadas no banco de dados
intensional. Um SGBD dedutivo quase certamente admitir
regras recursivas e, portanto, executar o processamento de
consultas recursivas.
- Banco de dados dedutivo: (expresso no recomendada). Um
banco de dados gerenciado por um SGBD dedutivo.
- SGBD especialista: sinnimo de SGBD dedutivo.
- Banco de dados especialista: (expresso no recomendada.)
Um banco de dados gerenciado por um SGBD especialista.
- SGBD inferencial: sinnimo para SGBD dedutivo.
- Sistema baseado na lgica: sinnimo para SGBD dedutivo.
- Banco de dados lgico: (expresso no recomendada.)
Sinnimo para banco de dados dedutivo.
- Lgica como modelo de dados: um modelo de dados consiste
(no mnimo) em objetos, regras de integridade e operadores.
Em um SGBD dedutivo, os objetos, as regras de integridade e
os operadores so todos representados do mesmo modo uniforme,
ou seja, como axiomas em uma linguagem lgica como Datalog;
de fato, como explicamos na Seo 23.6, um banco de dados em
um sistema desse tipo pode ser considerado precisamente como
um programa lgico contendo axiomas de todos os trs tipos.
Assim, em tal sistema, poderamos afirmar de modo legtimo
que o modelo abstrato de dados para o sistema ele prprio
lgico.
EXERCICIOS
23.1 Use o mtodo de resoluo para ver se as metadeclaraes
a seguir constituem provas vlidas no clculo proposicional:
a. A=B,C=-B,D=.(AORC),DF + B
688
b. (A =`B)AND(C='.D), (B=t-EANDD='F),
NOT(EANDF),A='-C [- NOTA
c. (AORB)=W.D,D=I-NOT(EORF), NOT(BANDCANDE)
+ NOT ( G = NOT ( C AND H ) )
23.2 Converta as FBFs a seguir para a forma clausular:
a. FORALL x ( FORALL y
(p ( x, y ) = EXISTS z ( q ( x, z ) ) ) )
b. EXISTS x ( EXISTS y
(p (x,y) = FORALLz (q (x, z) ) ) )
c. EXISTS x ( EXISTS y
(p ( x, y ) = EXISTS z ( q ( x, z ) ) )
23.3 A representao a seguir um exemplo padro de um banco
de dados lgico.
HOMEM ( Ado
MULHER ( Eva
HOMEM ( Caim
HOMEM ( Abel
HOMEM ( Enoque
PAIS ( Ado, Caim
PAIS ( Ado, Abel
PAIS ( Eva, Caim
PAIS ( Eva, Abel
PAIS ( Caim, Enoque
PAI (x,y) = PAIS (x,y) ANDHOMEM (x)
ME ( x, y ) = PAIS ( x, y ) AND MULHER ( x
IRMOS ( x, y ) = PAIS ( z, x ) AND PAIS ( z, y
IRMO ( x, y ) = IRMOS ( x, y ) AND HOMEM ( x
IRM ( x, y ) = IRMOS ( x, y ) AND MULHER ( x
ANCESTRAL ( x, y ) = PAIS ( x, y
ANCESTRAL ( x, y ) = PAIS ( x, z ) AND ANCESTRAL ( z, y
Use o mtodo de resoluo para responder s seguintes
consultas:
a. Quem a me de Caim?
b. Quem so os irmos de Caim?
c. Quem so os irmos de Caim?
d. Quem so as irms de Caim?
e. Quem so os ancestrais de Enoque?
23.4 Defina os termos interpretao e modelo.
23.5 Escreva um conjunto de axiomas em Datalog para a poro
de definio (somente) do banco de dados de fornecedores,
peas e projetos.
23.6 D solues em Datalog, onde for possvel, para os
Exerccios 6.13 a 6.50.
23.7 D solues em Datalog, onde for possvel, para o
Exerccio 8.1.
23.8 Complete como desejar a explicao dada na Seo 23.7
sobre a unificao e a implementao da resoluo da consulta
Explodir pea P1.
689
REFERNCIAS E BIBLIOGRAFIA
A area dos sistemas baseados em lgica se expandiu nos
ltimos anos; a lista a seguir representa uma minscula
frao da literatura disponvel no momento. Ela est
organizada parcialmente em grupos, como a seguir:
- As referncias [23.1 a 23.91 so livros dedicados ao tema
da lgica em geral (particularmente em um contexto de
computao e/ou de bancos de dados), ou so colees de
artigos especficos sobre bancos de dados baseados em lgica.
- As referncias [23.10 a 23.12] so tutoriais, como tambm
os livros de Ceri eta!. [23.46] e Das [23.47].
- As referncias [23.141, [23.17 a 23.20], [23.301 e [23.49 a
23.50] esto relacionadas com a operao de fecho e sua
implementao.
- As referncias [23.2 1 a 23.241 descrevem uma importante
tcnica de processamento de consulta recursiva, chamada
conjuntos mgicos (magic sets) (e variaes sobre o tema).
Nota: sobre esse assunto, consulte tambm as referncias
[17.24 a 17.261.
As referncias restantes foram includas principalmente para
mostrar a continuidade das pesquisas sobre esse campo; elas
tratam de uma ampla variedade de aspectos do assunto e so
apresentadas, em sua maioria, sem comentrios.
23.1 Robert R. Stoll: Sets, Logic and Axiomatic Theories. San
Francisco, Calif.: W. H. Freeman and Company (1961).
Uma boa introduo lgica em geral.
23.2 Zohar Manna e Richard Waldinger: The Logical Basis for
Com puter Programming Volume 1: Deductive Reasoning (1985);
Volume II: Deductive Techniques (1990). Reading, Mass.:
Addison-Wesley (1985, 1990).
23.3 Peter M. D. Gray: Logic, Algebra and Databases.
Chichester, Inglaterra: Ellis Horwood Ltd. (1984).
Contm uma boa e suave introduo ao clculo proposicional e
ao clculo de predicados (entre Outros tpicos relevantes),
do ponto de vista de bancos de dados.
23.4 Adrian Walker, Michael McCord, John F. Sowa e Walter G.
Wilson: Knowledge Systems and Prolog (2 edio). Reading,
Mass.: Addison-Wesley (1990).
Esse livro trata da Programao em lgica em geral, no
especificamente de bancos de dados baseados em lgica, mas
contm uma grande seo relevante sobre esse ltimo tpico.
23.5 Herv Gallaire e Jack Minker: Logic and Data Bases. Nova
York, N. Y.: Plenum Publishing Corp. (1978). Uma das
primeiras, seno a primeira coleo de artigos sobre o
assunto.
23.6 Larry Kershberg (editor): Expert Database Systems (Proc.
lst Int. Workshop on Expert Database Systems, Kiawah Island,
S.C.). Menlo Park, Calif.: Benjamin/Cummings (1986).
Uma excelente e interessante coleo de artigos. Porm, nem
todos eles se relacionam diretamente ao assunto principal
deste captulo. Na verdade, os ttulos das sees causam um
certo grau de confuso sobre o que realmente o assunto de
sistemas de bancos de dados especialistas! Os ttulos so:
1. Teoria de bases de conhecimento.
2. Programao em lgica e bancos de dados.
3. Arquiteturas, ferramentas e tcnicas de sistemas de bancos
de dados especialistas.
4. Raciocnio sobre sistemas de bancos de dados
especialistas.
5. Acesso e interao inteligentes com bancos de dados.
Alm disso, h um artigo bsico de John Smith sobre sistemas
de bancos de dados especialistas e relatrios de grupos de
trabalho sobre (1) sistemas de gerenciamento de bases de
conhecimento, (2) Programao em lgica e bancos de dados e
(3) sistemas de bancos de dados orientados a objetos e
sistemas de conhecimento. Como Kershberg observa em seu
prefcio, o conceito de sistemas de bancos de dados
especialistas tem a conotao de diversas definies e
arquiteturas decididamente diferentes.
690
23.7 Jack Minker (editor): Foundations of Deductive Databases
and Logic Programming. San Mateo, Calif.:
Morgan Kaufmann (1988).
23.8 John Mylopoulos e Michael L. Brodie (editores): Readings
in Artificial Inteiligence and Databases. San Mateo, Calif.:
Morgan Kaufmann (1988).
23.9 Jeffrey D. Uliman: Database and Knowledge-Base Systems
(em dois volumes). Rockville, Md.: Computer Science Press
(1988, 1989).
O volume 1 dessa obra em dois volumes inclui um (longo)
captulo (de um total de 10 captulos) dedicado inteiramente
abordagem baseada na lgica. Esse captulo (que
incidentalmente a origem da linguagem Datalog) inclui uma
discusso do relacionamento entre a lgica e a lgebra
relacional, e outra sobre clculo relaciona! nas verses de
domnios e tuplas como um caso especial da abordagem
lgica. O Volume II inclui cinco captulos (de um total de
sete) sobre vrios aspectos dos bancos de dados baseados em
lgica.
23.10 Georges Gardarin e Patrick Valduriez: Relational
Databases and Knowledge Bases. Reading, Mass.: Addison-Wesley
(1989).
Contm um capitulo sobre sistemas dedutivos que (apesar de
sua natureza tutorial) entra na teoria subjacente, algoritmos
de otimizao, etc. com muitos mais detalhes que este
captulo.
23.11 Michael Stonebraker: Introduction to Integration of
Knowledge and Data Management, em Michael Stonebraker
(editor), Readings in Database Systems. San Mateo, Calif.:
Morgan Kaufmann (1988).
23.12 Herv Gallaire, Jack Minker e Jean-Marie Nicolas:
Logic and Databases: A Deductive Approach, ACM Comp. Surv
16, Nmero 2 (junho de 1984).
23.13 Veronica Dahl: On Database Systems Development through
Logic, ACM TODS 7, Nmero 1 (maro de
1982).
Uma boa e clara descrio das idias bsicas subjacentes a
bancos de dados baseados em lgica, com exemplos tirados de
um prottipo em Prolog, implementado por Dahl em 1977.
23.14 Rakesh Agrawal: Alpha: An Extension of Relational
Algebra to Express a Class of Recursive Queries, IEEE
Transactions on Software Engineering 14, Nmero 7 (julho de
1988).
Prope um novo operador chamado alpha que admite a formulao
de uma grande classe de consultas recursivas (na verdade,
um superconjunto das consultas recursivas lineares),
permanecendo dentro do quadro da lgebra relacional
convencional. A argumentao que o operador alpha
suficientemente poderoso para tratar da maioria dos problemas
que envolvem recurso, ao mesmo tempo que mais fcil de
implementar de forma eficiente que qualquer mecanismo de
recurso completamente geral. O artigo apresenta vrios
exemplos de uso do operador proposto; em particular, mostra
como podem ser facilmente tratados os problemas de fecho e
requisitos em bruto (consulte a referncia [23.17] e a
Seo 23.6, respectivamente).
A referncia [23.19] descreve alguns trabalhos correlatos
sobre implementao. A referncia [23.18] tambm relevante.
23.15 Raymond Reiter: Towards a Logical Reconstruction of
Relational Database Theory, em Michael L. Brodie, John
Mylopoulos e Joachim W. Schmidt (editores), On Conceptual
Modelling: Perspectives from Artificial Inteiligence,
Databases, and Programniing Languages. Nova York, N. Y.:
Springer-Verlag (1984).
Conforme mencionamos na Seo 23.2, o trabalho de Reiter no
foi, de modo algum, o primeiro nessa rea muitos
pesquisadores tinham investigado antes o relacionamento entre
a lgica e os bancos de dados (por exemplo, consulte as
referncias [23.51, [23.71 e [23.13]) mas parece ter sido a
reconstruo lgica da teoria relaciona! de Reiter o
trabalho que deu impulso a grande parte da atividade
subsequente e ao elevado grau de interesse atual na rea.
23.16 Franois Bancilhon e Raghu Ramakrishnan: An Amateur's
Introduction to Recursive Query Processing
Strategies, Proc. 1986 ACM SIGMOD Int. Conf. on Management
of Data, Washington, DC (maio de
1986). Republicado em forma revisada em Michael Stonebraker
(editor), Readings in Database Systems. San
Mateo, Calif.: Morgan Kaufmann (1988). Tambm republicado na
referncia [23.81.
Urna excelente exposio. O artigo comea observando que
existe um lado positivo e um lado negativo em toda a pesquisa
sobre o problema da implementao de consultas recursivas. O
lado positivo que foram identificadas numerosas tcnicas
que pelo menos resolvem o problema; o lado negativo que no
691
est absolutamente claro como escolher a tcnica mais
apropriada em uma determinada situao (em particular, a
maioria das tcnicas apresentada na literatura com pouca ou
nenhuma discusso sobre caractersticas de desempenho). Em
seguida, aps uma seo que descreve as idias bsicas de
bancos de dados lgicos, o artigo entra na descrio de uma
srie de algoritmos propostos avaliao ingnua, avaliao
semi-ingnua, consulta/subconsulta iterativa,
consultalsubconsuita recursiva, APEX, Prolog, Henschen/Naqvi,
Aho-Ullman, Kifer-Lozinskii, contagem, conjuntos mgicos e
conjuntos mgicos generalizados. O artigo compara essas
diferentes abordagens com base no domnio de aplicaes (isto
, a classe de problemas aos quais o algoritmo pode ser
aplicado de forma til), desempenho e facilidade de
implementao. O artigo inclu tambm nmeros de desempenho
(com anlises comparativas) a partir de testes dos diversos
algoritmos em um benchmak simples.
23.17 Yannis F. Ioannidis: On the Computation of the
Transitive Closure of Relational Operators, Proc. l2th Int.
Conf. on Very Large Data Bases, Kyoto, Japo (agosto de
1986).
O fecho uma operao de fundamental importncia no
processamento de consultas recursivas [23.181. Esse artigo
prope um novo algoritmo (baseado em uma abordagem de
dividir e conquistar) para a implementao dessa operao.
Consulte tambm as referncias [23.14] [23.18 a 23.20] e
[23.49 a 23.50].
23.18 H. V. Jagadish, Rakesh Agrawal e Linda Ness: A Study
of Transitive Closure as a Recursion Mechanism, Proc. 1987
ACM SIGMOD Int. Conf. on Management of Data, San Francisco.
Calif.: (maio de 1987).
Citando o resumo: [Este artigo demonstra] que toda consulta
linearmente recursiva pode ser expressa como um fecho, talvez
precedido e seguido por operaes j disponveis na lgebra
relacional. Assim, a sugesto dos autores a de que basta
fornecer uma implementao eficiente do fecho como base para
proporciona uma implementao eficiente da recurso linear em
geral e, portanto, para tornar os SGBDs dedutivos eficientes
em uma grande classe de problemas recursivos.
23.19 Rakesh Agrawal eH. Jagadish: DirectAlgorithms for
Computing the Transitive Closure of Database Relations,
Proc. l3th Int. Conf. on Very Large Data Bases, Brighton,
Reino Unido (setembro de 1987).
Prope um conjunto de algoritmos de fecho que no vm o
problema como uma questo de avaliar uma recurso, mas sim de
obter o fechamento a partir de princpios bsicos (da o
termo direto). O artigo inclui um resumo til de obras
anteriores sobre outros algoritmos diretos.
23.20 Hongjun Lu: New Strategies for Computing the
Transitive Closure of a Database Relation, Proc. l3th Int.
Conf. on Very Large Data Bases) Brighton, Reino Unido
(setembro de 1987).
Mais algoritmos para fecho. Como a referncia [23.191, o
artigo tambm inclui uma relao til de abordagens
anteriores para o problema.
23.21 Franois Bancilhon, David Maier, Yehoshua Sagiv e
Jeffrey D. Uliman: Magic Sets and Other Strange Ways to
Implement Logic Programs, Proc. Sth ACM SIGMOD-SIGACT
Symposium on Principies of Database Systems (1986).
A idia bsica de conjuntos mgicos introduzir
dinamicamente novos conjuntos de regras (regras mgicas)
que oferecem a garantia de produzir o mesmo resultado que a
consulta original, embora sejam mais eficientes, no sentido
de reduzirem o conjunto de fatos relevantes (consulte a
Seo 23.7). Os detalhes so um pouco complexos e esto alm
do escopo destas notas; consulte o artigo ou a pesquisa de
Bancilhon e Ramakrishnan [23.161 ou os livras de Ullman
[23.9] ou de Gardarin e Valduriez [23.10] para ver uma
explicao mais detalhada. Porm, observamos o surgimento de
numerosas variaes sobre a idia bsica veja, por exemplo,
as referncias [23.22 a 23 .241 a seguir. Consulte tambm as
referncias [17.24 a 17.26].
23.22 Catriel Beeri e Raghu Ramakrishnan: On the Power of
Magic, Proc. 6th ACM SIGMOD-SIGACT Symposium on Principies
of Database Systems (1987).
23.23 Domenico Sacc e Carlo Zaniolo: Magic Counting
Methods, Proc. 1987 ACM SIGMOD Int. Conf. on Management of
Data, San Francisco, Calif. (maio de 1987).
23.24 Georges Gardarin: Magic Functions: A Technique to
Optimize Extended Datalog Recursive Programs, Proc. l3th
lnt. Conf. on Very Large Data Bases, Brighton, Reino Unido
(setembro de 1987).
23.25 A. Aho e J. D. Ullman: Universality of Data Retrievai
Languagens, Proc. 6th ACM Symposium on PrincipIes of
Programming Languages, San Antonio, Tx. (janeiro de 1979).
692
Dada uma sequncia de relaesR, f(R), f(f(R)), ... (onde f
alguma funo fixa), o menor ponto fixo da sequncia
definido como uma relao R* derivada de acordo com o
seguinte algoritmo de avaliao ingnua (consulte a Seo
23.7):
R* : R
fazer at R* parar de crescer
R* R' UNION f(R*)
fim
Esse artigo prope a incluso de um operador menor ponto fixo
na lgebra relaciona!.
23.26 Jeffrey D. U!!man: Implementation of Logical Query
Languages for Databases,ACM TODS 10, Nmero 3 (setembro de
1985).
Descreve uma importante c!asse de tcnicas de implementao
para consultas possivelmente recursivas. As tcnicas so
definidas em termos de regras de captura sobre rvores de
regras/objetivos, as quais so grafos representando
estratgias de consulta em termos de clusulas e predicados.
O artigo define vrias dessas regras uma que corresponde
aplicao de operadores da lgebra relacional, outras duas
que correspondem ao encadeamento direto e inverso,
respectivamente, e um regra lateral que permite que os
resultados sejam repassados de um subobjetivo a outro. A
passagem lateral de informaes (sidendys information passiy)
se tornou mais tarde a base das tcnicas chamadas de conjunto
mgico [23.2 1 a 23.24].
23.27 Sha!om Tsur e Carlo Zaniolo: LDL: A Logic-Based Data-
Language, Proc. l2th Int. Conf. on Very Large Data Bases,
Kyoto, Japo (agosto de 1986).
A LDL inclui (1) um gerador de tipo conjunto, (2) uma
negao (baseada na diferena entre conjuntos), (3) operaes
de definio de dados e (4) operaes de atualizao. E uma
linguagem lgica pura (no h nenhuma dependncia de
ordenao entre instrues) e compilada, no interpretada.
Consulte tambm o livro de Naqvi e Tsur [23.45] sobre o mesmo
assunto.
23.28 Franois Bancilhon: Naive Evaluation of Recursively
Defined Relations, em M. Brodie e J. Mylopoulos (editores),
On Knowledge Base Management Systems: Integrating Database
and AI Systems. Nova York, N.Y.: Springer-Verlag (1986).
23.29 Eliezer L. Lozinskii: A Problem-Oriented Inferential
Database System,ACM TODS 11, Nmero 3 (setembro de 1986).
A origem do conceito de fatos relevantes, O artigo descreve
o prottipo de um sistema que faz uso do banco de dados
extensional para controlar aquilo que seria em caso contrrio
uma expanso muito rpida do espao de busca, qual as
tcnicas inferenciais muitas vezes do origem.
23.30 Arnon Rosentha! eta!.: Traversal Recursion: A
Practical Approach to Supporting Recursive Applications,
Proc. 1986 ACM SIGMOD Int. Conf. on Management of Data,
Washington, DC (junho de 1986).
23.31 Georges Gardarin e Christophe de Maindrevil!e:
Evaluation of Database Recursive Logic Programs as Recurrent
Function Series, Proc. 1986 ACM SIGMOD Int. Conf. on
Management of Data, Washington, DC (junho de 1986).
23.32 Louiqa Raschid e StanleyY. W. Su: A Parailel
Processing Strategy for Evaluating Recursive Queries, Proc.
l2th Int. Conf. on Very Large Data Bases, Kyoto, Japo
(agosto de 1986).
23.33 Nicolas Spyratos: The Partition Model: A Deductive
Database Model,ACM TODS 12, Nmero 1 (maro de 1987).
23.34 Jiawei Han e Lawrence J. Henschen: Handling Redundancy
in the Processing of Recursive Queries, Proc.
1987 ACM SIGMOD Int. Conf. on Management of Data, San
Francisco, Calif.: (maio de 1987).
23.35 Weining Zhang e C. T. Yu: A Necessary Condition for a
Doubly Recursive Rule to be Equivalent to a Linear Recursive
Rule, Proc. 1987 ACM SIGMOD Int. Conf. on Management of
Data, San Francisco, Calif.:
(maio de 1987).
23.36 Wo!fgang Nejd!: Recursive Strategies for Answering
Recursive Queries The RQVFQI Strategy, Proc. l3th Int.
Conf. on Very Large Data Bases, Brighton, Reino Unido
(setembro de 1987).
23.3 7 Kyu-Young Whang e Shamkant B. Navathe: An Extended
Disjunctive Normal Form Approach for Optimizing Recursive
Logic Queries in Loosely Coupled Environments, Proc. l3th
Int. Conf. on Very Large Data
Bases, Brighton, Reino Unido (setembro de 1987). 693
23.38 Jeffrey F. Naughton: Compiling Separable Recursions,
Proc. 1988 ACM SIGMOD Int. Conf. of Data, Chicago, Iii.
(junho de 1988).
23.39 CheongYoun, LawrenceJ. Henschen eJiawei Han:
Classification of Recursive Formulas in Deductive
Databases, Proc. 1988 ACM SIGMOD Int. Conf. on Management of
Data, Chicago, Iii. (junho de 1988).
23.40 S. Ceri, G. Gottlob e L. Lavazza: Translation and
Optimization of Logic Queries: The Algebraic Approach, Proc.
l2th Int. Conf. on Very Large Data Bases, Kyoto, Japo
(agosto de 1986).
23.41 S. Ceri e L. Tanca: Optimization of Systems of
Algebraic Equations for Evaluating Datalog Queries, Proc.
l3th Int. Conf. on Very Large Data Bases, Brighton, Reino
Unido (setembro de 1987).
23.42 Alien Van Gelder: Message Passing Framework for
Logical Query Evaluation, Proc. 1988 ACM SIGMOD Int. Conf.
on Management of Data, Chicago, Iii. (junho de 1986).
23.43 Ouri Wolfson e Avi Silberschatz: Distributed
Processing of Logic Programs, Proc. 1988 ACM SIGMOD Int.
Conf. on Management of Data, Chicago, Iii. (junho de 1988).
23.44 Jeffrey E. Naughton et ai.: Efficient Evaluation of
Right-, Left-, and Multi-Linear Rules, Proc. 1989 ACM SIGMOD
Int. Conf. on Management of Data, Portland, Ore. (junho de
1989).
23.45 Shamim Naqvi e Shalom Tsur: A Logicai Language for Data
and Knowledge Bases. Nova York, N.Y.: Computer Science Press
(1989).
Uma apresentao em profundidade da linguagem LDL, com a
extenso de um livro [23.27].
23.46 S. Ceri, G. Gottlob e L. Tanca: Logic Programming and
Databases. Nova York, N.Y.: Springer-Verlag (1990).
23.47 Subrata Kumar Das: Deductive Databases and Logic
Prograrnming. Reading, Mass.: Addison-Wesley (1992).
23.48 Michael Kifer e Eliezer Lozinskii: On Compile Time
Query Optimization in Deductive Databases by Means of Static
Filtering, ACM TODS 15, Nmero 2 (setembro de 1990).
23.49 Rakesh Agrawal, Shaul Dar e H. V. Jagadish: Direct
Transitive Closure Algorithms: Design and Performance
Evaluation, ACM TODS, Nmero 3 (setembro de 1990).
23.50 H. V. Jagadish: A Compression Method to Materialize
Transitive Closure. ACM TQDS 15, Nmero 4 (dezembro de
1990).
Prope uma tcnica de indexao que permite o armazenamento
do fecho de uma determinada relao, em forma compactada, de
tal modo que a verificao do aparecimento ou no de uma dada
tupla no fechamento pode ser feita atravs da conferncia de
uma nica tabela, seguida por uma comparao entre ndices.
23.5 1 Serge Abiteboul e Stphane Grumbach: A Rule-Based
Language with Functions and Sets,ACM TODS 16, Nmero 1
(maro de 1991).
Descreve uma linguagem chamada COL (complex object
language) uma extenso de Datalog que integra as idias
de bancos de dados dedutivos e de objetos.
RESPOSTAS A EXERCICIOS SELECIONADOS
23.1 a. Vlida. b. Vlida. c. No-vlida.
23.2 Nos itens seguintes, a, b e c so constantes de Skolem e
f uma funo de Skolem com dois argumentos.
a. p(x,y)=q(x,f(x,y))
b. p (a,b) =q (a,z)
c. p(a,b)=-q(a,c)
23.6 De acordo com nossa prtica usual, numeramos as solues
seguintes como 23.6.n, onde 6.n o nmero do exerccio
original no Captulo 6.
23.6.13 ? = J ( j, jn, jc
23.6.14 ? = J ( j, jn, Londres
694
23.6.15 RES ( f ) = FPJ ( f, p, Ji
RES ( f )
23.6.16 ? = FPJ (1. p, j, q ) AND 300 q AND q 750
23.6.17 RES ( p1, pc ) = P ( p, pn, p1, w, pc
? = RES ( p1, pc )
23.6.18 RES (f, p,i ) =F (f,fn,ft, c) AND
P ( p, pn, p1, w, c ) AND
J ( j, jn, c
?= RES ( f, p, j )
23.6.19 e 23.6.20 No podem ser feitos sem negao.
23.6.21 RES ( p ) = FPJ ( f, p, j, q ) AND
F ( f, fn, ft, Londres
? = RES ( p
23.6.22 RES ( p ) = FPJ ( f, p, j, q ) AND
F ( f, fn, st, Londres ) AND
J ( j, jn, Londres
= RES ( p )
23.6.23 RES ( cl, c2 ) = FPJ ( f, p, j, q ) AND
F ( f, fn, ft, cl ) AND
J (is in5 c2 )
? = RES ( cl, c2 )
23.6.24 RES ( p ) = FPJ ( f, p, j, q ) AND
F ( f, fn, ft, c ) AND
J (i5 in5 c )
? = RES ( p
23.6.25 No pode ser feito sem negao.
23.6.26 RES ( p1, p2 ) = FPJ ( f, p1, jl, ql ) AND
FPJ ( f, p2, j2, q2
? = RES ( p1, p2 )
23.6.27 a 23.6.30 No podem ser feitos sem agrupamento e
agregao.
23.6.31 RES ( in ) = J ( i, in5 jc ) AND
FPJ ( Fi, p, i5 q
? = RES ( in
23.6.32 RES ( p1 ) = P ( p, pn, p1, w, pc ) AND
FPJ ( Si, p, i, q
? = RES ( p1
23.6.33 RES ( p ) = P ( p, pn, p1, w. pc ) AND
FPJ ( f, p, j, q ) AND
J ( i5 in, Londres
? = RES ( p
23.6.34 RES ( i ) = FPJ ( f, p, i5 q ) AND
FPJ ( Fi, p, i2, q2 )
RES ( i
23.6.35 RES ( f ) = FPJ ( f, p, i5 q ) AND
FPJ ( f2, p. j2, q2 ) AND
FPJ ( f2, p2, i3, q3 ) AND
P ( p2, pn, Vermelho, w, c
? = RES ( f )
23.6.36 RES ( f ) = F ( f, fn, ft, c ) AND
F ( Fi, fnl, ftl, cl ) AND ft < ftl
?4=RES (f) 695
23.6.37 a 23.6.39 No podem ser feitos sem agrupamento e
agregao.
23.6.40 a 23.6.44 No podem ser feitos sem negao.
23.6.45 RES ( c ) = F ( f, fn, ft, c
RES ( c ) = P (p, pn, p1, w, c )
RES ( c ) = J ( j, jn, c )
RES ( c )
23.6.46 RES ( p ) = FPJ ( f, p, j, q ) AND
F ( f, fn, ft, Londres
RES ( p ) = FPJ ( f, p, j, q ) AND
J ( j, jn, Londres
? = RES ( p )
23.6.4 7 e 23.6.48 No podem ser feitos sem negao.
23.6.49 e 23.6.50 No podem ser feitos sem agrupamento.
23.7 Mostramos as restries como implicaes convencionais,
em lugar do estilo para trs (backward) Datalog.
a. CIDADE ( Londres
CIDADE ( Paris
CIDADE ( Roma
CIDADE ( Atenas
CIDADE ( Oslo
CIDADE ( Estocolmo
CIDADE ( Madri
CIDADE ( Amsterd
F (f, fn, ft, c ) = CIDADE ( c
P(p,pn,pc,pw,c)=CIDADE(c)
J(j,jn,c) =CIDADE(c)
b. No pode ser feito sem operadores escalares apropriados.
c. P ( p, pn, Vermelho, pw, pc ) = pw < 50
d. No pode ser feito sem operadores de negao ou de
agregados.
e. F ( fi, fnl, ftl, Atenas ) AND
F ( f2, fn2, ft2, Atenas ) = fi f2
f. No pode ser feito sem agrupamento e agregao.
g. No pode ser feito sem agrupamento e agregao.
h. J ( j, jn, c ) = F ( f, fn, ft, c )
i. J ( j, jn, c ) = FPJ ( f, p, j, q ) AND F ( f, fn, ft, c )
j. P ( p1, pnl, p11, pwl, pcl ) = P ( p2, pn2, Vermelho, pw2,
pc2
k. No pode ser feito sem operadores de agregados.
1. F ( f, fn, ft, Londres ) = FP li, P2, q)
m. P ( p1, pnl, pil, pwl, pcl )
P ( p2, pn2, Vermelho, pw2, pc2 ) AND pw2 < 50
n. No pode ser feito sem operadores de agregados.
o. No pode ser feito sem operadores de agregados.
p. No pode ser feito ( uma restrio de transio).
q. No pode ser feito ( uma restrio de transio).
696