Você está na página 1de 52

Modelo Relacional - LGEBRA

Le :rete"
FORTEMENTE RECOMENDVEL a leitura dos livros sugeridos !
E es!ecial"

ELMA#R$% Ra e&' NAVA()E% #*a +ant B, Sistemas de banco de dados, - ed, #.o /aulo" Addison-0esle1% 2334, #$LBER#)C)A(5% A' 6OR()% )' #7DAR#)AN% #, Sistemas de Banco de Dados, #.o /aulo " McGra8 )ill do Brasil% 2333, 9

lge:ra relacional

De;ini<.o ;or al
Uma expresso bsica na lgebra relacional consiste em pelo menos uma das seguintes:
Uma relao em um banco de dados Uma relao constante

Se E1 e E2 so expresses da lgebra relacional, as seguintes expresses so vlidas:


E1 E2 E1 - E2 E1 x E2 p E1!, " # um predicado sobre os atributos de E1 s E1!, S # uma lista de alguns dos atributos de E1

lge:ra relacional
$inguagem procedural Seis operadores bsicos

% Seleo % "ro&eo % Unio


r s % 'on&unto di(erena r x s % "roduto cartesiano

% )enomear
*s operadores recebem duas ou mais relaes como entrada e devolvem uma

relao como

sa+da ,,,

O!erador de sele<.o -otao: p r!

p # c.amado de predicado da seleo

/e(inida como: p r! % 0t 1 t r e p t!2


onde p # a (3rmula no clculo proposicional, consistindo dos termos conectados por: e!, ou!, no!

'ada termo # um con&unto de:


4atributo5 operador 4atributo5 ou 4constante5
onde operador pode ser: %, Ex6:
ou 45, ou ,%!

, 5, , 4,

ag7ncia-nome %89oo -egro: empr#stimo!

O!erador de sele<.o ;
)elao r
A B C 1 5 12 D 7 7 3

23 10

<%= > / 5 ?

r!
A B C 1 D 7

23 10

O!erador de !ro=e<.o -otao: <1, <2, @, <A r!

onde <1, <2, @, <A so nomes de atributos e r # o nome da relao

* resultado # de(inido como a relao de A colunas obtida por apagamento das colunas no listadas apagamento na exibio, somente! $in.as duplicadas so removidas do resultado, & Bue as relaes so con&untos
Ex6: no exibir o atributo nome da relao conta

nCmero, total empr#stimo!

O!erador de !ro=e<.o )elao r:


A B 10 20 30 40 C 1 1 1 2 A C 1 1 2

<,' r!

C 1 1 1 2 %

O!erador de uni.o -otao: r s

/e(inido como: r s % 0t 1 t r ou t s2

"ara r s ser vlido:


r, s devem possuir o mesmo nCmero de atributos *s dom+nios de atributos devem ser compat+veis, coluna a coluna
Ex6: encontrar todos os clientes Bue cliente-nome devedor! cliente-nome depositante!
possuem conta-corrente ou empr#stimo

O!erador de uni.o )elaes r, s:


A B 1 2 1 r

A B 2 3 s

r s:

B 1 2 1 3

Con=unto di;eren<a - r>s


-otao: r D s
/e(inido como: r D s % 0t 1 t r e t s2

*s con&untos di(erena devem ser aplicados entre relaes compat+veis:


r e s devem possuir o mesmo nCmero de atributos *s dom+nios de atributos devem ser compat+veis, coluna a coluna

Con=unto di;eren<a - rs
)elaes r, s:
A B 1 2 1 r A B 2 3 s

r s:

B 1 1

O!erador !roduto cartesiano - r ? s


-otao: r x s
/e(inido como: r x s % 0t B 1 t r e B s2

<ssume Bue os atributos de r )! e s S! so dis&untos ou se&a, ) S % !


Se os atributos de r )! e s S! no so dis&untos, ento o operador de renomear deve ser utiliEado

O!erador !roduto cartesiano - r ? s


)elaes r, s:
A B 1 2 r C D 10 10 20 10 s E a a b b

r x s:

B 1 1 1 1 2 2 2 2

D 10 10 20 10 10 10 20 10

E a a b b a a b b

Co !osi<.o de o!era<@es
"odemos construir expresses Ex6: <%' r x s!
A B 1 1 1 1 2 2 2 2 B 1 2 2 C D 10 10 20 10 10 10 20 10 D E a a b b a a b b E a a b

rxs

10 20 20

AACBr x s9

O!era<.o reno ear -

"ermite-nos dar um nome e posteriormente re(erirmo-nos a um resultado de expresses de lgebra relacional "ermite-nos re(erirmo-nos a uma relao por mais de um nome
Ex6:

x E!
)etorna a expresso E sob o nome F x <1, <2, @, <n! E!
)etorna a expresso E com o nome F, e os atributos renomeados para <1, <2, @, <n!

O!era<@es adicionais

O!era<@es adicionais
<s operaes a seguir no adicionam poder para a lgebra relacional, por#m simpli(icam a execuo de algumas consultas:
'on&unto Gnterseco 9uno natural Natural join! /iviso <tribuio ou designao Assignment!

Con=unto $ntersec<.o
-otao: r s
/e(inido como: r s %0 t 1 t r e t s 2 <ssumindo Bue:
r, s possuem a mesma Buantidade de atributos os atributos de r e s so compat+veis

-ota: r s % r - r - s!

$ntersec<.o - e?e !lo


)elaes r, s:
< r = 1 2 1 < s = 2 = 2 H

rs

<

Cun<.o BNatural-Join9

-otao: r

Se&am r e s relaes sobre os sc.emas ) e S, respectivamente6 Ento, r s # a relao sobre o esBuema ) S, obtida da seguinte (orma:
'onsidere cada par de tuplas tr de r e ts de s6 Se tr e ts tem o mesmo valor em cada um dos atributos em ) S, adicione a tupla t ao resultado, onde: t possui o mesmo valor Bue tr em r t possui o mesmo valor Bue ts em s Exemplo: ) % <, =, ', /! S % E, =, /! EsBuema resultante % <, =, ', /, E! r s ser de(inido como: r6<, r6=, r6', r6/, s6E r6= % s6= r6/ % s6/ r x s!!

Cun<.o BNatural-join9 - e?e !lo


)elaes r, s:
A B 1 2 4 1 2 r C D a a b a b B 1 3 1 2 3 D a a a b b s A B 1 1 1 1 2 C D a a a a b E E

O!era<.o divis.o

-otao:

rs

)elacionada aBuelas consultas Bue incluem a (rase 8(or all: Se&am r e s relaes sobre os esBuemas ) and S, respectivamente, onde:
) % <1, @, <m, =1, @, =n! S % =1, @, =n! * resultado de r s # uma relao no esBuema
) D S % <1, @, <m! r s % 0 t 1 t )-S r! u s tu r ! 2

O!era<.o divis.o - e?e !lo


r s: )elaes r, s:
A B 1 2 3 1 1 1 3 4 1 2 r B 1 2 s A

O!era<.o Divis.o - e?e !lo


)elaes r, s:
A B a a a a a a a a C D a a b a b a b b E 1 1 1 1 3 1 1 1 D a b s E 1 1

r s:

B a a

O!era<.o Divis.o
"ropriedade
Se&a B D r s Ento B # a maior relao satis(aEendo B x s r

Em termos de operaes bsicas: Se&am r )! e s S! relaes, e se&a S )


r s % )-S r! D)-S )-S r! x s! D )-S,S r!!

"ara saber como:


)-S,S r! simplesmente reordena atributos de r )-S )-S r! x s! D )-S,S r!! coloca as tuplas t em )-S r! de tal (orma Bue para algumas tuplas u s, tu r

O!era<.o de atri:ui<.o Bdesigna<.o9


<operao de atribuio ! prov7 uma maneira conveniente de expressar consultas complexas
Escreve uma consulta como um programa seBIencial consistindo de: Uma s#rie de atribuies Seguidas por uma expresso cu&o valor # exibido como resultado da consulta Em alguns casos esta operao poder ser realiEada para uma varivel relacional temporria

Exemplo: !rite r s as temp1 )-S r! temp2 )-S temp1 x s! D )-S,S r!! result % temp1 D temp2

* resultado a direita de ser atribu+do para a varivel relacional a esBuerda de < varivel poder ser utiliEada em operaes subseBIentes

O!era<@es da lge:ra Relacional E?tendida

O!era<@es da Dlge:ra relacional e?tendida

"ro&eo generaliEada 9uno externa "#uter $oin% Junes agregadas

