Esquemas de Bancos de Dados.................. Dados............................ .................... ..................... ..................... ..................... ..................... .................... ..................... ..................................2 .......................2 Álgebra Relacional............... Relacional......................... ..................... ..................... .................... ..................... ..................... ..................... ..................... .................... ..................... ...................................4 ........................4 Operações Fundamentais..................................................................................................................................4 Seleço..........................................................................................................................................................4 !ro"eço............... !ro"eço.......................... ..................... .................... ..................... ..................... ..................... ..................... .................... ..................... ..................... ..................... .................................# ......................# !roduto $artesiano............... $artesiano......................... ..................... ..................... .................... ..................... ..................... ..................... ..................... .................... .....................................# ...........................# Renomeaço.............. Renomeaço........................ ..................... ..................... ..................... ..................... .................... ..................... ..................... ..................... ..................... .....................................% ...........................% &nio................. &nio........................... .................... ..................... ..................... ..................... ..................... .................... ..................... ..................... ..................... ..................... ...................................' .........................' Di(erença.............. Di(erença......................... ..................... .................... ..................... ..................... ..................... ..................... .................... ..................... ..................... ..................... ................................) .....................) Operações *dicionais............ *dicionais...................... ..................... ..................... ..................... ..................... .................... ..................... ..................... ..................... ..................... ...........................+2 .................+2 ,nterseço....................................................................................................................................................+2 -unço atural............... atural......................... .................... ..................... ..................... ..................... ..................... .................... ..................... ..................... ..................... ................................+/ .....................+/ Di0iso........................................................................................................................................................+4 $1lculo Relacional..............................................................................................................................................+% $1lculo Relacional de uplas............ uplas....................... ..................... .................... ..................... ..................... ..................... ..................... .................... ..................... ..........................+% ...............+% De(inições Formais.....................................................................................................................................+% E3emplos............... E3emplos......................... ..................... ..................... .................... ..................... ..................... ..................... ..................... .................... ..................... ..................... .............................+% ...................+% $1lculo Relacional de Domnios............... Domnios......................... ..................... ..................... .................... ..................... ..................... ..................... ..................... ............................+) ..................+) De(inições Formais.....................................................................................................................................+) E3emplos............... E3emplos......................... ..................... ..................... .................... ..................... ..................... ..................... ..................... .................... ..................... ..................... .............................+) ...................+) 5BE.................... 5BE.............................. ..................... ..................... ..................... ..................... .................... ..................... ..................... ..................... ..................... .................... ..................... ..........................+6 ...............+6 S57.....................................................................................................................................................................2+ Declaraço de Domnios.................................................................................................................................22 8anipulaço de abelas........ abelas.................. ..................... ..................... .................... ..................... ..................... ..................... ..................... .................... ......................................22 ............................22 D87................... D87............................. .................... ..................... ..................... ..................... ..................... .................... ..................... ..................... ..................... ..................... ....................................22 ..........................22 D57................................................................................................................................................................2/ Segunda 7ista de E3emplos............................................................................................................................24 erceira erceira 7ista de E3emplos................ E3emplos.......................... .................... ..................... ..................... ..................... ..................... .................... ..................... ....................................2# .........................2# S57 Embutida............... Embutida......................... ..................... ..................... .................... ..................... ..................... ..................... ..................... .................... ..................... ....................................2' .........................2' Recon9ecendo $omandos S57 Embutidos................ Embutidos.......................... .................... ..................... ..................... ..................... ..................... .................... ..................2' ........2' &ma !rimeira :iso da S57 Embutida......................................................................................................2' :ari10eis :ari10eis da 7inguagem ;ospedeira na S57 Embutida................ Embutida........................... ..................... .................... .......................................2' .............................2' Declaraço de :ari10eis...... :ari10eis................ .................... ..................... ..................... ..................... ..................... .................... ..................... ..................... ....................................2) ..........................2) SE7E$ na S57 Embutida........................................................................................................................2) &!D*E em S57 Embutida......................................................................................................................2) DE7EE e ,SER na S57 Embutida......................................................................................................2) Outros $omandos S57 Embutidos.............. Embutidos......................... ..................... ..................... ..................... .................... ..................... ..........................................26 ...............................26 $ursores......................................................................................................................................................26 O &so de $ursores !ara &!D*E &!D*E e DE7EE.................... DE7EE.............................. ..................... ..................... ..................... .......................................26 ............................26
+
Esquemas de Bancos de Dados &m esquema de relação < uma lista de atributos e seus domnios correspondentes. &m esquema de banco de dados < o pro"eto l=gico do BD enquanto uma instância de banco de dados < o con"unto de dados no BD em um determinada instante. E3emplo> $onsidere?se um modelo banc1rio com cinco relações dep=sitos@ empr Dep=sitos Dep=sitoAesquemanomeA(@contaAC@nome Dep=sitoAesquemanomeA(@contaAC@nomeAc@saldo Ac@saldo ou string string string @saldo> Dep=sitoAesquemanomeA(> @contaAC> @contaAC>inteiro@nomeAc> string @saldo>inteiro Filiais FilialAesquemanomeA(@ati0o@cidadeA( $orrentistas $orrentistaAesquemanomeAc@rua@cidadeAc Empr
nome_f
depósitos conta_#
Bingen Bota(ogo Flamengo Flamengo ,cara 8adureira 8adureira
nome_f
224'/ 2+) 22+ 2# +6)'2 +6)) +6)6
,cara Bingen Bota(ogo Flamengo 8adureira
saldo
7indal0a !edro !edro !aulo -oo Rosa !edro
))6 )4# #+ 2/+# /24/ #/+2 4+++
empréstimos empréstimo-# nome_c
Bingen Flamengo ,cara 8adureira
nome_f
nome_c
%%6) ##') +4## //%' filiais ativo
6 +' 2/ /4 2+
valor
7indal0a !aulo -oo !edro
cidade_f
+# 2 + 2
iter=i !etr=polis Rio de -aneiro Rio de -aneiro Rio de -aneiro
2
correntistas rua
nome_c
-oo 7aerte 7indal0a eraldo 7aura !aulo !edro Rosa
8iguel de Frias a0io !ei3oto *l(enas $urimat1 $otingo 8em de S1 $urimat1 &ruguai
cidade_c
iter=i iter=i !etr=polis Rio de -aneiro Rio de -aneiro Rio de -aneiro Rio de -aneiro Rio de -aneiro
clientes nome_c
gerente
-oo 7aerte 7aura 7indal0a !aulo !edro
Erasmo !edro -oo -oo $
/
Álgebra Relacional * Álgebra Relacional < uma linguagem de consulta procedimental que possui seis operações (undamentais e di0ersas outras. $ada uma das operações da Álgebra Relacional que se seguem produG como resultado uma relaço. Operações (undamentais • Seleço un1ria • !ro"eço un1ria • Renomeaço un1ria • !roduto cartesiano bin1ria • &nio bin1ria • Di(erença bin1ria Outras operações • ,nterseço • -unço natural • Di0iso • *tribuiço Operações Fundamentais
Seleção
Esta operaço seleciona as tuplas que atendem a uma determinada condiço. H denotada pela letra grega sigma com o predicado aparecendo como subscrito. * relaço argumento aparece entre parInteses depois do sigma. !ara selecionar as tuplas da relaço empréstimos aonde a (ilial se"a “Madureira” escre0e? se σ nome A f =J MadureiraJBempré
stimos D
* relaço resultado ser1 constituda de apenas uma tupla 8adureira //%' !edro 2 !ara obter os empr +2EEBempré
stimos D
!ara obter os clientes que ten9am o mesmo nome que seus gerentes pode?se escre0er σ nome A c = gerente B clientesD
* relaço resultado ser1 constituda de apenas uma tupla nome_c
gerente
!edro
!edro
4
Projeção
Esta operaço copia de sua relaço argumento apenas os atributos especi(icados. $omo uma relaço < um con"unto e0entuais tuplas duplicadas so eliminadas. !ro"eço < denotada pela letra grega pi maiKsculo com os atributos aparecendo como subscritos. !ara obter uma relaço de empr
∏nome A f @nomeA c ( empré stimos) obtendo?se nome_f
nome_c
Bingen Flamengo ,cara 8adureira 8adureira
7indal0a !aulo -oo Rosa !edro
!ara obter os nomes dos correntistas que ten9am o mesmo nome que seus gerentes escre0e?se
∏nome A c Bσ nome A c=gerente B clientesDD obtendo?se nome_c
!edro Produto Cartesiano
O !roduto $artesiano de duas relações < denotado por . O resultado da operaço r! r" < uma no0a relaço com uma tupla para cada poss0el par de tuplas de r! e r". !ara e0itar ambigLidade os atributos tem seus nomes concatenados com os nomes das relações a que pertencem. 5uando ine3iste ambigLidade o nome da relaço pode ser omitido. O resultado da operaço < uma no0a relaço. Se r! possui n! tuplas e r" possui n" tuplas ento r r! r" possui n!$n" tuplas. !ara encontrar os clientes do gerente M %oãoN e a cidade na qual eles 0i0em necessita?se de in(ormações das relações correntistas e clientes e pode?se escre0er
(
σclientes.nome A c=correntistas.nomeAc σ gerente=J João J
( clientes × correntisitas) )
obtendo?se nome_c
gerente
nome_c
rua
cidade_c
7aura 7indal0a
-oo -oo
7aura 7indal0a
$otingo *l(enas
Rio de -aneiro !etr=polis
Se desta relaço apenas se dese"asse o nome do correntista e sua cidade usar?se?ia uma pro"eço
∏clientes.nomeA c Bσclientes.nomeAc =correntistas.nomeAc ( σ gerente=J João J ( clientes × correntisitas) ) D obtendo?se nome_c
cidade_f
7aura 7indal0a
Rio de -aneiro !etr=polis
#
Renomeação
* operaço de renomeaço resol0e os problemas que ocorrem quando se (aG o produto cartesiano de uma relaço por ela mesma. $onsidere?se@ por e3emplo@ que se dese"a encontrar os nomes dos correntistas que moram na mesma cidade e na mesma rua que !edro. !ode?se obter a cidade e a rua de !edro escre0endo
∏rua@cidadeA c Bσ nomeAc=J PedroJ BcorrentistasDD obtendo?se rua
cidade_c
$urimat1
Rio de -aneiro
!ara obter outros correntistas com a mesma in(ormaço necessita?se re(erenciar no0amente a relaço correntistas@ da (orma σ P Bcorrentistas × B∏rua@cidadeA c Bσ nomeA c =J PedroJ Bcorrentistas DDDD
a e3presso anterior ! < um predicado de seleço requerendo a igualdade de rua e cidadeAc. !ara distinguir entre os di(erentes 0alores de rua aparecendo no produto cartesiano usa?se o operador de renomeaço denotado pela letra grega ro cu"o ndice < o no0o nome da relaço e o argumento entre parInteses < o nome anterior@ ou se"a σ corrent 2.rua=correntistas.rua ∧corrent 2.cidade Ac =correntistas.cidade Ac
Bcorrentistas × B∏rua@ cidade A c Bσ nome Ac=J PedroJ B ρ corrent 2 BcorrentistasDDDDD obtendo?se nome_c
correntistas rua cidade_c
nome_c
rua
cidade_c
!edro !edro eraldo eraldo
$urimat1 $urimat1 $urimat1 $urimat1
!edro eraldo !edro eraldo
$urimat1 $urimat1 $urimat1 $urimat1
Rio de -aneiro Rio de -aneiro Rio de -aneiro Rio de -aneiro
Rio de -aneiro Rio de -aneiro Rio de -aneiro Rio de -aneiro
corrent"
$omo o que se quer dessa relaço < apenas o nome dos correntistas (aG?se uma pro"eço
∏correntistas.nomeA c Bσ corrent 2.rua=correntistas.rua∧corrent 2.cidade Ac =correntistas .cidade Ac Bcorrentistas × B∏rua@ cidade A c Bσnome Ac=J PedroJ B ρ corrent 2 BcorrentistasDDDDDD obtendo?se nome_c
!edro eraldo
%
União
* operaço de unio para (uncionar tal como na teoria dos con"untos necessita que as relações a se unir ten9am o mesmo nKmero de atributos e que os domnios dos atributos correspondentes coincidam. !ara encontrar os usu1rios da agIncia 8adureira < preciso encontrar todos aqueles que ou ten9am conta na agIncia ou que ten9am (eito empr
∏nome A c ( σnome A f =J MadureiraJ ( empré stimos) ) ∏nome A c ( σ nomeA f =J Madureira J ( depósitos ) ) $omo em todas as operações de con"untos as duplicadas so eliminadas e o que se obt
nome_f
8adureira
//%'
valor
!edro
2
empréstimos em Madureira nome_c
!edro depósitos em Madureira conta_# nome_c
nome_f
8adureira 8adureira
+6)) +6)6
Rosa !edro
saldo
#/+2 4+++
depósitos em Madureira nome_c
Rosa !edro usu&rios em Madureira nome_c
Rosa !edro
'
Diferença
* operaço di(erença encontra as tuplas que esto em uma relaço mas no esto na outra. !ara encontrar os usu1rios do banco que na agIncia 8adureira ten9am conta corrente mas no ten9am empr
∏nome A c ( σnome A f =J Madureira J ( depósitos) ) − ∏nome A c ( σ nomeA f =J Madureira J ( empré stimos ) ) o resultado obtido < depósitos conta_#
nome_f
8adureira 8adureira
+6)) +6)6
nome_c
saldo
Rosa !edro
#/+2 4+++
depósitos em Madureira nome_c
Rosa !edro empréstimos empréstimo_# nome_c
nome_f
8adureira
//%'
!edro
valor
2
empréstimos em Madureira nome_c
!edro usu&rios com conta e sem empréstimos em Madureira nome_c
Rosa
)
!ara encontrar o maior saldo dentre as contas correntes do banco o que se (aG < encontrar uma relaço r que no conten9a o maior saldo e 0eri(icar a di(erença entre a relaço anterior e a relaço de dep=sitos. !ara encontrar r o que se (aG <
∏depósitos.saldo ( σdepósitos.saldo
Bingen Bingen Bingen Bingen Bingen Bingen Bingen Bota(ogo Bota(ogo Bota(ogo Bota(ogo Bota(ogo Bota(ogo Bota(ogo Flamengo Flamengo Flamengo Flamengo Flamengo Flamengo Flamengo Flamengo Flamengo Flamengo Flamengo Flamengo Flamengo Flamengo ,cara ,cara ,cara ,cara ,cara ,cara ,cara
depósitos conta_# nome_c
224'/ 7indal0a 224'/ 7indal0a 224'/ 7indal0a 224'/ 7indal0a 224'/ 7indal0a 224'/ 7indal0a 224'/ 7indal0a 2+) !edro 2+) !edro 2+) !edro 2+) !edro 2+) !edro 2+) !edro 2+) !edro 22+ !edro 22+ !edro 22+ !edro 22+ !edro 22+ !edro 22+ !edro 22+ !edro 2# !aulo 2# !aulo 2# !aulo 2# !aulo 2# !aulo 2# !aulo 2# !aulo +6)'2 -oo +6)'2 -oo +6)'2 -oo +6)'2 -oo +6)'2 -oo +6)'2 -oo +6)'2 -oo
saldo
nome_f
))6Bingen ))6Bota(ogo ))6Flamengo ))6Flamengo ))6,cara ))68adureira ))68adureira )4#Bingen )4#Bota(ogo )4#Flamengo )4#Flamengo )4#,cara )4#8adureira )4#8adureira #+Bingen #+Bota(ogo #+Flamengo #+Flamengo #+,cara #+8adureira #+8adureira 2/+#Bingen 2/+#Bota(ogo 2/+#Flamengo 2/+#Flamengo 2/+#,cara 2/+#8adureira 2/+#8adureira /24/Bingen /24/Bota(ogo /24/Flamengo /24/Flamengo /24/,cara /24/8adureira /24/8adureira
conta_#
d nome_c
saldo
224'/ 7indal0a 2+) !edro 22+ !edro 2# !aulo +6)'2 -oo +6)) Rosa +6)6 !edro 224'/ 7indal0a 2+) !edro 22+ !edro 2# !aulo +6)'2 -oo +6)) Rosa +6)6 !edro 224'/ 7indal0a 2+) !edro 22+ !edro 2# !aulo +6)'2 -oo +6)) Rosa +6)6 !edro 224'/ 7indal0a 2+) !edro 22+ !edro 2# !aulo +6)'2 -oo +6)) Rosa +6)6 !edro 224'/ 7indal0a 2+) !edro 22+ !edro 2# !aulo +6)'2 -oo +6)) Rosa +6)6 !edro
))6 )4# #+ 2/+# /24/ #/+2 4+++ ))6 )4# #+ 2/+# /24/ #/+2 4+++ ))6 )4# #+ 2/+# /24/ #/+2 4+++ ))6 )4# #+ 2/+# /24/ #/+2 4+++ ))6 )4# #+ 2/+# /24/ #/+2 4+++
6
continuação de depósitos d'depósitos(
nome_f
depósitos conta_# nome_c
8adureira 8adureira 8adureira 8adureira 8adureira 8adureira 8adureira 8adureira 8adureira 8adureira 8adureira 8adureira 8adureira 8adureira
nome_f
+6)) Rosa +6)) Rosa +6)) Rosa +6)) Rosa +6)) Rosa +6)) Rosa +6)) Rosa +6)6 !edro +6)6 !edro +6)6 !edro +6)6 !edro +6)6 !edro +6)6 !edro +6)6 !edro
saldo
nome_f
#/+2Bingen #/+2Bota(ogo #/+2Flamengo #/+2Flamengo #/+2,cara #/+28adureira #/+28adureira 4+++Bingen 4+++Bota(ogo 4+++Flamengo 4+++Flamengo 4+++,cara 4+++8adureira 4+++8adureira
conta_#
d nome_c
224'/ 7indal0a 2+) !edro 22+ !edro 2# !aulo +6)'2 -oo +6)) Rosa +6)6 !edro 224'/ 7indal0a 2+) !edro 22+ !edro 2# !aulo +6)'2 -oo +6)) Rosa +6)6 !edro
depósitos$saldo ) d$saldo em depósitos d'depósitos( depósitos d conta_# nome_c saldo nome_f conta_# nome_c
Bingen Bingen Bingen Bingen Bingen Bingen Flamengo Flamengo Flamengo Flamengo Flamengo Flamengo ,cara ,cara ,cara ,cara 8adureira 8adureira 8adureira
224'/ 7indal0a 224'/ 7indal0a 224'/ 7indal0a 224'/ 7indal0a 224'/ 7indal0a 224'/ 7indal0a 22+ !edro 2# !aulo 2# !aulo 2# !aulo 2# !aulo 2# !aulo +6)'2 -oo +6)'2 -oo +6)'2 -oo +6)'2 -oo +6)) Rosa +6)6 !edro +6)6 !edro
))6Bota(ogo ))6Flamengo ))6Flamengo ))6,cara ))68adureira ))68adureira #+Bota(ogo 2/+#Bota(ogo 2/+#Flamengo 2/+#,cara 2/+#8adureira 2/+#8adureira /24/Bota(ogo /24/Flamengo /24/8adureira /24/8adureira #/+2Bota(ogo 4+++Flamengo 4+++8adureira
saldo
))6 )4# #+ 2/+# /24/ #/+2 4+++ ))6 )4# #+ 2/+# /24/ #/+2 4+++
saldo
2+) !edro 22+ !edro 2# !aulo +6)'2 -oo +6)) Rosa +6)6 !edro 2+) !edro 2+) !edro 22+ !edro +6)'2 -oo +6)) Rosa +6)6 !edro 2+) !edro 22+ !edro +6)) Rosa +6)6 !edro 2+) !edro 22+ !edro +6)) Rosa
)4# #+ 2/+# /24/ #/+2 4+++ )4# )4# #+ /24/ #/+2 4+++ )4# #+ #/+2 4+++ )4# #+ #/+2
depósitos saldo
))6 #+ 2/+# /24/ #/+2 4+++
+
Essa relaço cont
∏depósitos.saldo ( depósitos)
− ∏depósitos.saldo σ depósitos.saldo
O resultado < depósitos saldo
)4#
++
Operações Adicionais
Interseção
* operaço de interseço retorna uma relaço que cont
!ara obter todos os usu1rios que possuam tanto empr
∏nome A c ( σnome A f =J MadureiraJ ( empré stimos) ) ∏nome A c ( σ nomeA f =J Madureira J ( depósitos ) ) obtendo?se empréstimos em Madureira empréstimo_# nome_c
nome_f
8adureira
//%'
valor
!edro
2
empréstimos em Madureira nome_c
!edro depósitos em Madureira conta_# nome_c
nome_f
8adureira 8adureira
+6)) +6)6
Rosa !edro
saldo
#/+2 4+++
depósitos em Madureira nome_c
Rosa !edro usu&rios com empréstimos e depósitos em Madureira nome_c
Rosa !edro
+2
Junção Natural
* operaço de "unço natural combina o produto cartesiano e a seleço em uma s= operaço. * seleço (orça a igualdade nos atributos que aparecem nos esquemas das duas relações. !ara encontrar os usu1rios que possuem empr
stimos × correntistas) ) ∏empré stimos.nomeAc@cidade A c ( σ empré stimos.nomeA c=correntistas.nomeA c ( empré
∏empré stimos.nome Ac@cidade Ac ( empré stimos⊕correntistas) O resultado < empréstimos correntistas nome_f
Bingen Bingen Bingen Bingen Bingen Bingen Bingen Bingen Flamengo Flamengo Flamengo Flamengo Flamengo Flamengo Flamengo Flamengo ,cara ,cara ,cara ,cara ,cara ,cara ,cara ,cara 8adureira 8adureira 8adureira 8adureira 8adureira 8adureira 8adureira 8adureira
empréstimos empréstimo_# nome_c
%%6) %%6) %%6) %%6) %%6) %%6) %%6) %%6) ##') ##') ##') ##') ##') ##') ##') ##') +4## +4## +4## +4## +4## +4## +4## +4## //%' //%' //%' //%' //%' //%' //%' //%'
7indal0a 7indal0a 7indal0a 7indal0a 7indal0a 7indal0a 7indal0a 7indal0a !aulo !aulo !aulo !aulo !aulo !aulo !aulo !aulo -oo -oo -oo -oo -oo -oo -oo -oo !edro !edro !edro !edro !edro !edro !edro !edro
correntistas valor
+# +# +# +# +# +# +# +# 2 2 2 2 2 2 2 2 + + + + + + + + 2 2 2 2 2 2 2 2
nome_c
rua
cidade_c
-oo 7aerte 7indal0a eraldo 7aura !aulo !edro Rosa -oo 7aerte 7indal0a eraldo 7aura !aulo !edro Rosa -oo 7aerte 7indal0a eraldo 7aura !aulo !edro Rosa -oo 7aerte 7indal0a eraldo 7aura !aulo !edro Rosa
8iguel de Frias a0io !ei3oto *l(enas $urimat1 $otingo 8em de S1 $urimat1 &ruguai 8iguel de Frias a0io !ei3oto *l(enas $urimat1 $otingo 8em de S1 $urimat1 &ruguai 8iguel de Frias a0io !ei3oto *l(enas $urimat1 $otingo 8em de S1 $urimat1 &ruguai 8iguel de Frias a0io !ei3oto *l(enas $urimat1 $otingo 8em de S1 $urimat1 &ruguai
iter=i iter=i !etr=polis Rio de -aneiro Rio de -aneiro Rio de -aneiro Rio de -aneiro Rio de -aneiro iter=i iter=i !etr=polis Rio de -aneiro Rio de -aneiro Rio de -aneiro Rio de -aneiro Rio de -aneiro iter=i iter=i !etr=polis Rio de -aneiro Rio de -aneiro Rio de -aneiro Rio de -aneiro Rio de -aneiro iter=i iter=i !etr=polis Rio de -aneiro Rio de -aneiro Rio de -aneiro Rio de -aneiro Rio de -aneiro
+/
empréstimo$nome correntistas$nome em empréstimos correntistas empréstimos correntistas empréstimo_# nome_c valor nome_c rua cidade_c
nome_f
Bingen Flamengo ,cara 8adureira
%%6) ##') +4## //%'
nome_c
cidade_c
7indal0a !aulo -oo !edro
!etr=polis Rio de -aneiro iter=i Rio de -aneiro
7indal0a !aulo -oo !edro
+# 2 + 2
7indal0a !aulo -oo !edro
*l(enas 8em de S1 8iguel de Frias $urimat1
!etr=polis Rio de -aneiro iter=i Rio de -aneiro
Divisão
* operaço de di0iso destina?se s consultas que incluem a (rase Mpara todoN. 5uando se di0ide uma relaço de grau m*n com m*n colunas por uma relaço grau n com n colunas se obt
r+ = ∏nome A f ( σ cidadeA f =J RiodeJaneiroJ ( filiais) ) obtendo?se nome_f
Bota(ogo Flamengo 8adureira
filiais ativo
2/ /4 2+
cidade_f
Rio de -aneiro Rio de -aneiro Rio de -aneiro
nome_f
Bota(ogo Flamengo 8adureira
+4
O passo seguinte consiste em determinar os pares nome_c e nome_f para os quais o correntista possua uma conta
r2 = ∏nomeA c@nomeA f ( depósitos) obtendo?se depósitos nome_f
nome_c
Bota(ogo Flamengo Flamengo 8adureira 8adureira
!edro !edro !aulo Rosa !edro
o terceiro passo < preciso determinar os correntistas que aparecem em r" com todos os nomes de (iliais de r!@ o que < (eito pela operaço de di0iso r" r!.
∏nome Ac @nomeA f ( depósitos) ÷ ∏nome A f ( σ cidadeA f =J RiodeJaneiroJ ( filiais) ) obtendo?se nome_c
!edro
+#
Cálculo Relacional Cálculo Relacional de Tuplas
Definições Formais
* notaço t r'+'t(( signi(ica Me3iste uma tupla t na relaço r tal que o predicado +'t( < 0erdadeiroN. &ma e3presso de tupla de $1lculo Relacional < da (orma ,t 't(. onde < uma fórmula. &ma 0ari10el de tupla < uma 0ari10el livre a menos que se"a quanti(icada por ou . 5uando isto ocorrer a 0ari10el < dita ligada. &ma fórmula < constituda de &tomos. &m &tomo < de uma das (ormas> s r@ aonde s < uma 0ari10el de tupla e r < uma relaço@ no se aceitando para a relaço P s/01 u/21 aonde s e u so 0ari10eis de tupla@ 0 e 2 so atributos e < um operador de comparaço s/01 c@ aonde c < uma constante no domnio do atributo 0 *s fórmulas so constitudas de &tomos de acordo com as seguintes regras> &m &tomo < uma fórmula Se < uma fórmula@ ento e '( so fórmulas Se ! e " so fórmulas@ ento ! " ! " e !" tamb
Exemplos
!ara encontrar todos os atributos das tuplas correspondentes aos empr
!ara encontrar apenas os nomes dos correntistas correspondentes aos empr
$om outra notaço tamb
+%
!ara encontrar os usu1rios que possuem uma conta@ um empr
!ara encontrar os usu1rios que possuem tanto uma conta quanto um empr
!ara encontrar todos os usu1rios que possuem uma conta em todas as agIncias da cidade do Rio de -aneiro@ na Álgebra Relacional usa?se divisão e no $1lculo Relacional de tuplas usa?se a implicação. O resultado < o con"unto de todas as tuplas nome_c t tais que para todas as tuplas u na relaço filiais@ se os 0alores de u para o atributo cidade (orem iguais a 5io de %aneiro@ ento o usu1rio tem uma conta na (ilial cu"o nome aparece no atributo nome_f de u$ ,t u filias 'u/cidade_f1 “5io de %aneiro”( s depósitos 't/nome_c1 s/nome_c1 u/nome_f1 s/nome_f1(.
&ma e3presso ,t 't(. < segura se (or (inita e se todos os 0alores que aparecem no resultado (orem 0alores do domnio de . $omo e3emplo de e3presso in(inita pode?se escre0er ,t 't empréstimos(.
Cálculo Relacional de Domínios
Definições Formais
&ma e0pressão < da (orma ,)0! 0" $$$ 0 n3 '0! 0" $$$ 0 n(. @ aonde 0i! ! i n representam 0ari10eis de domnios e < uma (=rmula. &m &tomo no $1lculo Relacional de domnio < de uma das (ormas> )0! 0" $$$ 0 n3 r@ aonde r < uma relaço de n atributos e 0i! ! i n so 0ari10eis de domnio ou constantes P 0 /2 aonde@ 0 e 2 so 0ari10eis de domnio e < um operador de comparaço 0 c@ aonde c < uma constante no domnio do atributo 0 *s fórmulas so constitudas de &tomos de acordo com as seguintes regras> &m &tomo < uma fórmula Se < uma fórmula@ ento e '( so fórmulas Se ! e " so (=rmulas@ ento ! " ! " e !" tamb
!ara encontrar todos os atributos das tuplas correspondentes aos empr
nomeA f
smbolos para os atributos de empr
valor
!ara encontrar apenas os nomes dos correntistas correspondentes aos empr
,)c3 f ! e! v ')f ! e! c! v3 empréstimos v 3 !"44(.
!ara encontrar os usu1rios que obti0eram empr
nomeA c
smbolos para os atributos de correntistas rua cidadeAc
!ara encontrar os usu1rios que possuem uma conta@ um empr
nomeA f
smbolos para os atributos de dep=sitos contaAC nomeAc
saldo
!ara encontrar todos os usu1rios que possuem uma conta em todas as agIncias da cidade do Rio de -aneiro escre0e?se ,)c3 0! 2! 6 '')0! 2! 6 3 filiais( 6 “5io de %aneiro” ' o ! s')0! o! c! s3 depósitos ((.
Se esta e3presso (or considerada de di(cil entendimento ela pode ser re escrita utiliGando implicaço. ,)c3 nf ! at! cf '')nf ! at! cf 3 filiais( cf “5io de %aneiro”( o ! s')nf ! o! c! s3 depósitos ((.
nomeA f
smbolos para os atributos de (iliais ati0o cidadeA f
nomeA f
smbolos para os atributos de dep=sitos contaAC nomeAc
saldo
So equi0alentes> * Álgebra Relacional • O $1lculo Relacional de tuplas restrito a e3pressões seguras • O $1lculo Relacional de domnios restrito a e3pressões seguras • * di(erença entre c1lculo relacional de tuplas e c1lculo relacional de domnios est1 na 0iso do usu1rio sobre os dados. o c1lculo de tuplas o usu1rio tem de reciocinar sob a (orma de tuplas das relações e3istentes. o c1lculo de domnios o usu1rio escol9e as entidades que quiser@ inclusi0e atributos de relações e3istentes. &ma consulta no c1lculo de domnios < mais simples do que no c1lculo de tuplas quando ocorrerem procutos cartesianos de uma relaço por si mesma isto <@ quando uma 0ari10el de domnio ocorrer mais de uma 0eG na consulta.
QBE
+)
* linguagem M +uer2 72 80ample N@ ou +78@ < uma linguagem de consulta baseada no c1lculo relacional de domnios. * linguagem possui uma sinta3e bidimensional pois o sistema e3ibe na tela do terminal um MesqueletoN de tabela em branco. *s consultas so (eitas por marcaço@ no MesqueletoN@ dos atributos que se dese"a obter. !ara identi(icar o que se dese"a identi(icam?se as transações pre0istas pela linguagem por uma inicial maiKscula seguida de um ponto@ da (orma M!.N para impresso@ M,.N para incluso@ M&.N para modi(icaço e MD.N para e3cluso. 5uando esses indicadores de transações aparecerem esquerda de uma tupla no MesqueletoN re(erem?se a toda a tupla. 5uando aparecerem dentro de uma coluna re(erem?se apenas ao atributo correspondente. !ara (ormular uma consulta insere?se nas colunas do MesqueletoN as cl1usulas de condiço dese"adas e indica?se o que se dese"a 0er inserindo?se M!.N nas colunas dos atributos dese"ados. * resposta da consulta < (ornecida pelo sistema preenc9endo as colunas do pr=prio MesqueletoN no qual (oi (ormulada a consulta. !ara utiliGar a linguagem 5BE nas relações e3istentes ao se disparar o programa o sistema e3ibe os MesqueletosN das tabelas da (orma depósitos
empréstimos
filiais
nome_f
nome_f
nome_f
correntistas
clientes
conta_#
nome_c
empréstimo-#
ativo
nome_c
nome_c
saldo
nome_c
valor
cidade_f
rua
cidade_c
gerente
!ara listar os nomes das (iliais do banco escre0e?se filiais
nome_f
ativo
cidade_f
!. !ara listar os nomes das (iliais do banco na cidade do Rio de -aneiro escre0e?se filiais
nome_f
ativo
!.
cidade_f
Rio de -aneiro
!ara listar os nomes das (iliais do banco com ati0o superior a 2.. escre0e?se
+6
filiais
nome_f
ativo
!.
cidade_f
Q 2
!ara listar os nomes e as cidades dos correntistas que possuam saldo superior a 2. escre0e?se correntistas
nome_c
rua
!. depósitos
nome_f
cidade_c
! conta_#
nome_c
saldo
Q 2
!ara listar os nomes dos clientes que ten9am conta na agIncia ,cara ou que ten9am empr
nome_f
empréstimo-#
,cara
nome_c
!. !.
valor
Q /
!ara listar todos os atributos dos clientes que ten9am empr
!.
nome_f
empréstimo-#
nome_c
valor
Flamengo
2
SQL * linguagem MStructured 5uerT 7anguageN@ ou S57@ < baseada no modelo relacional mas no < uma rgida implementaço daquele m • * linguagem no < sens0el a espaços $R@ 7F@ *B etc. !ala0ras reser0adas so limitadas por 0rgulas quando aplic10el e usam?se parInteses para agrupamentos. • 5uando se utiliGa mKltiplas consultas usa?se MPN para separar umas das outras. • *s consultas so indi(erentes a maiKsculas. • &m esquema < uma coleço de Gero ou mais tabelas sendo que cada tabela s= pode pertencer a um esquema. &m cat1logo cont
• • •
* linguagem S57 < di0idida em trIs partes> MData De(inition 7anguageN@ ou DD7@ para de(iniço dos dados@ criaço de tabelas $RE*E *B7E. MData $ontrol 7anguageN@ ou D$7@ para controlar a segurança e o acesso aos dados R* RE:OVE. MData 8anipulation 7anguageN@ ou D87@ para manipulaço dos dados@ armaGenamento@ modi(icaço e recuperaço.
* linguagem S57 pode ser utiliGada pelos usu1rios (inais. *s tabelas relacionais so autWnomas. Re(erIncias cruGadas entre tabelas podem ser estabelecidas por comandos S57. * 1lgebra relacional opera sobre con"untos. !ara bancos de dados relacionais no < preciso na0egar sobre arqui0os. oda consulta retorna todos os dados que respondem a consulta. &su1rios da linguagem S57 no precisam se preocupar com ndices@ c9a0es ou qualquer outra estrutura de na0egaço. !ara esses usu1rios qualquer campo pode ser uma c9a0e. 5uando duas ou mais tabelas so relacionadas pela linguagem S57 e3iste uma "unço. Os BD relacionais tentam postergar o mapeamento de relações entre as estruturas de dados at< o momento em que um agente dese"a que algo se"a (eito. 8uito embora a linguagem S57 no se"a e3tremamente amig10el sua operaço < intuiti0a para muitos usu1rios e mais simples que a maioria das linguagens procedimentais de acesso. 8uitos processadores de te3to@ planil9as e E,S esto sendo construdos com inter(aces S57. 5uase todos os (ornecedores de BD relacionais embutem em seus pacotes suas pr=prias soluções de gerenciamento de inter(aces e linguagem de 4 a geraço.
2+
Declaração de Domínios
!ela declaraço de domnios pode?se dar um nome a um tipo de dados de taman9o especi(icado. ,sto au3ilia quando 01rias colunas tem caractersticas comuns. $RE*E DO8*, X8EROAE8! *S $;*R#P * pr< de(iniço de um ob"eto de dados < Ktil para garantir que certa entrada em uma tabela ten9a a (orma dos dados esperados para essa coluna. $RE*E DO8*, X8EROAE8! *S $;*R# $;E$V :*7&E ,S O &77P S57 possui dois tipos de strings> $;*R e :*R$;*R. Se uma entrada (or especi(icada como $;*R e o string (or menor do que @ os caracteres restantes recebem MbrancoN. !or outro lado :*R$;*R sempre armaGena e3atamente o string recebido no completa a cadeia de caracteres e o taman9o da especi(icaço de :*R$;*R ser0e apenas para limite superior. Sempre que uma tabela (iGer re(erIncia a outra < preciso de(inir anteriormente a tabela re(erenciada. Manipulação de Tabelas
!ara remo0er de um BD uma tabela E8!RE*DOS o comando <> DRO! *B7E E8!RE*DOSP !ara e3cluir uma coluna de uma tabela o comando <> *7ER *B7E E8!RE*DOS DRO! primeironomeP !ara adicionar uma coluna a uma tabela o que se (aG <> *7ER *B7E E8!RE*DOS *DD datanascimento D*E O &77P &ma cl1usula *7ER permite di0ersas alterações. DM
Supon9a?se que a criaço de uma tabela (oi (eita da (orma $RE*E *B7E E8!RE*DOS empAnKmero &8+ !R,8*R VE@ Kltimonome :*R$;*R2 O &77@ primeironome :*R$;*R2 O &77@ (unço :*R$;*R2 O &77@ departamento :*R$;*R2 9 * incluso de uma lin9a pode ser (eita da maneira que se segue. ,SER ,O E8!RE*DOS :*7&ES Y4%%Z@ YBritoZ@ Y$laudioZ@ Y8arin9eiroZ@ YY P ou
,SER ,O E8!RE*DOS empAnKmero@ Kltimonome@ primeironome@ (unço@ departamento :*7&ES
22
Y4%%Z@ YBritoZ@ Y$laudioZ@ Y8arin9eiroZ@ YY P ou ainda ,SER ,O E8!RE*DOS empAnKmero@ Kltimonome@ primeironome@ (unço :*7&ES Y4%%Z@ YBritoZ@ Y$laudioZ@ Y8arin9eiroZ P !ara e3cluir todos os dados de uma tabela usa?se DE7EE. DE7EE FRO8 E8!RE*DOSP !ara e3clusões seleti0as de0e?se especi(icar o crit
* sinta3e do comando SE7E$ <> SE7E$ nomesAdasAcolunas FRO8 nomesAdasAtabelas ][;ERE predicadosAdasAcondições^ ]RO&! B nomesAdasAcolunas^ ];*:, condiço^ ]ORDER B nomeAdeAcoluna^. *s condições podem ser _BE[EE@ ,@ 7,VE@ ,S &77@ O@ *D@ OR@ `\@ Q@ Q\@ \@. *s (unções de agregaço ou de con"unto so seguidas do nome de uma coluna a qual elas se aplicam. O nome da coluna 0em entre parInteses e essas (unções so> :unção
5etorno
$O& S&8 *: 8* 8,
Kmero de 0alores de uma coluna Soma dos 0alores de uma colunae3presso 8
* di(erença entre asa cl1usulas ;*:, e [;ERE < que a condiço de busca [;ERE se aplica a lin9as isoladas antes do agrupamento@ enquanto que a condiço de busca da cl1usula ;*:, se aplica a grupos de lin9as. 5uando se usa a cl1usula RO&! B a cl1usula ;*:, se aplica a cada um dos grupos (ormado com 0alores iguais na coluna especi(icada para o grupamento. $aso no e3ista uma cl1usula RO&! B ento .a cl1usula ;*:, aplica?se a toda a tabela. Se duas tabelas possuem@ cada qual@ uma coluna com um domnio comum@ estas tabelas podem ser unidas por uma operaço de ;unção com base nas colunas de(inidas sobre o domnio comum. * operaço de "unço retorna uma no0a tabela da qual cada lin9a < produto da concatenaço de uma lin9a de cada uma das tabelas que contriburam para a operaço de "unço. *s lin9as contribuintes (oram selecionadas pelos seus
2/
0alores na colunas de domnio comum. -unções nas quais a condição de ;unção é baseada na igualdade so c9amadas de equi-;unç
24
!e"unda ista de E#emplos
E8! E8!AC@ E8!AO8E@ DE!OAC@ $*RO@ EREE@ S*7ÁR,O DE!O DE!OAC@ DE!OAO8E@ $,D*DE E8!REO DE!OAC@ !Ef* *B*SE$,8EO FORE$@ !Ef* 52 ? 7istar os di(erentes nKmeros de departamentos da relaço Emp SE7E$ &,5&E DE!OAC FRO8 E8!P 5/ ? 7istar os nomes dos empregados dos departamentos 2#@ 4' e #/ SE7E$ E8!AO8E FRO8 E8! [;ERE DE!OAC , 2#@ 4'@ #/P alternati0a [;ERE DE!OAC \ 2# DE!OAC \ 4' DE!OAC \ #/P 8/ ? *umentar em + os sal1rios dos empregados que gan9am menos de R+.@ &!D*E E8! SE S*7ÁR,O \ S*7ÁR,O+.+ [;ERE S*7ÁR,O +
Terceira ista de E#emplos
$omo e3emplo da linguagem S57 sero resol0idos os problemas utiliGados na apresentaço da Álgebra Relacional. !ara selecionar as tuplas da relaço empréstimos aonde a (ilial se"a “Madureira” escre0e?se select h (rom emprestimos 9ere nomeA( \ 8adureiraP !ara obter os clientes que ten9am o mesmo nome que seus gerentes pode?se escre0er select h (rom clientes 9ere nomeAc \ gerenteP !ara encontrar os clientes do gerente M %oãoN e a cidade na qual eles 0i0em necessita?se de in(ormações das relações correntistas e clientes e pode?se escre0er select correntistas.nomeAc@ correntistas.cidadeAc (rom clientes@ correntistas 9ere clientes.nomeAc \ correntistas.nomeAc and gerente \ -ooP !ara encontrar os nomes dos correntistas que moram na mesma cidade e na mesma rua que !edro escre0e?se select nomeAc (rom correntistas 9ere rua in select rua (rom correntistas 9ere nomeAc \ !edro and cidadeAc in select cidadeAc (rom correntistas
2#
9ere nomeAc \ !edroP !ara encontrar os usu1rios da agIncia 8adureira < preciso encontrar todos aqueles que ou ten9am conta na agIncia ou que ten9am (eito empr
2%
9ere nomeAc \ d(.nomeAc and nomeA( \ (iliais.nomeA(P Outra soluço pode ser obtida usando minus@ da (orma select distinct s.nomeAc@ s.nomeA( (rom depositos s 9ere not e3ists select nomeA( (rom (iliais 9ere cidadeA( \ Rio de -aneiro minus select t.nomeA( (rom depositos t 9ere s.nomeAc \ t.nomeAcP
2'
!Q Embutida
* S57 embutida (ornece um meio para construir a consulta necess1ria num programa de computador e torna poss0el escre0er o programa sem que se saiba nada a respeito da maneira como os dados esto armaGenados. Em outras pala0ras@ a S57 embutida mant
odos os comandos S57 embutidos so precedidos pelas pala0ras?c9a0e 8>8? @+A. Dependendo da linguagem de programaço 9ospedeira@ eles so encerrados por um ponto e 0rgula ou algum outro terminador@ ou at< mesmo sem nen9um terminador em particular. Uma Primeira %isão da S"# Em$utida
$om a utiliGaço das pala0ras?c9a0e EE$ S57 para iniciar e do ponto e 0rgula para encerrar@ muitos comandos S57 podem ser embutidos na linguagem 9ospedeira simplesmente pela sua incluso no programa@ como@ por e3emplo> e3ec sql update priso set pena \ Ydirigir embriagadoZ 9ere identi(icaçoAdoAprisioneiro \ ++++++P ou e3ec sql delete (rom priso 9ere identi(icaçoAdoAprisioneiro \ ++++++P %ari&veis da #in'ua'em (ospedeira na S"# Em$utida
:ari10eis da linguagem de programaço 9ospedeira de0em aparecer em comandos S57 embutidos. *ssim@ um (ormato para o comando SE7E$ na S57 embutida <> e3ec sql select lista-objetivo Q into variáveis da linguagem hospedeira Q (rom 9ere 9
2)
&m e3emplo espec(ico deste (ormato <> e3ec sql select pena intoB cadeia (rom priso 9ere nKmeroAdeAregistro \ B variável_hospedeira9 Este (ormato < aceit10el se a consulta retorna apenas uma lin9a. $aso contr1rio@ < necess1ria uma 1rea de trabal9o. a S57 embutida@ a 1rea de trabal9o < c9amada de cursor$ o Kltimo e3emplo@ cadeia e vari&vel_Cospedeira so 0ari10eis da linguagem 9ospedeira. Em algumas implementações@ todas as vari&veis da linguagem Cospedeira usadas numa e0pressão @+A embutida devem ser precedidas por dois pontos ' B ( para di(erenci1?las dos nomes das colunas. Delaração de %ari&veis
*s 0ari10eis da linguagem 9ospedeira que so usadas em comandos EE$ S57 de0em aparecer numa seção de declaração no local apropriado do programa 9ospedeiro. O (ormato < EE$ S57 BE, DE$7*RE@ seguido das declarações das 0ari10eis@ que so ento seguidas de EE$ S57 ED DE$7*RE. SE#EC) na S"# Em$utida
O (ormato do SE7E$ <> e3ec sql select ... into ]lista de 0ari10eis da linguagem 9ospedeira^ (rom ...9ere...P !or e3emplo> e3ec sql select nomeAdoAprisioneiro into >cadeia (rom id 9ere nKmeroAdeAregistro \ ++++++P ou e3ec sql select nomeAdoAprisioneiro into >cadeia (rom id 9ere nKmeroAdeAregistro \ >0ari10elA9ospedeiraP UPD*)E em S"# Em$utida
O (ormato do &!D*E na S57 embutida <> e3ec sql update id set nomeAdoAprisioneiro \ Y8anoel de *lmeidaZ 9ere nKmeroAdeAregistro \ ++++++P e3ec sql update id set nomeAdoAprisioneiro \ Y8anoel de *lmeidaZ 9ere nKmeroAdeAregistro \ >0ari10elA9ospedeiraP e3ec sql update id set nomeAdoAprisioneiro \ 0ari10elA9ospedeiraA+ 9ere nKmeroAdeAregistro \ >0ari10elA9ospedeiraA2P DE#E)E e INSER) na S"# Em$utida
*s 0ari10eis da linguagem 9ospedeira podem ser usadas onde (or apropriado. Eis um e3emplo> e3ec sql delete (rom priso 9ere pena \ >0ari10elA9ospedeiraP e3ec sql insert into priso nKmeroAdeAregistro@ pena 0alues >0ari10elA9ospedeiraA+@ >0ari10elA9ospedeiraA2P
26
+utros Comandos S"# Em$utidos
*s regras para os comandos de bloqueio e para os comandos $O88, [ORV e RO77B*$V [ORV so e3atamente as mesmas que as da S57 no embutida@ e3ceto que eles de0em ser precedidos por EE$ S57 e encerrados por um ponto e 0rgula 9 . Cursores
O resultado de uma consulta < uma tabela 0irtual ou uma 0iso. Em qualquer situaço@ os resultados de uma consulta contero (reqLentemente 01rias lin9as com mKltiplas colunas@ que precisaro ser tratadas uma a uma num laço de programa. &ma 0eG que a maioria das linguagens de programaço cont e3ec sql declare a cursor (or ]comando sql^ O D na e3presso acima < uma 0ari10el e pode ser substitudo por qualquer nome@ dependendo@ < claro@ das restrições que o pro"etista pode ter implementado para nome de cursor. O comando S57 entre colc9etes tanto pode ser uma consulta S57 real como um ponteiro para uma cadeia de caracteres@ isto <@ um nome de 0ari10el da linguagem 9ospedeira apontando para uma cadeia de caracteres que cont e3ec sql open aP !ara ler seu pseudo?arqui0o cursor@ 91 o comando FE$; $$$,O com o (ormato e3ec sql (etc9 a into ]lista de nomes de 0ari10eis da linguagem 9ospedeira^ ;1 uma 0ari10el 9ospedeira para cada nome de coluna selecionada. !ro0a0elmente@ o comando FE$; (icar1 em algum tipo de laço na linguagem 9ospedeira por meio do qual cada lin9a < tratada na sua 0eG. H bom (ec9ar o cursor@ como < (eito com arqui0os@ quando todas as leituras ti0erem terminado. O (ormato para isto <> e3ec sql close aP + Uso de Cursores Para UPD*)E e DE#E)E
Finalmente@ obser0a?se que um cursor pode ser usado para atualiGar ou eliminar certas lin9as@ dependendo dos 0alores dessas lin9as. O (ormato para o DE$7*RE nesse caso <> e3ec sql declare a cursor (or select...... 9ere...... (or update o( nome da coluna QP *s lin9as do cursor esto ordenadas@ se"a por uma cl1usula ORDER B ou por algum outro 0alor suposto. $ada FE$; mo0e ento a posiço corrente para a (rente uma lin9a e o &!D*E ou o DE7EE podem operar na lin9a corrente. Depois que o cursor (or (ec9ado@ um EE$ S57 $O88, [ORV e(eti0ar1 no banco de dados as modi(icações (eitas no cursor. O (ormato para atualiGar um cursor <> e3ec sql update nome da tabela Q set nome da coluna Q \ 0ari10elA9ospedeira Q 9ere current o( aP O nome da coluna acima de0e ser o mesmo nome da coluna do DE$7*RE. De modo semel9ante@ o (ormato para eliminaço de lin9a num cursor <> e3ec sql delete (rom nome da tabela Q 9ere current o( aP
/