Вы находитесь на странице: 1из 11

UNIVERSIDADE FEDERAL DO ESPRITO SANTO UFES

CAMPUS DE ALEGRE
DEPARTAMENTO DE COMPUTAO DCOMP
Disciplina de Banco de Dados 2015/2
Professor: Leandro Fernandes dos Santos

Resumo dos Operadores da lgebra Relacional

A lgebra Relacional uma coleo de operaes utilizadas para manipular relaes.


Essas operaes so usadas para selecionar tuplas de uma determinada relao ou
para combinar tuplas relacionadas a diversas relaes com o propsito de especificar
uma consulta - uma requisio de recuperao - sobre a base de dados.

As operaes da lgebra relacional so normalmente divididas em dois grupos.

Conjunto de operaes da teoria dos conjuntos: UNIO, INTERSEO,


DIFERENA e PRODUTO CARTESIANO.

Conjunto de operaes desenvolvidas especificamente para bases de dados


relacionais: SELEO, PROJEO, JOIN entre outras.

Obs.: Os exemplos de aplicao das operaes da lgebra abordadas nesse resumo


tomam por base as instncias abaixo:

Estas instncias esto no livro intitulado Sistemas de Banco de Dados [Elmasri, R. ,


Navathe, S. B.] 4 Ed. Para mais detalhes ver captulo 5 do livro.

1 O operador de SELEO
A operao SELECT usada para selecionar um subconjunto de tuplas de uma
relao as quais devem satisfazer uma condio de seleo. Por exemplo, a seleo
de um subconjunto de tuplas da relao EMPREGADOS que trabalham para o
departamento 4 ou que tenham salrio maior que 3000. Cada uma dessas condies
especificada individualmente usando a operao SELECT como segue:

Em geral, a operao SELECT denotada por:

Onde:
O smbolo usado para denotar o operador SELECT e a condio de seleo
uma expresso Booleana especificada sobre atributos da relao especificada.
A relao resultante da operao SELECT tem os mesmos atributos da relao
especificada em <nome da relao>. A expresso booleana especificada em
<condio de seleo> construda a partir de clusulas da forma:
o <nome de atributo> <operador de comparao> <valor constante>, ou
o <nome de atributo> <operador de comparao> <nome de atributo>
Onde:

<nome de atributo> o nome de um atributo da <nome da


relao>

<operador de comparao> normalmente um dos operadores


relacionais {=,<,>, ...}

<valor constante> um valor constante.

As clusulas podem ser utilizadas em conjunto com os operadores lgicos


{AND, OR NOT} para formar uma condio de seleo composta.

Por exemplo, suponha que se deseja selecionar as tuplas de todos os


empregados que ou trabalham no departamento 4 com salrio superior a

R$2.500,00 ou trabalham no departamento 5 e ganham mais que


R$3.000,00. Neste caso, pode-se especificar a consulta da seguinte forma:

O operador SELECT unrio; isto , ele aplicado somente a uma relao. Assim, o
SELECT no pode ser usado para selecionar tuplas de mais de uma relao. Observe
tambm que a operao de seleo aplicada individualmente para cada tupla. Assim,
as condies de seleo no podem ser aplicadas a mais que uma tupla. O grau da
relao resultante a mesma que a relao original. O nmero de tuplas da
relao resultante sempre menor ou igual ao nmero de tuplas da relao
original.

O operador SELECT tambm comutativo:

Assim, uma seqncia de SELECTs pode ser aplicada em qualquer ordem. Alm disso,
pode-se sempre trocar operadores SELECT em cascata com a conjuntiva AND; isto :

2 O operador de PROJEO
Pensando na relao como uma tabela, o operador SELECT seleciona algumas linhas
da tabela enquanto descarta outras. O operador PROJECT, por outro lado, seleciona
certas colunas da tabela e descarta outras. Se existir o interesse sobre certos atributos
da relao, pode-se usar o PROJECT para projetar a relao sobre esses atributos.
Por exemplo, suponha a necessidade de listar, para cada empregado, os atributos
PNOME, SNOME e SALRIO; ento pode-se usar o PROJECT como segue:

