Você está na página 1de 45

Banco de Dados

Prof. Me. Marcos Alves


marcos@ucdb.br

Operaes mapeiam uma ou mais relaes em uma nova relao

Algumas operaes impem restries nas relaes de entrada

Operaes:

Bsicas:

oriundas da teoria de conjuntos: Produto Cartesiano, Unio e Diferena

especficas para relaes: Seleo, Projeo e Renomeao

Adicionais

oriundas da teoria de conjuntos: Interseo

especficas para relaes: Diviso e Juno

Notas:

as operaes bsicas so suficientes para exprimir as mesmas consultas que o Clculo Relacional

as operaes adicionais ajudam a formular certas consultas que seriam muito complexas de exprimir usando apenas as operaes bsicas

Toda operao relacional opera (age) sobre um ou mais conjuntos de dados e fornece como resultado um novo conjunto.

Podemos combinar mais de uma operao relacional em uma nica expresso algbrica;

O resultado de uma operao pode ser utilizado como entrada para outra operao;

Banco de Dados

Prof. Me. Marcos Alves

Considere o Banco de Dados abaixo:


funcionrio (NrMatric, NmFunc, DtAdm, Sexo, CdCargo, CdDepto)
cargo (CdCargo, NmCargo, VrSalario)
depto (CdDepto, NmDepto, Ramal)

Banco de Dados

Prof. Me. Marcos Alves

Projeo
Produz um conjunto onde h um elemento para cada elemento do conjunto

de entrada
A estrutura dos membros do conjunto resultante definida nos argumentos

da operao.
Indicada por .
Operao que filtra as colunas de uma tabela.
A projeo classificada como uma operao unria.

Banco de Dados

Prof. Me. Marcos Alves

Projeo
Ex.: NmFunc(funcionrio)
A expresso produz um conjunto
contendo um elemento para cada
funcionrio,

contm

cada

apenas

elemento

informao

referente a NmFunc da relao


funcionrio original.

Banco de Dados

Prof. Me. Marcos Alves

Seleo ou Restrio
uma operao que para um conjunto inicial fornecido como argumento,

produz um subconjunto estruturalmente idntico, mas apenas com os


elementos do conjunto original que atendem a uma determinada condio
Tambm chamada de predicado

Indicada por
Operao que filtra as linhas de uma tabela
Operao unria
Opera sobre um nico conjunto de dados

Banco de Dados

Prof. Me. Marcos Alves

Seleo ou Restrio
Ex.: Sexo = M (funcionrio)

Produz

conjunto

dos

elementos de funcionrio que


atendem ao predicado [Sexo =

M], subconjunto dos funcionrios para o qual essa condio


avaliada como verdadeira.

Banco de Dados

Prof. Me. Marcos Alves

Seleo + Projeo
Muitas vezes pode ser preciso combinar seleo com projeo
Exemplo: descobrir o nome completo e a data de admisso de todos os

funcionrios do sexo feminino existentes na empresa.


Necessrio combinar uma projeo com uma seleo.
A projeo no permite descartar linhas, apenas colunas, deveremos fornecer

a essa operao o subconjunto resultante de uma filtragem (seleo) da

relao de funcionrios original.

Banco de Dados

Prof. Me. Marcos Alves

Seleo + Projeo

Banco de Dados

Prof. Me. Marcos Alves

Seleo + Projeo
Expresso:

NmFunc, DtAdm ( Sexo = F (funcionrio))


Devido ao aninhamento das

operaes est implcito que


primeiro ser executada a
seleo e depois a projeo.
Neste exemplo possvel inverter

a ordem? Por qu?

Banco de Dados

Prof. Me. Marcos Alves

10

Produto Cartesiano
Suponha agora que precisamos obter o nome completo, a data de

admisso e o salrio de cada funcionrio cadastrado.


Fato novo: referncia a colunas de mais de uma tabela, uma vez que o

nome e a data de admisso fazem parte da relao funcionrio, enquanto


que o salrio existe apenas em cargos.
Produto Cartesiano: o resultado do produto cartesiano de duas tabelas

uma terceira tabela contendo todas as combinaes possveis entre os


elementos das tabelas originais.
Banco de Dados

Prof. Me. Marcos Alves

11

Produto Cartesiano

Notao geralmente adotada:


conjunto1 x conjunto2

Representa essa operao binria

A tabela resultante possuir um nmero de colunas que igual soma das quantidades de
colunas das duas tabelas iniciais, e um nmero de linhas igual ao produto do nmero de suas

linhas.

O produto cartesiano no muito usado como um fim em si mesmo, ou seja, dificilmente


estaremos interessados em saber quais so todas as combinaes possveis entre as linhas de
duas tabelas.

Entretanto, a nica forma primitiva de que dispomos para fundir informaes de duas
tabelas heterogneas para posterior processamento.
Banco de Dados

Prof. Me. Marcos Alves

12

Produto Cartesiano
Ex.: NmFunc, DtAdm, VrSalrio ( funcionrio.CdCargo = cargo.CdCargo (funcionrio x cargo))

1. Ser aplicado um Produto cartesiano sobre funcionrio x cargo, este resultado

retornar um novo conjunto de todos os registros de ambas entidades.


2. Ser aplicada a Seleo, a qual far um filtro formando um novo conjunto com

registros onde a chave primria de cargo.CdCargo dever ser igual a chave


estrangeira de funcionario.CdCargo
3. Por fim a Projeo que mostrar apenas as colunas NmFunc, DtAdm e VlrSalrio

Banco de Dados

Prof. Me. Marcos Alves

13

Produto Cartesiano

Banco de Dados

Prof. Me. Marcos Alves

14

Produto Cartesiano

Banco de Dados

Prof. Me. Marcos Alves

15

Diferena entre Conjuntos: A B

uma operao primitiva que requer


como operandos duas tabelas uniocompatveis, ou seja, estruturalmente
idnticas.
O resultado uma tabela que possui
todas as linhas que existem na primeira
tabela e no existem na segunda.
Observe que A B diferente de B A

Banco de Dados

Prof. Me. Marcos Alves

16

Unio: A B
Operao primitiva tambm requer como operandos tabelas unio-compatveis.
Produz como resultado uma tabela que contm todas as linhas da primeira tabela

seguidas de todas as linhas da segunda tabela.


A tabela resultante possui a mesma quantidade de colunas que as tabelas

originais, e tem um nmero de linhas que no mximo igual soma das linhas das
tabelas fornecidas como operandos
As linhas que so comuns a ambas as tabelas aparecem uma nica vez no

resultado

Banco de Dados

Prof. Me. Marcos Alves

17

Operao A B = B A

Banco de Dados

Prof. Me. Marcos Alves

18

Interseco: A B
Esta uma operao adicional que produz

como resultado uma tabela que contm,


sem repeties, todos os elementos que
so comuns s duas tabelas fornecidas
como operandos.
As tabelas devem ser unio-compatveis.
O mesmo efeito pode ser obtido fazendo-

se uma combinao de diferenas entre

conjuntos

ou com unies e diferenas


ou ainda

A B =A (A B)
Banco de Dados

AB=(AB)(AB) (BA)

AB=(AB)((AB) ( BA) )

Prof. Me. Marcos Alves

19

Juno: A |x| B
Operao que produz uma combinao entre as linhas de uma tabela com as linhas

correspondentes de outra tabela, sendo em princpio correspondente a uma


seleo pelos atributos de relacionamento sobre um produto cartesiano dessas
tabelas:
A |x| B = A.chave1 = B.chave2 ( A x B )

Criada porque esse tipo de combinao de tabelas de uso muito comum,

facilitando com isso a escrita de expresses.


A tabela resultante de uma juno tem todas as colunas da primeira tabela e todas

da segunda tabela.
Isso faz com que os valores dos campos utilizados como critrio para a correspondncia entre as linhas
aparea duplicado, j que um vem da primeira tabela e outro da segunda
Banco de Dados

Prof. Me. Marcos Alves

20

Renomeao: <novo_nome> ( A )
Operao unria primitiva redefine o nome de uma tabela em um

determinado contexto.
til para auto-relacionamentos, onde precisamos fazer a juno de uma

tabela com ela mesma, e nesse caso cada verso da tabela precisa receber
um nome diferente da outra.
Representada pelo smbolo

Banco de Dados

Prof. Me. Marcos Alves

21

Diviso: A B
uma operao adicional que produz como resultado a

projeo de todos os elementos da primeira tabela que se


relaciona com todos os elementos da segunda tabela.
Ex.: Os nomes dos departamentos que possuem todos os

cargos:
NmDepto, CdCargo ( depto |x| funcionrio ) CdCargo ( cargo )

Banco de Dados

Prof. Me. Marcos Alves

22

Atribuio: varivel A
Permite que o contedo de uma tabela seja atribudo

(colocado) em uma varivel especial, oferecendo a


possibilidade de um tratamento at certo ponto
algortmico para algumas sequncias de operaes.

Banco de Dados

Prof. Me. Marcos Alves

23

Resumo

Banco de Dados

Prof. Me. Marcos Alves

24

