Você está na página 1de 43

Banco de Dados

lgebra Relacional

VANDCIA FERNANDES
Referncias: Elmasri, R. and Navathe, S.B. Sistemas de Bancos de Dados. Korth, H.F. e Silberschatz, A. Sistemas de Bancos de
Dados. Notas de aula dos professores: Simara Rocha, Juliano Varella de Carvalho e Vania Bogorny

lgebra Relacional
o

Linguagem Procedural

Conjunto de operaes que usa uma ou duas relaes como


entrada e gera uma relao de sada

Variantes da lgebra Relacional so usadas internamente pelos


SGBDs relacionais durante a otimizao de consultas

lgebra Relacional
o

Operaes
o

Bsicas:
o
oriundas da teoria de conjuntos: produto cartesiano, unio
e diferena
o
especficas para relaes: seleo, projeo e renomeo
Adicionais
o
oriundas da teoria de conjuntos: interseo
o
especficas para relaes: diviso e juno

lgebra Relacional
o

Operaes unrias:
o

operam sobre uma nica relao: selection, projection, rename.

Operaes binrias:
o

operam sobre duas relaes: union, set difference,cartesian


product.

Esquema Relacional
Para as operaes a seguir, considere o esquema relacional abaixo:
Empregado(matrcula, nomeE, endereo, sexo, salrio, supervisor, depto)
Departamento(codDepto, nomeD, matrGerente)
DepLocalizaes(codDepto, Localizao)
Alocao(matrEmp, codProj, numHoras)
Projeto(codProj, nome, localizao, deptoControla)
Dependentes( matrEmp, nomeDep, sexo, dataNasc, parentesco)

Operao de Seleo
o

Seleciona as tuplas que satisfaam um determinado predicado.

A letra sigma () representa a seleo, o predicado aparece subscrito a


sigma, e a relao utilizada colocada entre parnteses.
o

(predicado)(Nome da Relao)

No predicado podemos usar os conectivos:=,, >, <, , (and), (or),


(not)

Operao de Seleo - Exemplo


1.

Selecionar as tuplas dos


departamento de nmero 5

empregados

que

trabalham

no

2.

Selecionar as tuplas dos empregados que recebem mais de R$ 3mil

3.

Selecionar as tuplas dos empregados que trabalham no


departamento 4 e recebem acima de R$ 5mil, ou trabalham no
departamento 5 e recebem menos R$ 500,00

Operao de Seleo - Exemplo


o

Respostas:
1.

DEPTO =5(Empregado)

2.

salrio > 3000 (Empregado)

3.

(depto = 4 AND salrio > 5000) OR (depto = 5 AND salrio < 500)(Empregado)

Operao de Seleo
Observaes:

o
o
o

O operador de seleo unrio


O grau da relao resultante o mesmo da relao original
O nmero de tuplas da relao resultante menor ou igual
ao nmero de tuplas da relao original.

Operao de Projeo
o Retorna a relao com somente os atributos selecionados,
eliminando as linhas em duplicidade.
o A operao de projeo representada pela letra grega pi ().
Os atributos aparecem ao lado de pi, subscrito, e a relao
aparece entre parnteses.
(atributos)(Nome da Relao)

10

Operao de Projeo
o

Exemplo:
o

<sexo, salrio>(Empregado)

O nmero de tuplas da relao resultante ser menor ou igual ao


da relao original

11

Combinao de operaes (seleo e projeo)


o

Encontrar o nome e o salrio de todos os empregados que


trabalham no Departamento 5
o
Nome, Salrio (DEPTO = 5 (Empregado))

Alternativamente a representao anterior, podemos usar uma


notao que usa uma sequncia dos resultados dando nome as
relaes intermedirias:
o
EmpDepto5 Depto= 5 (Empregado)
Resultado Nome, Salrio (EmpDepto5)
12

Operao de Unio
o

Notao: R S

Definida como:
R S = {t | t R or t S}

13

Operao de Unio
o