A forma geral do operador de projeo :

Onde:
o smbolo usado para representar o operador PROJECT
<lista de atributos> uma lista de atributos da relao especificada por <nome
da relao>
A relao resultante tem apenas os atributos especificados em <lista de atributos> e
estes atributos aparecem na mesma ordem em que foram especificados. Assim, o
grau igual ao nmero de atributos em <lista de atributos>.

Convm salientar que, caso a lista de atributos no contenha atributos chaves,


ento provvel que tuplas duplicadas apaream no resultado. A operao
PROJECT remove implicitamente quaisquer tuplas duplicadas, tal que o resultado da
operao PROJECT seja um conjunto de tuplas e assim, uma relao vlida.

Dessa maneira, se duas ou mais tuplas idnticas aparecerem quando aplicada a


operao PROJECT, apenas uma ser mantida no resultado; isto conhecido como
eliminao de duplicidade e necessrio para assegurar que o resultado da operao
tambm seja uma relao - um conjunto de tuplas.
O nmero de tuplas na relao resultante sempre ser igual ou menor que a
quantidade de tuplas na relao original.

Note-se que:

caso <lista2> contenha os atributos de <lista1>; caso contrrio, o lado esquerdo da


igualdade acima estar incorreto. A comutatividade no vlida para PROJECT.

3 A operao de UNIO
O resultado da operao, denotado por R S, uma relao que inclui todas as tuplas
de R e todas as tuplas de S. Tuplas duplicadas so eliminadas.

Por exemplo, suponha a necessidade de se recuperar o nmero do seguro social de


todos os empregados que trabalham no departamento 5 ou, diretamente supervisione
um empregado que trabalha no departamento 5. Esta operao pode ser realizada
usando o operador UNION:

A operao de unio uma operao binria.

4 A operao de INTERSEO
O resultado desta operao, denotado por R S, a relao que inclui todas as tuplas
que so comuns a R e S.

5 A operao de DIFERENA
O resultado desta operao, denotado por R - S, a relao que inclui todas as tuplas
de R, mas que no esto em S.
Observaes importantes em relao s operaes de UNIO, INTERSEO e
DIFERENA

Quando essas operaes so adaptadas para a base de dados relacional, deve-se


assegurar que essas operaes resultem sempre em relaes vlidas. Para conseguir
isso, as duas relaes aplicadas a qualquer uma das trs operaes acima devem ter o
mesmo tipo de tuplas; esta condio chamada unio compatvel. Duas relaes
R(A1, A2, ..., An) e S(B1, B2, ..., Bn) so unio compatvel se elas tiverem o mesmo
grau n, e dom(Ai)=dom(Bi) para 1 i n.

Isso significa que as duas relaes tm o mesmo nmero de atributos e que cada par
de atributos correspondentes tem o mesmo domnio.

6 A operao PRODUTO CARTESIANO


A operao CARTESIAN PRODUCT, denotada por X, tambm uma operao de
conjunto binria, mas as relaes sobre as quais so aplicadas no necessitam ser
unio compatvel. Esta operao usada para combinar tuplas de duas relaes tal
que tuplas relacionadas possam ser identificadas.

Em geral, o resultado de R(A1, A2, ..., An) S(B1, B2, ..., Bm) a relao Q com n + m
atributos Q(A1, A2, ..., An, B1, B2, ..., Bm) nesta ordem. A relao resultante Q tem
uma tupla para cada combinao de tuplas. Assim, se R tem nR tuplas e S tem nS
tuplas, ento RS ter nR*nS tuplas.
O CARTESIAN PRODUCT cria tuplas com atributos combinados de duas
relaes. Pode-se ento selecionar apenas as tuplas que estejam relacionadas
especificando uma condio de seleo apropriada. Devido seqncia: CARTESIAN
PRODUCT seguido de SELECT, ser muito comum para se identificar tuplas
relacionadas de duas relaes, uma operao especial JOIN foi criada para especificar
esta seqncia como uma nica operao. Assim, a operao CARTESIAN PRODUCT
raramente utilizada isoladamente.

