Professional Documents
Culture Documents
O tipo de dados que descreve os tipos de valores que podem aparecer em cada
coluna chamado de domnio
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.
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:
Ento toma-se o produto cartesiano e faz-se a seleo as tuplas que devem ser ligadas:
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
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
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
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
(RX=S)
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+.
Banco de dados relacional pode ser representado como uma rvore, onde
Folhas so as relaes,
Subrvores so sub-expresses;
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.
Projeo
Propriedades bsicas da projeo
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
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: