You are on page 1of 12

Introduo

A lgebra Relacional uma linguagem de consulta formal, porm procedimental, ou


seja, o usurio d as instrues ao sistema para que o mesmo realize uma seqncia de
operaes na base de dados para calcular o resultado desejado.
Na terminologia formal de modelo relacional:

Uma linha chamada de tupla

O cabealho da coluna chamado de atributo

Tabela chamada de relao

O tipo de dados que descreve os tipos de valores que podem aparecer em cada
coluna chamado de domnio

A lgebra relacional uma forma de clculo sobre conjuntos ou relaes.


H seis operaes fundamentais na lgebra relacional. Estas operaes so: seleo,
projeo, renomear, produto cartesiano, unio e diferena entre conjuntos. Todas essas
operaes produzem uma nova relao como seu resultado.
Em adio s operaes fundamentais h outras de uso comum que so frequentemente
utilizadas: interseo de conjuntos, juno natural, diviso e juno theta.
Uma aplicao prtica da lgebra relacional na execuo de consultas a bancos de
dados relacionais. Por essa razo, foram criadas novas operaes, denominadas
estendidas, que so: Eliminao de duplicatas, ordenao, agrupamento e agregao e
juno externa.
As lgebras relacionais recebiam pouca ateno at a publicao do modelo relacional
de dados de E.F Codd, em 1970. Codd props tal lgebra como uma base para
linguagens de consulta em banco de dados.
A lgebra relacional tem poder de expresso essencialmente equivalente ao do clculo
relacional (tambm ao da Lgica de primeira ordem); esse resultado conhecido como
teorema de Codd. Algum cuidado, porm, deve ser tomado para evitar divergncia que
pode surgir entre as duas linguagens, j que a negao, aplicada a frmula do clculo,
constri uma frmula que pode ser verdadeira em um grupo infinito de tuplas possveis,
enquanto o operador de diferena da lgebra relacional retorna um resultado finito. Para
sobrepor essas dificuldades, Codd restringiu os operados da lgebra relacional somente
para relaes finitas, e tambm props uso restrito da negao (NOT) e disjuno (OR).
Analogamente restries so encontradas em muitas outras linguagens de computao
baseadas em lgica. Codd definiu o termo completeza relacional para referir uma
linguagem que completa no que diz respeito a calculo de predicados de primeira
ordem parte das restries por ele propostas. Na prtica as restries no tem efeito
adverso na aplicabilidade da lgebra relacional para propsitos de banco de dados.

Operadores Primitivos
Como em qualquer lgebra, alguns operadores so primitivos e os outros, que so
descritos em termos dos primitivos, so definidos como derivados. til que a escolha
dos operadores paralelos primitivos faa uso dos operadores lgicos primitivos. Embora
seja sabido que na lgica do E, OU e NO a escolha um pouco arbitrria, Codd usou
de escolha semelhantes para a sua lgebra.
Os seis operadores primitivos de Codd na lgebra so o de seleo, projeo, produto
cartesiano(tambm chamado de produto cruz ou juno cruz), unio, diferena e
renomeao. (Na verdade, Codd omite o renomear, para proceder, mas a sua incluso
foi mostrada pelos inventores da ISBL.) Estes seis operadores so fundamentais no
sentido de que nenhum deles pode ser omitido sem perder poder expressivo. Muitos
outros operadores foram definidos em termos destes seis. Entre os mais importantes so
interseo, diviso e o natural join. Na verdade a ISBL fez a substituio do produto
cartesiano pelo natural join, dado que o produto cartesiano um caso degenerado.
Ao todo, os operadores da lgebra relacional tm poder expressivo idntico ao do
calculo de domnio relacional ou calculo de tuplas relacionais. No entanto, pelas razes
apontadas na introduo acima, a lgebra relacional tem estritamente menos poder
expressivo do que a lgica de primeira ordem sem funo smbolos. lgebra relacional
efectivamente corresponde a um subconjunto da lgica de primeira ordem que a
clusula de horn sem recurso e negao.

Operaes de Conjuntos
Projeo ( )
Projeo (lgebra relacional)
A projeo uma operao unria escrita como
onde
um
conjunto de atributos. O resultado de tal projeo definida como conjunto que obtido
quando todas as enuplas em so restritas ao conjunto
.

Seleo ( )
: Seleo (lgebra relacional)
Uma seleo generalizada uma operao unria escrita como
onde uma
frmula proposicional que consiste de atoms como permitido na seleo normal e
operadores lgicos (e), (ou) e (negao). Esta seleo seleciona todas as tuplas em
para cada .
Seleo e cruzamento de produto
Cruzamento de produto o de maior custo de operao para avaliar. Se a entrada de
relao tem e
linhas, o resultado ir conter
linhas. Portanto isso muito