7 A operao de JUNO NATURAL (NATURAL JOIN)

A juno natural ou natural join uma operao binria que permite combinar selees
e um produto cartesiano em uma s operao.
Esta operao muito importante para quaisquer bases de dados relacionais, pois
permite processar relacionamentos entre relaes.
Pode-se utilizar o smbolo de juno natural para especificar o natural JOIN.

Smbolo:
Note que, se nenhuma combinao de tuplas satisfizer a condio join, ento o
resultado ser uma relao vazia. Em geral, se R tiver nR tuplas e S tiver nS tuplas, o
resultado de uma operao JOIN R <condio join> S ter entre zero e nR*nS tuplas.
Se no existir <condio join> para satisfazer, ento todas as combinaes de
tuplas sero includas. Nestes casos, JOIN torna-se um CARTESIAN PRODUCT.

8 A operao de DIVISO
A diviso de duas relaes R S, onde os atributos de S esto contidos nos
atributos de R, A(R) A(S), resulta na relao T, onde A(T) = { A(R) A(S) }, onde
para cada tupla t que aparece no resultado, os valores de t devem aparecer em R,
combinando com cada tupla de S. Esta operao utilizada nas consultas em que
se emprega a frase para todos;

Para expressar esta consulta usando DIVISION poderamos querer a seguinte


consulta: "Recupere os nomes dos empregados que trabalham em todos os projetos
em que 'John Smith' trabalha.
Deve-se fazer o seguinte: Primeiro recuperar a lista de nmeros de projetos em que
'John Smith' trabalha em uma relao intermediria SMITH_PNOS:

Depois, criar uma relao que inclua tuplas da forma <PNRO, NSSEMP> que lista
todos os empregados, cujo nmero do seguro social NSSEMP, que trabalham num
determinado projeto PNRO:

Finalmente, aplicar a operao DIVISION para as relaes obtidas a fim de obter os


nmeros dos seguros sociais desejados:

A operao de diviso pode ser expressa como uma seqncia de operaes , e -:

9 Operadores Relacionais Adicionais


9.1 Funes de agregao
O primeiro tipo de consulta que no pode ser expressa na lgebra relacional
conhecido como funes agregadas sobre colees de valores da base de dados.

As funes normalmente aplicadas para colees de valores numricos so:


SUM, AVERAGE, MAXIMUM e MINIMUM.

A funo de contagem de tuplas normalmente chamada COUNT. Cada uma destas


funes pode ser aplicada a todas as tuplas de uma relao.

Outro tipo comum de consulta envolve o agrupamento de tuplas de uma relao pelo
valor de alguns de seus atributos e ento a aplicao de alguma funo agregada
independente para cada grupo de tuplas.
Pode-se definir uma operao FUNCTION, que pode ser usada para especificar estes
tipos de consultas.

Onde:
<atributos de agrupamento> uma lista de atributos da relao especificada em
<nome da relao>
<lista de funes> uma lista de pares (<funo><atributo>). Em cada par,

<funo> uma das funes seguintes: SUM, AVERAGE, MAXIMUM,


MINIMUM, COUNT, e <atributo> um atributo da relao especificada por
<nome da relao>.
A relao resultante tem tantos atributos quanto queles que existirem em atributos de
agrupamento alm da lista de funes combinada. Por exemplo, para recuperar cada
nmero de departamento, o nmero de empregados em departamento, e sua mdia
salarial, escreve-se:

Referncias

ELMASRI, R., NAVATHE, S. R. Sistemas de Banco de Dados. 4 Ed. Pearson


Education. 2005.
TAKAI, O.K.; ITALIANO, I.C.; FERREIRA, J.E. Introduo a Banco de Dados. Notas
de Aula IME USP. Disponvel em: < http://www.ime.usp.br/~jef/apostila.pdf >. Acesso
em: 29 Outubro de 2015.
CARVALHO, J. V. Banco de Dados lgebra Relacional. Notas de Aula. Feevale
Centro Universitrio. Disponvel em: <minerva.ufpel.edu.br/~paulo.ferreira/algebrarelacional.pdf>
Acesso em: 29 Outubro de 2015.