Exerccios
Com base nas tabelas Funcionrio, Cargo e Depto, elaborar as expresses da

lgebra relacional que obtenham:


1. Todos os funcionrios do departamento D1.
2. O nome e a matrcula de todos os funcionrios do departamento D1.
3. A matrcula e o nome do respectivo departamento de todos os funcionrios.

4. O nome dos funcionrios que ganham mais de $500.


5. O ramal do funcionrio ANA SILVEIRA.
6. Os nomes de todos os funcionrios com cargo de MECANICO.
7. Os nomes de todos os funcionrios que trabalham no mesmo departamento que JOSE
NOGUEIRA.
8. Os nomes dos departamentos que possuem tanto funcionrios como funcionrias.
Banco de Dados

Prof. Me. Marcos Alves

25

Operao de Seleo
Expresso:
<nome do atributo> <op de comparao> <valor>
<nome do atributo> <op de comparao> <nome do atributo>
Operadores de comparao aplicados em nmeros e datas:
=, <, >, , ,
Operadores de comparao aplicados em strings:

=,
Condies Booleanas tambm so vlidas
AND, OR, NOT
Banco de Dados

Prof. Me. Marcos Alves

26

Operao de Juno
Pode-se aplicar expresses para determinar a condio

da juno:
<Relao 1> |X| R1.A1 = R2.A1 AND R1.A2 = R2.A2 <Relao 2>
R |X| <condio de juno> S

Banco de Dados

Prof. Me. Marcos Alves

27

Operao de Diviso
TRS

Banco de Dados

Prof. Me. Marcos Alves

28

Banco de Dados

Banco de Dados

Prof. Me. Marcos Alves

29

Exerccios
1.

Recupere o nome e endereo de todos os empregados que trabalham

para o departamento de Pesquisa.


2.

Para todo o projeto localizado em Stafford, liste o cdigo do projeto, o


cdigo do departamento e o ltimo nome, endereo e data de

nascimento do gerente do departamento.


3.

Encontre os nomes dos empregados que trabalham em todos os projetos


controlados pelo departamento de nmero 5.

Banco de Dados

Prof. Me. Marcos Alves

30

Exerccios
1. Recupere o nome dos empregados que trabalham no projeto 1 ou 10.
2. Recupere o nome do projeto, o nome do departamento que o projeto esta sendo
desenvolvido, o nome dos empregados que fazem parte do projeto e seus salrios.
3. Traga o nome do empregado, o nome dos filhos de cada empregado e a data de
nascimento dos mesmos.
4. Faa uma lista dos cdigos dos projetos que envolvam um empregado cujo ltimo
nome seja 'Smith', mesmo que esse trabalhador seja o gerente do departamento que
controla o projeto.
5. Recupere o nome dos empregados no tenham dependentes.
6. Liste os nomes dos gerentes que tenham pelo menos um dependente.
Banco de Dados

Prof. Me. Marcos Alves

31

Exerccios
1. Recupere o nome dos empregados que trabalham no projeto 1 ou 10.
2. Recupere o nome do projeto, o nome do departamento que o projeto esta sendo
desenvolvido, o nome dos empregados que fazem parte do projeto e seus salrios.
3. Traga o nome do empregado, o nome dos filhos de cada empregado e a data de
nascimento dos mesmos.
4. Faa uma lista dos cdigos dos projetos que envolvam um empregado cujo ltimo
nome seja 'Smith', mesmo que esse trabalhador seja o gerente do departamento que
controla o projeto.
5. Recupere o nome dos empregados no tenham dependentes.
6. Liste os nomes dos gerentes que tenham pelo menos um dependente.
Banco de Dados

Prof. Me. Marcos Alves

32

O operador de agrupamento e o (gama)

O operador de agrupamento rene as tuplas em grupos sobre os

quais podem ser aplicadas funes agregadas.

As funes de agregao mais comuns so:


SOMA (SUM),
MDIA(AVG),
MXIMO(MAX),
MNIMO(MIN) e
CONTAR(COUNT).

Banco de Dados

Prof. Me. Marcos Alves

33

Sintaxe:

Uma expresso de agrupamento formada por um conjunto de colunas


agrupadoras, um conjunto de colunas projetadas e uma relao, no seguinte

formato:

<colunas agrupadoras> <colunas projetadas> (<Relao>)

Onde:

<colunas agrupadoras>: conjunto com nenhuma ou mais colunas a serem utilizadas para agrupamento

<colunas projetadas>: conjunto com nenhuma ou mais colunas que sero retornadas pela expresso.
o

As colunas podem ser envolvidas por funes a serem aplicadas as mesmas.

As funes projetadas podem tambm ser renomeadas, atravs da adio de uma seta seguida do novo nome,

fazendo com que a relao resultante tenha como nome de coluna o novo nome atribudo.

<Relao>: uma relao da lgebra relacional que possui as colunas utilizadas na lista de colunas
projetadas e na lista de funes agregadoras.
Banco de Dados

Prof. Me. Marcos Alves

34

Exemplo:

Considerando a relao: R1 (C1, C2,C3), o agrupamento pode ser aplicado da


seguinte maneira:

C1 C1, SUM(C2) (R1)

As tuplas da relao R1 sero particionadas em grupos, conforme o valor de C1. As

tuplas que possurem o mesmo valor em C1 sero reunidas em um grupo.


Para cada grupo, uma nova tupla ser produzida. Caso nenhuma coluna projetada ou

funo tenha sido informada, a tupla ser composta apenas pelos valores resultantes
do agrupamento. Caso contrrio, a nova tupla ser composta pelas:

Colunas projetadas.

Aplicao das funes agrupadoras ao grupo. No exemplo, para cada grupo, a coluna C2
ser somada, produzindo o valor da nova tupla.
Banco de Dados

Prof. Me. Marcos Alves

35

Outros Exemplos:

C3

(R1): Produz uma nova relao agrupando os valores da

coluna C3.

MAX(C3) (R1):

Produz uma nova relao com apenas uma tupla,

contendo o maior valor da coluna C3.

C1

C1, SUM(C3) SOMA (R1): Produz uma nova relao resultante do

agrupamento das tuplas a partir da coluna C1, contento a coluna


C1 e o resultado da soma da coluna C3 renomeado para SOMA.
Banco de Dados

Prof. Me. Marcos Alves

36

Banco de Dados

Banco de Dados

Prof. Me. Marcos Alves

37

SUM(salario) (EMPREGADO)

Resultado: uma tupla com o somatrio de todos os salrios.


EMPREGADO
SUM(salario)
281000

coddpto coddpto, COUNT(codigo) (EMPREGADO):

Resultado: Conta quantos funcionrios tem em cada setor.


EMPREGADO
coddpto COUNT(codigo)
5
4
4
3
1
1
Banco de Dados

Prof. Me. Marcos Alves

38

coddpto coddpto, AVG(salario) (EMPREGADO)

Resultado: Mdia de salrio de cada setor.


EMPREGADO
coddpto
AVG(salario)
5
33250
4
31000
1
55000

coddpto coddpto, AVG(salario) MEDIA_SALARIO (EMPREGADO)


EMPREGADO
coddpto MEDIA_SALARIO
5
33250
4
31000
1
55000
Banco de Dados

Prof. Me. Marcos Alves

39

Exerccios
1. Recupere o nome e a data de nascimento do empregado mais velho.
2. Liste o nome do projeto e quantidade total de horas trabalhadas em cada
um deles.
3. Liste o nome do empregado e quantos dependentes cada um deles possui.
4. Recupere o nome do departamento e por quantos projetos cada um deles e
responsvel.
5. Liste o nome do departamento e a media salarial para de cada um.
6. Recupere a quantidade de empregados do sexo Masculino.

Banco de Dados

Prof. Me. Marcos Alves

40

Juno natural na qual as tuplas de uma ou ambas as relaes que


no so combinadas so, mesmo assim, preservadas no resultado.

Trs tipos
juno externa esquerda (left [outer] join)

tuplas da relao esquerda so preservadas

notao: relao1 ]X| relao2

juno externa direita (right [outer] join)

tuplas da relao direita so preservadas

notao: relao1 |X[ relao2

juno externa completa (full [outer] join)

tuplas de ambas as relaes so preservadas

notao: relao ]X[ relao2

Banco de Dados

Prof. Me. Marcos Alves

41

Sintaxe:
(Relao) ]X[ (predicado) (Relao)
Onde:
Predicado: conjunto de expresses lgicas que devem ser satisfeitas para uma linha que faa

parte do subconjunto resultante.


Relao: conjunto de entrada (inicial).

As expresses lgicas podem ser formadas por operadores

lgicos e relacionais.
Banco de Dados

Prof. Me. Marcos Alves

42

Exemplo:

Banco de Dados

Prof. Me. Marcos Alves

43

Banco de Dados

Banco de Dados

Prof. Me. Marcos Alves

44

Exerccio:
Liste o nome dos empregados, o nome do dependente e

o parentesco de todos os empregados, mesmo que este


no possua nenhum dependente.

Banco de Dados

Prof. Me. Marcos Alves

45

Você também pode gostar