importante para ter um menor tamanho de ambos os operadores antes de ser aplicado o
operador de cruzamento de produto.
Isso pode ser feito de forma eficaz, se o cruzamento de produto for seguido de um
operador de seleo, ex.
( ). Considerando a definio de seleo, isto o caso
mais provvel. Se o cruzamento de produto no for seguido de um operador de seleo,
podemos tentar descer at um nvel mais baixo a partir de nveis mais altos da rvore de
expresses usando outra regra de seleo.
No caso acima quebramos a condio introduzindo a condio , e usando
regras de diviso sobre complexas condies de seleo, de modo que =
e
somente contm atributos de , contm atributos somente de e contm partes
de que contm os atributos tanto de como de . Observe que , ou podem ser
possvelmente vazios. Depois os seguintes detm:

Renomear ( )
Renomear uma operao unria escrita como
onde o resultado idntico ao
exceto que o campo em todas as tuplas renomeado para um campo . Isto
simplesmente usado para mudar o nome do atributo de uma relao ou a relao em si.

Junes e operaes com as junes


Juno natural ( )
Juno natural uma operao binria que escrita como (R S) onde R e S so
relaes.[1] O resultado da juno natural uma tabela com todas as combinaes das
tuplas em R e S que seu atributos em comum so iguais. Por exemplo, considerando as
tabelas Empregado e Departamento e sua juno natural:

Empregado
Nom EmpI DeptNo
e
d
me
Harry 3415 Finanas
Sally 2241 Vendas
Geor
3401 Finanas
ge
Harri
2202 Vendas
et

Departamento
DeptNo Geren
me
te
Georg
Finanas
e
Vendas Harriet
Produ Charle
o
s

Empregado

Departament

o
Nom EmpI DeptNo Geren
e
d
me
te
Georg
Harry 3415 Finanas
e
Sally 2241 Vendas Harriet
Georg
Georg
3401 Finanas
e
e
Harri
2202 Vendas Harriet
et

Isso tambm pode ser usado para definir as composio das relaes. Na teoria das
categorias, a juno , precisamente, o produto fibrado.

A juno natural , indiscutivelmente, uma das mais importante operaes visto que ela
a contraparte relacional do E lgico. Observe com ateno que se as mesmas variveis
forem utilizadas nos dois predicados que so conectados pelo E, ento essa varivel
representa a mesma coisa e ambas as aparncias sempre devem ser substitudas pelo
mesmo valor. Particularmente, juno natural permite a combinao de relaes que so
associados por uma chave estrangeira. No exemplo a seguir, provavelmente existe uma
chave estrangeira em Empregado.DeptNome para Departamento.DeptNome e ento a
juno natural de Empregado e Departamento combina todos os empregados com seus
departamentos. Note que isso funciona, porque a chave estrangeira detm os atributos
de mesmo nome. Se esse no for o caso, como em uma chave estrangeira de
Departamento.Gerente para Empregado.nmero-emp, deve-se, ento, renomear essas
colunas antes de fazer a juno natural. Essa , s vezes, uma equijoin (veja -join).
Mais formalmente, a semntica da juno natural definida como segue:

onde um predicado que verdadeiro para uma relao binria Se e somente se


uma relao funcional binria. Normalmente, necessrio que e tenham, pelo
menos, um atributo em comum, mas se essa restrio omitida, ento a juno natural
torna-se, exatamente, o produto cartesiano.
A juno natural pode ser simulada com Codd's primitives, como segue. Supoem-se que
b1,,bm so nomes de atributos comuns em R, S, a1,,an so os atributos de nome nico
de R e c1,,ck so os atributos de nome nico de S. Alm disso, assume-se que os nomes
dos atributos d1,,dm no so nem de R ou de S. Primeiramente, ns podemos mudar,
agora, o nome do atributo em comum em S:

Ento toma-se o produto cartesiano e faz-se a seleo as tuplas que devem ser ligadas:

Finalmente, pegue a projeo para se livrar dos atributos renomeados:

Anti-juno
A antijuno, escrito como R S onde R e S so relaes, similar juno natural, mas
o resultado de uma antijuno apenas aquelas tuplas em R para as quais NO existe
uma tupla em S que possua os mesmos nomes de atributos.
Por exemplo, considerando as tabelas Empregado e Departamento e sua antijuno:

Empregado

Departamento

Empregado

EmpI DeptNom
d
e
Harry 3415 Finanas
Sally 2241 Vendas
Georg
3401 Finanas
e
Harrie
2202 Produo
t
Nome

DeptNom Gerent
e
e
Vendas Harriet
Produo Charles

Departamento
EmpI DeptNom
Nome
d
e
Harry 3415 Finanas
Georg
3401 Finanas
e

A antijuno formalmente definida como segue:


R S={t:t R

s S : fun (t s) }

ou
R S = { t : t R, no existe uma tupla s de S que satisfaz fun (t s) }
onde fun(r) est definida como na juno natural.
A antijuno tambm pode ser definida como o complemento da semi-juno, como
segue:
R S=R-R S
Sendo assim, a antijuno s vezes chamada de anti-semi-juno, e o operador de
antijuno s vezes escrito como um smbolo da semi-juno com uma barra acima,
ao invs de .

Outer Joins
Considerando que o resultado de um join (ou inner join) consiste em combinar tuplas
correspondentes nos dois operandos, um outer join contm essas tuplas e mais algumas
formadas pelo "enchimento" dos valores que no casam em um operador com cada
atributo do outro operador.
Os operadores definidos nessa seo assumem que existe um valor null(), que no
definem, para ser utilizado para o "enchimento" de valores. No se deve assumir que o
NULL definido para a linguagem SQL, nem que o uma marca em vez de um valor.
Trs operadores outer join so definidos: left outer join, rigth outer join, e full outer
join. (Algumas vezes a palavra outer omitida.)
Left Outer Join
O left outer join escrito comoR =X S onde R e S so relaes. O resultado do left join
o conjunto de todas as combinaes das tuplas em R e S que seus atributos em comum
so iguais , alm disso, tuplas em R que no tem correspondencia em S.

Por exemplo considere as tabelas Empregado e Departamento e seu left outer join:

Empregado
Nom EmpI DeptNo
e
d
me
Harry 3415 Finanas
Sally 2241 Vendas
Geor
3401 Finanas
ge
Harri
2202 Vendas
et
Executiv
Tim 1123
o

Departamento
DeptNo Geren
me
te
Vendas Harriet
Produ Charle
o
s

Empregado =X
Departamento
Nom EmpI DeptNo Geren
e
d
me
te
Harry 3415 Finanas
Sally 2241 Vendas Harriet
Georg
3401 Finanas
e
Harri
2202 Vendas Harriet
et
Executiv
Tim 1123

Na relao resultante, tuplas em S que no tem valores com os mesmos nomes de


atributos com tuplas em R recebem um valor null, .
Dado que no existem tuplas em Departamento com DeptNome igual a Finanas ou
Executivo, s aparecem na relao resultante onde tuplas em DeptNome tem Finanas
ou Executivo.
Sendo r1, r2, , rn atributos da relao R e {(, , )} os nicos atributos que so
unique para a relao S (aqueles que no so atributos de R). Ento o left outer join pode
ser excrito em termos do natural join(utilizando operadores bsicos) como segue:

Right Outer Join


Se comporta da mesma maneira que o anterios, s que os buracos da tabela so
comutados.
O right outer join das relaes R e S escrito como R X= S. O resultado do right join
o conjunto de todas as combinaes das tuplas em R e S que seus atributos em comum
so iguais, alm disso, tuplas em S que no possuem correspondnca com tuplas em R.
Por exemplo considere as tabelas Empregado e Departamento e seu right outer join:

Empregado
Nom EmpI DeptNo
e
d
me
Harry 3415 Finanas
Sally 2241 Vendas

Departamento
DeptNo Geren
me
te
Vendas Harriet
Produ Charle

Empregado X=
Departamento
Nom EmpI DeptNo Geren
e
d
me
te
Sally 2241 Vendas Harriet

Georg
3401 Finanas
e
Harri
2202 Vendas
et
Executiv
Tim 1123
o

Harri
2202 Vendas Harriet
et
Produ Charle

o
s

Na relao resultante, tuplas em R que no tem valores com os mesmos nomes de


atributos com tuplas em S recebem um valor null, .
Dado que no existem tuplas em Empregado com DeptNome igual a Produo, s
aparecem na relao resultante onde tuplas em DeptNome tem tuplas com Produo.
Sendo s1, s2, , sn atributos da relao S e {(, , )} os nicos atributos que so
unique para a relao R (aqueles que no so atributos de S). Ento, como no left join, o
right outer join pode ser excrito em termos do natural join(utilizando operadores
bsicos) como segue:

Outer Join
O outer join ou full outer join combina os efeitos dos resultados do left e do rigth
outer joins.
O full outer join escrito como R =X= S onde R e S so relaes. O resultado do full
outer join o conjunto de todas as combinaes em R e S que so iguais em seus
atributos com nomes iguais, alm de tuplas em S que no possuem casamento com
tuplas em R e tuplas em R que no possuem casamento com tuplas em S em seus
atributos com nomes iguais.
Por exemplo, considere as tabelas Empregado e Departamento e o outer join:

Empregado
Nom EmpI DeptNo
e
d
me
Harry 3415 Finanas
Sally 2241 Vendas
Geor
3401 Finanas
ge
Harri
2202 Vendas
et
Executiv
Tim 1123
o

Departamento
DeptNo Geren
me
te
Vendas Harriet
Produ Charle
o
s

Empregado =X=
Departamento
Nom EmpI DeptNa Geren
e
d
me
te
Harry 3415 Finanas
Sally 2241 Vendas Harriet
Georg
3401 Finanas
e
Harri
2202 Vendas Harriet
et
Tim 1123 Executiv

o
Produ Charle
o
s

Na relao resultante, tuplas em R que no tm valores em comum nos nomes dos


atributos com as tuplas em S recebem um valor null", . Tuplas em S que no tm
valores em comum nos nomes dos atributos com as tuplas em S tambm recebem um
valor null", .
O full outer join pode ser simulado usando o left e o rigth outer joins (e,
conseqentemente, o natural join e unio) como segue:
R=X=S = (R=XS)

(RX=S)

Operaes para o domnio computacional


Operao de Agregao
Existem cinco operaes de agregao que so includas na maioria dos bancos de
dados. Esses operadores so Soma, Contagem, Mdia, Mximo e Minimo. Na lgebra
relacional, escrito como Exp1,Exp2,Exp3Gfunc1,func2,func3(Relao). Enquanto um deve
especificar a funo a utilizar, as expresses, porm, so opcionais. Vamos assumir que
temos uma tabela chamada Conta com trs colunas, a saber Nmero_conta, Nome_ramo
e Equilbrio. Queremos encontrar o mximo de equilbrio de cada ramo. Isto realizado
por Nome_ramo G Max (Equilbrio) (Conta). Para encontrar o maior saldo de todas as contas,
independentemente do ramo, poderamos simplesmente escrever G Max (Equilbrio) (Conta).

Limitao da lgebra relacional


Embora a lgebra relacional parea suficientemente poderosa para a maioria dos efeitos
prticos, existem alguns operadores simples e naturais nas relaes que no podem ser
expressos pela lgebra relacional. O fecho transitivo de uma relao binria um deles.
Dado um domnioD, a relao binria R um subconjunto deDxD. O encerramento
transitivo R+de R o menor subconjunto deDxD contendo'R que satisfaz a seguinte
condio:
x

z ((x,y) R+ (y,z) R+

(x,z) R+)

Isto pode provar que no existe uma expresso de lgebra relacional E(R), tendo R
como argumento varivel que produz R+. A prova baseada no fato de que, dada uma
expresso relacional E cujo se alegou que E(R) = R+, onde R uma varivel, podemos
sempre encontrar uma instncia r de R(e um domnio correspondente d), de modo que
E( r) ' r+.

Uso das propriedades algbricas para optmizao de


consultas

Banco de dados relacional pode ser representado como uma rvore, onde

Os nodos internos so operadores,

Folhas so as relaes,

Subrvores so sub-expresses;

Nosso principal objetivo transformar a expresso de rvores expresses equivalentes


de rvores, onde a dimenso mdia das relaes geradas por sub-expresses na rvore
so menores do que eram antes da otimizao. Nosso segundo objetivo tentar formar
sub-expresses comuns dentro de uma nica consulta, ou se houver mais de uma
consulta a ser avaliada, ao mesmo tempo, em todas essas consultas. A lgica subjacente
a de que o segundo objetivo o suficiente para computar sub-expresses comuns uma
vez, e os resultados podem ser utilizados em todas as consultas que contenham essa subexpresso.
Aqui, apresentamos um conjunto de regras, que podem ser utilizados em tais
transformaes.