Para R S ser vlida:

1. R, S deve ter a mesma aridade (mesmo nmero de


atributos)
2. Os domnios dos atributos devem ser compatveis (ex.,
segunda coluna de R possui o mesmo tipo que a segunda coluna de
S)
o

As tuplas repetidas so eliminadas


14

Operao de Unio - Exemplo

15

Operao de Unio - Exemplo


oObtenha a matrcula dos empregados que trabalham no departamento 5 ou
supervisionam empregados que trabalham no departamento 5.
EmpDepto5 depto = 5 (Empregados)
Resultado1 matricula (EmpDepto5)
Resultado2 supervisor(EmpDepto5)
Resultado Resultado1 U Resultado
oOu
matricula(depto = 5(Empregado)) supervisor(depto =5 (Empregado))
16

Operao de Diferena
o Notao: R S
o Definida como:
R S = {t | t R and t S}
o A diferena entre duas relaes, R - S, o conjunto de
tuplas que est em r mas no est em s.
17

Operao de Diferena
o Diferena deve ser feita entre relaes compatveis
o
o

R e S devem ter a mesma aridade


domnios de atributos de R e S devem ser compatveis

18

Operao de Diferena - Exemplo

19

Operao de Diferena - Exemplo


o

Obtenha a matrcula dos empregados que trabalham no


departamento 5 e no so supervisores
o

matricula(depto = 5(Empregado)) - supervisor(Empregado)

20

Operao de Interseo
o

Notao: r s

Definida como:
r s = {t | t r and t s}

A interseo entre duas relaes, r s, o conjunto de tuplas que existe


tanto em r como em s.
Para r s ser vlida devero ser observadas as mesma restries da unio.

21

Operao de Interseo - Exemplo

22

Operao de Interseo - Exemplo


Obtenha a matrcula dos empregados que trabalham no
departamento 5 e so supervisores:
matricula(depto = 5(Empregado)) supervisor(Empregado)

23

Produto Cartesiano
o Notao: R x S
o Definida como:

R x S = {t q| t R and q S}
o O resultado uma relao cujas tuplas so a combinao das

tuplas das relaes R e S, tomando-se uma tupla de R e


concatenando-a com uma tupla de S

24

Produto Cartesiano
o O produto Cartesiano de duas relaes R X S combina cada tupla de R com

cada tupla de S

25

Produto Cartesiano - Exemplo

26

Produto Cartesiano - Exemplo


Obtenha para cada empregado do sexo feminino, uma lista dos
nomes de seus dependentes:
nomeE, nomeDep (matr = matrEmp (sexo=F(Empregado) X Dependentes))

27

Operao Renomeao (Rename)


o

Permite renomear Relaes e/ou atributos para que se evite


a ambiguidade na hora de compararmos atributos com
mesmo nome de diferentes relaes.

Pode renomear uma relao ou os atributos da relao ou


ambos. representada pela letra grega rho()

28

Operao Renomeao (Rename)


o

Sintaxe: A operao Rename quando aplicada a uma relao R de


grau N denotada por:
o
S(B1,B2,,Bn) (R)
o
Renomeia a relao R para S e os atributos de R para B1, , Bn
o

S(R)
o
Renomeia a relao R para S

(B1,B2,, Bn) (R)


o
Renomeia os atributos de R para B1, , Bn
29

Diviso
o Sintaxe: R S
o A diviso de duas relaes R S, onde atributos(S)
atributos(R), resulta na relao T com atributos(T) = {atributos(R)
atributos(S)}, onde para cada tupla t que aparece no resultado,
os valores de t devem aparecer em R combinado com cada tupla
de S
o Quase sempre a diviso usada quando nas consultas h frases
do tipo para todos
30

Diviso - Exemplo

31

Diviso - Exemplo
Filmes

Aluguis
codFilme

codCli

data

codFilme

ttulo

gnero

f1

Corao Valente

Aventura

f2

Se eu Fosse Voc

Comdia

01/02/2000