/ro=e<.o generali&ada
Extende a operao de pro&eo permitindo o uso de (unes aritm#ticas na lista de pro&eo
J1, J2, @, Jn E! *nde:
E # BualBuer expresso da lgebra relacional 'ada um dos J1, J2, @, Jn # uma expresso aritm#tica envolvendo constantes e atributos no esBuema de E

Ex6:
/ada a relao in(ormaes-de-cr#dito cliente-nome, limite, cr#dito-dispon+vel!, encontrar Buanto cada pessoa pode gastar: cliente-nome, limite D cr#dito-dispon+vel in(ormaes-de-cr#dito!

Cun<.o e?terna -

Outer Join

K uma extenso da operao de &uno join! Bue evita perda de in(ormao6 'omputa a &uno e ento adiciona tuplas Bue Bue no possuem correspond7ncia de uma relaLo na outra UtiliEa valores nulos null &alues!:
8null: signi(ica Bue o valor # descon.ecido ou Bue ele no existe Modas as comparaes envolvendo nulos so (alsas, por de(inio

Cun<.o e?terna )elao em'r(stimo


N+mero,em' $-1PQ $-2HQ $-2SQ .ilial /oTntoTn )edTood "errOridge

Outer Join

-uantia HQQQ RQQQ 1PQQ

)elao toma)or
*liente 9ones Smit. NaOes N+mero,em' $-1PQ $-2HQ $-1??

Cun<.o e?terna /nner $oin


emprstimo tomador

Outer Join

N+mero,em' $-1PQ $-2HQ

.ilial /oTntoTn )edTood

-uantia HQQQ RQQQ

*liente 9ones Smit.

0e.t #uter $oin


emprstimo tomador

N+mero,em' $-1PQ $-2HQ $-2SQ

.ilial /oTntoTn )edTood "errOridge

-uantia HQQQ RQQQ 1PQQ

*liente 9ones Smit. null

Cun<.o e?terna )ig.t *uter 9oin


emprstimo tomador

Outer Join

N+mero,em' $-1PQ $-2HQ $-1??

.ilial /oTntoTn )edTood null

-uantia HQQQ RQQQ null

*liente 9ones Smit. NaOes

Jull *uter 9oin


emprstimo tomador

N+mero,em' $-1PQ $-2HQ $-2SQ $-1??

.ilial /oTntoTn )edTood "errOridge null

-uantia HQQQ RQQQ 1PQQ null

*liente 9ones Smit. null NaOes

O!eradores de agrega<.o

Eun<@es e o!era<@es agregadoras


< (uno de agregao # aBuela Bue, a partir de uma coleo de valores de entrada, retorna um valor simples como resultado
Exemplos:
avg: average value % m#dia min: minimum value % m+nimo max: maximum value % mximo sum: sum o( values % soma count: number o( values % contagem, contar

-a lgebra relacional:
U1, U2, @, Un g J1 <1!, J2 <2!,@, Jn <n! E!
E # BualBuer expresso na lgebra relacional U1, U2 @, Un compe uma lista de atributos os Buais sero agrupados 'ada Ji # uma (uno agregada 'ada <i # um nome de atributo

E?e !lo de agrega<.o


)elao r :
A B C P P H 1Q

g sum(c)

r!

sum,C 2P

A ;un<.o g utili&a a agrega<.o sum Bso a9% a Fual !ossui co o !redicado a coluna c da rela<.o r, Co o resultado de sua e?ecu<.o% G !rodu&ida u a rela<.o Fue !ossui u valor Hnico B279 identi;icado !elo atri:uto sum-C,

E?e !lo de agrega<.o


)elao *onta agrupada por .ilial:
.ilial "errOridge "errOridge =rig.ton =rig.ton )edTood *onta <-1Q2 <-2Q1 <-21P <-21? <-222 sal)o RQQ VQQ P?Q P?Q PQQ

.ilial

g sum"sal)o% *onta!
.ilial sal)o 1HQQ 1?QQ PQQ

"errOridge =rig.ton )edTood