Seleo
Regras sobre operadores de seleo desempenham papel mais importante na otimizao
da busca. Seleo um operador que de forma muito eficaz diminui o nmero de linhas
no seu operando, por isso, se ns conseguirmos passar as selees em uma rvore de
expresso para as folhas, as relaes internas (geradas por sub-expresses)
provavelmente iro encolher.
Propriedades bsicas de seleo
Seleo uma operao idempotente (mltiplas aplicaes da mesma seleo tm o
mesmo efeito de uma nica aplicao), e comutativa (a ordem em que as selees so
aplicadas no influencia o resultado).
1.
2.
Quebrando selees com condies complexas
Uma seleo cuja condio uma conjuno de condies mais simples equivalente a
uma seqncia de selees com as mesmas condies individuais, e a seleo cuja a
condio uma disjuno equivalente a uma unio de selees. Essas identidades
podem ser usadas para mesclar selees de modo que menos selees precisem de ser
avaliadas, ou para dividir-las de modo a que a componente selees possa ser movida
ou otimizada separadamente.
1.

2.
Seleo e produto cartesiano
CProduto cartesiano o operador mais caro de avaliar. Se as relaes de entrada tm
e
linhas, o resultado ir conter
linhas. Por isso, muito importante fazer o
nosso melhor para diminuir o tamanho de ambos os operandos antes de aplicar o
operador produto cartesiano
Isto pode ser feito eficazmente, se o produto cartesiano seguido por um operador de
seleo, por exemplo,
. Considerando a definio de join, isto o caso
mais provvel. Se o produto cartesiano no seguido por um operador de seleo,
podemos tentar empurrar para baixo uma seleo a partir de nveis mais altos da rvore
de expresso usando a outra regra de seleo.

Seleo e operadores de conjuntos


Seleo distributiva ao longo do setminus, da interseco e unio de operadores. As
trs regras seguintes so utilizadas para definir as operaes na rvore de expresso.
Note, que no setminus e na interseco operadores, possvel aplicar o operador seleo
apenas em um dos operandos aps a transformao. Isso pode fazer sentido nos casos
em que um dos operandos pequeno, e os custos gerais da avaliao do operador
seleo superam os benefcios de se utilizar uma menor relao como um operando.
1.
2.
3.
Seleo e projeo
Seleo associativo com projeo se e somente se os campos referenciados na
condio da seleo so um subconjunto dos campos na projeo. Fazer a seleo antes
da projeo pode ser til se o operando um produto cartesiano ou join. Em outros
casos, se a condio da seleo relativamente cara para computar, mover a seleo
para fora da projeo pode reduzir o nmero de tuplas que devem ser testadas (desde
que a projeo possa produzir menos tuplas devido eliminao de duplicatas).

Projeo
Propriedades bsicas da projeo

Projeo idempotente, de forma que uma srie de (vlido) projees equivalente a


projeo extern

Projeo e operadores de conjuntos


Projeo distributiva ao longo da diferena, unio e interseco.
1.
2.
3.

Renomear
Propriedades bsicas de renomear
Renomear sucessivamente uma varivel pode se desmanchar em um nico renome.
Renomear operaes que no possuem variveis em comum pode ser arbitrariamente
reordenada, uma com relao a outra, e podem ser aproveitadas para fazer sucessivas
renomeaes adjacentes.
1.
2.
Renomear e operaes de conjuntos
Renomear distributivo sobre a diferena, unio e interseco.
1.
2.
3.

Implementaes
A primeira linguagem de consulta que foi baseada na da lgebra Codd foi ISBL, e este
trabalho pioneiro tem sido aclamado por vrias autoridades como tendo mostrado o
caminho para tornar a ideia de Codd em uma linguagem til. Business System 12 foi
uma indstria de vida curta que usava a fora do SGBD relacional que o exemplo
seguiu do ISBL.

Em 1998, Chris Data e Hugh Darwen props uma linguagem chamada Tutorial D
destinado a ser utilizada no ensino de teoria de banco de dados relacional, e sua
lnguagem de consulta tambm usa as ideias do ISBL. Rel uma implementao do
Tutorial D.
Mesmo a linguagem de consulta SQL vagamente baseada em uma lgebra relacional,
embora os operandos em SQL (tabelas) no so exatamente as relaes e diversos
teoremas teis sobre a lgebra relacional no detm homlogo no SQL (provavelmente
em detrimento de optimisers e / ou utilizadores).

Referncias
1. Em Unicode, o smbolo gravata borboleta (U+22C8).

Ligaes externas

RAT, Software Rational Algebra Translator to SQL

http://www.devmedia.com.br/articles/viewcomp.asp?comp=2663 http://www.inf.pucrio.br/~melissa/informatica/materias/bd1/material/bd1-modulo2a_Algebra.pdf
ELMASRI, Ramez; NAVATHE, Shamkant B. Sistemas de Banco de Dados. So Paulo:

You might also like