f3

E o Vento Levou

Romance

03/01/2000

f4

O Mscara

Comdia

f1

c1

01/01/2000

f2

c3

05/01/2000

f3

c1

f4

c2

Clientes
codCli

nome

idade

cidade

c1

Joo

31

Porto Alegre

c2

Jos

28

Porto Alegre

c3

Lus

25

Novo Hamburgo

o Encontre os clientes que j alugaram todos os filmes.


( codFilme, codCli (Aluguis)) ( codFilme(Filmes))
32

Juno
o A operao de juno (join), denotada por

, usada para combinar


tuplas relacionadas de duas relaes em uma nica tupla

o Permite combinar selees e um produto cartesiano em uma s

operao
o Permite recuperar relacionamentos entre relaes

33

Juno
o Sejam: R

<critrio> S

o Onde:
o <R e S> so nomes de tabelas ou expresses de lgebra relacional que
resultam em tabelas
o <critrio> uma expresso booleana envolvendo literais e valores de
atributos das duas tabelas

o A Juno tem como operandos duas tabela. O resultado equivalente

a executar:

34

Juno - Exemplo
o Obtenha o nome do gerente de cada departamento
nomeD, nomeE (Departamento matrGerente = Matricula Empregado)
o Na maior parte dos casos, o <critrio> de juno uma expresso
como mostrada no exemplo
o Envolve apenas igualdade de valores de atributos de diferentes
tabelas
o Esse tipo de juno chamada de Equijuno (Equijoin)

35

Juno Natural
Quando as colunas de juno (condio de juno) possuem os
mesmos nomes, a lista de nomes das colunas no necessita ser
especificadas. Nesse caso, temos uma Juno Natural (Natural join)
que um equijoin onde um dos atributos com valores repetidos
eliminado.

36

Juno Externa (Outer Join)


uma extenso da juno
Quando a Natural join deixa de fora tuplas das relaes
envolvidas para as quais no h par (valores nulos)
Existem trs formas:
Juno externa esquerda
Juno externa direita
Juno externa total
Adiciona-se tuplas extras nas colunas com valores nulos
37

Juno Externa - Exemplo

38

Juno Externa - Exemplo

39

Funes Agregadas
o

Sum: descobrir a soma total dos salrios de todos os


empregados de tempo integral.
sum salrio (EMP_TI)

Count: descobrir o nome de cidades existentes na tabela de


empregados.
count Cidade (EMP)
count-distinct Cidade (EMP)

40

Funes Agregadas
o

Avg: descobrir a mdia dos salrios


avg salrio (EMP_TI)

Min: descobrir o menor salrio


min salrio (EMP_TI)

Max: descobrir o maior salrio


max salrio (EMP_TI)

41

Exerccios
Tabela Peas
Cod_Peca

Nome

Cor

Peso

Cidade

P1

Eixo

Cinza

10

Recife

P2

Rolamento

Preto

16

Campinas

P3

Mancal

Verde

30

Macei

Tabela Fornecedor
Cod_Fornec

Tabela Embarque
Cod_Peca

Cod_Forne

Qtd_Embarque

P1

F1

300

P1

F2

400

P1

F3

200

P2

F1

300

P2

F4

350

Nome

Status

Cidade

F1

Silva

So Paulo

F2

Souza

10

Rio de Janeiro

F3

Alves

So Paulo

F4

Tavares

Rio de Janeiro

42

Exerccios
1. Mostre as peas com o cdigo P1
2. Mostre os dados de todos os fornecedores que tenham status maior que 5
e que sejam do Rio de Janeiro
3. Apresente os cdigos e os nomes de todas as peas
4. Mostre as cidades dos fornecedores
5. Mostre o cdigo de fornecedor e quantidade embarcada para cada
embarque da pea de cdigo P1
6. Obtenha os cdigos de todos os fornecedores que tem embarques e que
tem status maior que 5
7. Obtenha os nomes de todas as peas para as quais h embarques
43