Eun<@es agregadoras
* resultado da agregao no possui um nome
"odemos utiliEar a operao rename para proporcionar um nome ao resultado "ara conveni7ncia, permite-se a utiliEao da (uno de renomear como parte da operao de agregao
.ilial

g sum"sal)o% as total *onta!


/er ite ;ornecer novo no e

Valores nulos BNull Values9


K poss+vel Bue as tuplas possuam um valor nulo, marcado como null, em algun s! de seus atributos D isto signi(ica um valor descon.ecido ou Bue no existe * resultado de BuaisBuer operaes aritm#ticas envolvendo nulos # nulo <s (unes agregadas ignoram os nulos
K uma deciso arbitrria6 "oderia ter .avido o retorno de um valor nulo

"ara eliminao de duplicatas e agrupamentos o valor nulo ser tratado como BualBuer outro valor, e dois nulos sero assumidos como sendo o mesmo
<lternativa: assumir cada nulo como sendo di(erente do outro <mbas so decises arbitradas

Valores nulos BNull Values9


'omparaes com valores nulos retornam o valor especial 8un1no2n: - descon.ecido
Se (also .alse! (oi utiliEado ao inv#s de un1no2n, ento not < 4 ?! poderia ser eBuivalente a < 5% ?

$3gica de tr7s valores estados! utiliEando o valor especial un1no2n:


#3 *U!: un1no2n or true! % true, un1no2n or .alse! % un1no2n un1no2n or un1no2n! % un1no2n AND E!: true an) un1no2n! % un1no2n, .alse an) un1no2n! % .alse, un1no2n an) un1no2n! % un1no2n N#4 -W*!: not un1no2n! % un1no2n

Modi;ica<@es no :anco de dados

Modi;ica<@es no Data:ase
* conteCdo do banco de dados pode ser modi(icado utiliEando-se:
/eleo % /eletion Gnsero % Gnsertion <tualiEao % Updating

Modas estas operaes so expressas utliEando-se o operador de atribuio assignment ou designao!

Dele<.o Ba!aga ento9


Uma reBuisio de apagamento # semel.ante a uma consulta, por#m ao inv#s de exibir tuplas ao usurio retira tuplas do banco de dados "ode apagar somente tuplas inteiras, nuca parte delas atributos isolados! Expressa-se na lgebra relacional como: rrDE
*nde r # uma relao e E # uma consulta da lgebrarelacional

E?e !los de a!aga ento


<pagar todas as contas da (ilial "errOridge
*onta *onta D .ilial 5 6:err;ri)ge8 "*onta%

<pagar todos os registros de empr#stimo com Buantias entre Q e ?Q <pagar todas as contas de clientes de -eed.am r *i)a)e 5 6Nee)7am8 "*onta .ilial%
1

em'r(stimo em'r(stimo D -uantia 0 an) -uantia 50 em'r(stimo!

r2 .ilial, *onta, sal)o r1! rH **liente, *onta r2 *onta *onta D r2 )e'9sitos )e'9sitos D rH dep3sitos!

$nser<.o
"ara inserir dados em uma relao, precisamos:
Especi(icar a tupla a ser inserida Escrever uma consulta a Bual resulte em um con&unto de tuplas a serem inseridas -a lgebra relacional: r r E
*nde r # uma relao e E # uma expresso da gebra relacional

< insero de uma simples tupla # expressa por tornar E uma relao constante contendo uma tupla

E?e !los de inser<.o


Gnserir no banco de dados Smit., Bue possui X12QQ na conta <-VPH, na (ilial "errOridge
*onta *onta 0 8"errOridge:, <-VPH, 12QQ!2 dep3sitos )e'9sitos 0 8Smit.:, <-VPH!2

"roporcionar um cr#dito de X2QQ para os clientes da (ilial "errOridge6 * nCmero do empr#stimo servir como nCmero de conta
r1 .ilial 5 6:err;ri)ge8 "toma)or empr#stimo%% *onta *onta .ilial, *onta,200 "r1! )e'9sitos )e'9sitos *liente, N+mero,em'"r1!

Atuali&a<.o
Yecanismo para trocar um valor em uma tupla sem mudar os demais valores da tupla UtiliEa-se a pro&eo generaliEada para e(etuar esta tare(a: r J1, J2, @, JG, r!
'ada Ji :
K o i-#simo atributo de r, se o i-#simo atributo no # atualiEado, ou, Se o atributo # para ser atualiEado Ji # uma expresso, envolvendo somenteconstantes e os atributos de r, a Bual d o novo valor para o atributo

E?e !los de atuali&a<.o


<dicionar ?Z a todos os saldos
*onta *onta, .ilial, sal)o [ 16Q? *onta!

<dicionar SZ nas contas com saldo superior a X1Q6QQQ e ?Z nas demais


*onta *onta, .ilial, sal)o < 16Q? sal)o 10000 "*onta%% *onta, .ilial, sal)o [ 16QS
sal)o > 10000 "*onta!!

Resu o dos O!eradores da Dlge:ra relacional

Re;erIncias
SG$=E)SN'N<M\, <] ^*)MN, N] SU/<)SN<-, S6 Sistemas de Banco de Dados6 So "aulo : Yc UraT Nill do =rasil, 2QQQ6
-otas de aulas de =ancos de /ados diversas!: "ro(6 /r6 Yarcos S(air SunO#
UJ") _ /G-J D Yestrado em Gn(ormtica

"ro(a6 /ra6 Yaria Salete Yarc3n Uomes `aE


UE"U _ /EG-J* D EspecialiEao em =ancos de /ados

"ro(6 Ys' /avid `allim


UJ") _ /G-J D EspecialiEao em Gn(ormtica

"ro(6 /r6 9os# Simo de "aula "into


UJ") _ /G-J D EspecialiEao em Gn(ormtica UE"U _ /EG-J* D EspecialiEao em =ancos de /ados

Você também pode gostar