Rodrigo Kiyoshi Saito / rodrigok@anchieta.br
BANCO DE DADOS I
Tópicos abordados
• Introdução à Álgebra Relacional;
• União, Intersecção, Diferença;
• Projeção e Seleção;
• Produto Cartesiano;
• Junção e Junção Natural;
• Exercícios
• Referências Bibliográficas
INTRODUÇÃO À
ÁLGEBRA RELACIONAL -
RESUMO
• Como o nome indica, a álgebra relacional (AR)
é uma álgebra de expressões envolvendo
relações. A partir de uma ou mais relações da
BD tomadas como operandos, outras relações
podem ser progressivamente construídas
através de operadores especiais, sendo
resultado da consulta sobre a BD.
• Uma consulta é, portanto, uma expressão da
consulta sobre a BD.
INTRODUÇÃO À
ÁLGEBRA RELACIONAL -
RESUMO
• Alguns operadores básicos foram propostos
por CODD. Se lembrarmos de que relações são
conjuntos matemáticos (de tuplas) esses
operadores essencialmente manipulam
conjuntos e estão em quatro categorias:
OPERADORES BÁSICOS
• Operadores convencionais sobre conjuntos:
união, subtração, interseção e produto
cartesiano;
• Operadores que removem parte de uma
relação; um operador que elimina linhas
(seleção) e um operador que elimina colunas,
ou seja, atributos (projeção)
OPERADORES BÁSICOS
• Operadores que combinam linhas de duas
relações de acordo com condições booleanas
diversas (essas operações selecionam
subconjuntos do produto cartesiano das duas
relações);
• Um operador especial p (Rô) permite renomear o
esquema de uma relação, essencialmente para
permitir expressar de forma não ambígua
operações envolvendo auto-relacionamentos;
NOTAÇÃO
- Letras do final do alfabeto para denotar
relações (R, S, T etc)
- Letras do inicio do alfabeto para denotar
atributos (A, B, C etc)
- Letra grega (téta) é usada para denotar um
dos seis operadores de comparação:

UNIÃO
• : é uma relação que contém as tuplas que estão em
R, em S ou em ambas; se uma tupla está presente em R e
em S, ela só aparece uma vez na união.
• Esta operação primitiva também requer como operandos
tabelas união-compatíveis. Produz como resultado uma
tabela que contém 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 número de linhas que é no
máximo igual à soma das linhas das tabelas fornecidas
como operandos, já que as linhas que são comuns a ambas
as tabelas aparecem uma única vez no resultado.
SR
UNIÃO
Observe que A  B = B A.
INTERSECÇÃO
• :é a relação que contém as tuplas que
estão em ambas R e S.
• Esta é uma operação adicional que produz
como resultado uma tabela que contém, sem
repetições, todos os elementos que são
comuns às duas tabelas fornecidas como
operandos. As tabelas devem ser união-
compatíveis.
SR
INTERSECÇÃO
INTERSECÇÃO
• O mesmo efeito pode ser obtido fazendo-se
uma combinação de diferenças entre
conjuntos
• 𝐴 ∩ 𝐵 = A – ( A – B )
• ou com uniões e diferenças
• 𝐴 ∩ 𝐵 = (𝐴 ∩ 𝐵 ) – ( A – B ) – ( B – A ) ou ainda
• 𝐴 ∩ 𝐵 = (𝐴 ∩ 𝐵 ) – ( ( A – B ) ∩ ( B – A ) )
DIFERENÇA
• R – S :contém as tuplas que estão em R porém
não estão em S. Observe que R – S é diferente de
S – R
• É uma operação primitiva que requer como
operandos duas tabelas união-compatíveis, ou
seja, estruturalmente idênticas. O resultado é
uma tabela que possui todas as linhas que
existem na primeira tabela e não existem na
segunda.
DIFERENÇA
EXEMPLO PARA ESSAS
OPERAÇÕES
PROJEÇÃO
• Projeção: : constrói uma nova
relação a partir de R contendo apenas os
atributos . Observe que tuplas duplicadas
devem ser eliminadas ao se fazer a projeção.
Exemplo:
)(,..., RAkAjAi







5
3
)(SA
PROJEÇÃO
• Geralmente indicada na literatura por (a letra
grega pi) produz um conjunto onde há um
elemento para cada elemento do conjunto de
entrada, sendo que a estrutura dos membros do
conjunto resultante é definida nos argumentos da
operação.
• Pode ser entendida como uma operação que
filtra as colunas de uma tabela. Por operar sobre
apenas um conjunto de entrada, a projeção é
classificada como uma operação unária.

PROJEÇÃO
Ex.: NmFunc (funcionário)
Essa expressão produz um conjunto contendo
um elemento para cada funcionário, e cada
elemento contém apenas a informação
referente a NmFunc da relação funcionário
original.

PROJEÇÃO
PROJEÇÃO
• Agora estamos interessados em identificar
todos os funcionários de sexo masculino
existentes no banco de dados. É uma situação
que não podemos resolver com projeções
apenas, uma vez que deveremos descartar
elementos do conjunto inicial. Para casos
desse tipo existe uma operação relacional
chamada Seleção.
SELEÇÃO (OU
RESTRIÇÃO)
Seleção: seja uma expressão booleana C do tipo
R.A c, onde c é uma constante do tipo de A
que queremos comparar com o atributo A de
uma linha de R. Então,
c(R) é uma relação que inclui unicamente as
linhas de R para as quais C é verdadeiro.
Exemplo:


EXEMPLO DE SELEÇÃO
(letra grega sigma)







85
65
(S)6B
SELEÇÃO (OU
RESTRIÇÃO)
c(R) é uma relação que inclui unicamente as
linhas de R para as quais C é verdadeiro.
(letra grega sigma)








85
65
(S)6B

SELEÇÃO (OU
RESTRIÇÃO)
Expressões booleanas mais complexas
envolvendo “ands” ou “ors” de operandos do
tipo R.A c podem ser avaliadas através de
operações de união e interseção, mas, para
simplificar a notação, vamos admitir em C
expressões booleanas arbitrariamente
complexas.
SELEÇÃO (OU
RESTRIÇÃO)
Se quisermos, podemos compor quaisquer
operações, por exemplo:






 8
6
6(S))BσB(
SELEÇÃO (OU
RESTRIÇÃO)
Indicada por (a letra grega sigma), é uma
operação que para um conjunto inicial fornecido
como argumento, produz um subconjunto
estruturalmente idêntico, mas apenas com os
elementos do conjunto original que atendem a
uma determinada condição (também chamada
de predicado). A seleção pode ser entendida
como uma operação que filtra as linhas de uma
tabela, e é também uma operação unária, já
que opera sobre um único conjunto de dados.

EXEMPLO DE SELEÇÃO
(OU RESTRIÇÃO)
Ex.: Sexo = ‘M’ (funcionário)
Produz o conjunto dos elementos de funcionário
que atendem ao predicado [Sexo = ‘M’], ou seja,
representa um subconjunto dos funcionários
para o qual essa condição é avaliada como
verdadeira.

EXEMPLO DE SELEÇÃO
(OU RESTRIÇÃO)
SELEÇÃO (OU
RESTRIÇÃO)
• No caso de querermos descobrir o nome
completo e a data de admissão de todos os
funcionários do sexo feminino existentes na
empresa, será necessário combinar uma
projeção com uma seleção. Isso porque se
decidirmos projetar as colunas desejadas
diretamente a partir da relação funcionário,
estaremos considerando também os
elementos do sexo masculino, o que não
queremos.
SELEÇÃO (OU
RESTRIÇÃO)
• Como a projeção não permite descartar
linhas, apenas colunas, deveremos fornecer a
essa operação o subconjunto resultante de
uma filtragem (seleção) da relação de
funcionários original, como mostram as duas
figuras a seguir, que representam as relações e
as operações de duas maneiras diferentes.
SELEÇÃO (OU
RESTRIÇÃO)
SELEÇÃO (OU RESTRIÇÃO)
EXEMPLO DE SELEÇÃO
(OU RESTRIÇÃO)
Assim, a expressão que atende nossos objetivos
nesse caso é
NmFunc, DtAdm ( Sexo = ‘F’ (funcionário))
cabendo observar que devido ao aninhamento das
operações está implícito que primeiro será
executada a seleção e depois a projeção, sendo que
nesse exemplo não poderíamos inverter essa
ordem.

SELEÇÃO (OU
RESTRIÇÃO)
• Você poderia explicar porquê?
– Por esse motivo, dizemos que a álgebra relacional
é uma linguagem procedural, já que requer
alguma definição quanto à ordem em que as
operações serão realizadas. Linguagens em que
apenas mencionamos o resultado desejado, sem
fazer menção alguma à forma como isso deve ser
feito são chamadas de linguagens não-
procedurais.
SELEÇÃO (OU
RESTRIÇÃO)
• Suponha agora que precisamos obter o nome
completo, a data de admissão e o salário de
cada funcionário cadastrado.
• Para essa consulta temos um fato novo, que é
a referência a colunas de mais de uma tabela,
uma vez que o nome e a data de admissão
fazem parte da relação funcionário, enquanto
que o salário existe apenas em cargos.
SELEÇÃO (OU
RESTRIÇÃO)
• Isso é problemático, pois as duas operações
que conhecemos até o momento são unárias,
e temos necessidade de combinar os dados de
mais de uma relação. Para situações como
essa existe uma operação chamada Produto
Cartesiano.
Produto Cartesiano
• Produto Cartesiano: R x S : é uma relação obtida
concatenando-se cada linha de R com cada linha
de S, isto é, os atributos do produto cartesiano
são os atributos de R, seguidos pelos atributos de
S (se houver coincidência nos nomes de alguns
atributos de R e S, a forma conveniente de
distingui-los deve ser usada, como por exemplo
R.C e S.C). Se R possui n atributos e K linhas e S
possui m atributos e 1 linha então R x S possui n +
m atributos e k x l linhas.
Exemplo de Produto
Cartesiano























8543
6543
4343
8521
6521
4321
S.BS.AR.BR.A
SxR
Produto Cartesiano
• A notação geralmente adotada (na forma
‘conjunto1 x conjunto2’) para representar essa
operação binária indica bem a sua natureza: o
resultado do produto cartesiano de duas tabelas
é uma terceira tabela contendo todas as
combinações possíveis entre os elementos das
tabelas originais.
• Essa tabela resultante possuirá um número de
colunas que é igual à soma das quantidades de
colunas das duas tabelas iniciais, e um número de
linhas igual ao produto do número de suas linhas.
Produto Cartesiano
• Portanto, se fizermos o produto cartesiano de
uma tabela A que possua 4 colunas e 10 linhas
com uma tabela B onde existem 3 colunas e 7
linhas, a tabela resultante terá 4+3= 7 colunas
e 10*7= 70 linhas. Assim, cada linha dessa
tabela corresponderá à concatenação de uma
linha da primeira tabela com uma linha da
segunda.
Produto Cartesiano
• O produto cartesiano não é muito usado
como um fim em si mesmo, ou seja,
dificilmente estaremos interessados em
saber quais são todas as combinações
possíveis entre as linhas de duas tabelas, pois
a utilidade prática desse tipo de
conhecimento é muito discutível.
Produto Cartesiano
• Entretanto, é a única forma primitiva de que
dispomos para fundir informações de duas
tabelas heterogêneas para posterior
processamento.
• Nesse caso, tipicamente será necessário
executar uma Seleção sobre o resultado do
Produto Cartesiano, de maneira a descartar as
combinações inválidas entre as linhas das
tabelas originais.
Produto Cartesiano
Ex.: NmFunc, DtAdm, VrSalário ( funcionário.CdCargo =
cargo.CdCargo (funcionário x cargo))
• Observe que primeiro é produzido o produto
cartesiano correspondente a todas as
combinações possíveis entre funcionários e
cargos.

Produto Cartesiano
• Essa relação vai conter linhas onde um
funcionário estará associado a cargos que não
são o seu, e devemos então aplicar um filtro
(uma seleção) para gerar um subconjunto
apenas com as combinações logicamente
válidas (aquelas em que a chave estrangeira
CdCargo de funcionário tem valor igual á
chave primária CdCargo de cargo).
Produto Cartesiano
• Como temos nesse subconjunto duas colunas
com o mesmo nome (CdCargo que veio de
funcionário e CdCargo proveniente de cargo),
sempre que precisarmos mencionar uma
delas será necessário especificar exatamente a
qual das duas colunas estamos nos referindo,
senão teremos uma situação ambígua,
formalmente inaceitável.
Produto Cartesiano
• Dizemos, nesse caso, que é necessário qualificar a
coluna, e isso é feito escrevendo o nome da
relação original antes do nome da coluna,
separando-os por um ponto, ou seja, <nome-da-
relação>.<nome-da-coluna>. É por esse motivo
que escrevemos o predicado da seleção como
sendo funcionário.CdCargo = cargo.CdCargo.
Finalmente, a projeção é realizada a partir desse
subconjunto, fornecendo os dados inicialmente
desejados.
Produto Cartesiano
Produto Cartesiano
Produto Cartesiano
Produto Cartesiano
Produto Cartesiano
• Caso desejemos obter uma variação
ligeiramente diferente dessa consulta,
acrescentando a restrição de que precisamos
dos dados apenas dos funcionários do sexo
masculino, teríamos a seguinte expressão
algébrica:
Produto Cartesiano
onde o símbolo “^” presente no predicado
representa o conectivo lógico “E”. Portanto, com
apenas 3 operações relacionais básicas foi
possível extrair do banco de dados de exemplo
várias informações importantes, representativas
de uma grande parcela das consultas que um
sistema gerenciador de bancos de dados deve
processar.
Produto Cartesiano
• As consultas realizadas foram:
1. obter o nome completo de todos os funcionários;
2. identificar todos os funcionários do sexo masculino;
3. obter o nome completo e a data de admissão de todos
os funcionários do sexo feminino;
4. obter o nome completo, a data de admissão e o salário
de todos os funcionários;
5. descobrir o nome completo, a data de admissão e o
salário de todos os funcionários do sexo masculino.
JUNÇÃO
Junção : nesta operação comparamos duas
colunas do mesmo tipo de R e S, por exemplo
R.A S.B. Se a comparação der verdadeira,
selecionamos a linha correspondente do
produto cartesiano RxS. A junção é denotada
por:
R | X | S
R.A S.B



JUNÇÃO
A junção de duas relações é, portanto, um
subconjunto do seu produto cartesiano e pode
ser expressa pela identidade:
R | X | S = (R.A S.B) (R X S)
R.A S.B




JUNÇÃO
Exemplo: vamos utilizar outra relação para
exemplificar a junção . Seja a relação T com
esquema T(B,C,D) e uma instancia de T abaixo:

EXEMPLO DE JUNÇÃO
Então,
R | X | T
R.B T.D
Terá o valor:











12343
12321
.. DCBTBRA






















12343
87443
62243
12321
87421
62221
TDTCTBRBA
EXEMPLO DE JUNÇÃO
• Para isso, temos a seguinte explicação:
Produto cartesiano entre R X T
R x T =






















12343
87443
62243
12321
87421
62221
TDTCTBRBA
EXEMPLO DE JUNÇÃO
• Posteriormente, comparamos as linhas de R.B
que sejam >= a TD, tendo o resultado
apresentado.
• É uma operação que produz uma combinação
entre as linhas de uma tabela com as linhas
correspondentes de outra tabela, sendo em
princípio correspondente a uma seleção pelos
atributos de relacionamento sobre um
produto cartesiano dessas tabelas:
EXEMPLO DE JUNÇÃO
A operação de junção foi criada justamente porque esse
tipo de combinação de tabelas é de uso muito comum,
facilitando com isso a escrita de expressões.
A tabela resultante de uma junção tem todas as colunas
da primeira tabela e todas da segunda tabela.
Isso faz com que os valores dos campos utilizados como
critério para a correspondência entre as linhas apareça
duplicado, já que um vem da primeira tabela e outro da
segunda.
EXEMPLO DE JUNÇÃO
Existe uma variação da junção, chamada junção
natural, que fornece o mesmo resultado, mas
sem essa repetição de valores: uma das colunas
correspondentes aos atributos de
relacionamento é descartada.
JUNÇÃO NATURAL
Junção natural: quando é o operador de
igualdade, o resultado do produto cartesiano terá
duas colunas idênticas, R.A e S.B. Nesse caso é
conveniente projetar fora uma dessas colunas e o
resultado final é chamado de junção natural de R
com S. Se as colunas sobre as quais fizermos a
junção tiverem o mesmo nome em R e S, então se
pode simplificar a notação escrevendo apenas:
R | X | S

JUNÇÃO NATURAL
Para indicar esta operação, ficando implícitas as
colunas sobre as quais é feita a comparação.
Exemplo: a junção das tabelas R e T acima, sobre as
colunas R.B e T.B seria expressa por:
Obs: A comparação é feita sobre o produto
cartesiano.











8743
6221
DCBA
T|X|R






















12343
87443
62243
12321
87421
62221
TDTCTBRBA
RESUMO
Exercícios – Parte 1
• Com base nas tabelas Funcionário, Cargo e
Depto apresentadas neste material, elaborar
as expressões da álgebra relacional que
obtenham:
Exercícios – Parte 1
Exercícios – Parte 1
1 - Todos os funcionários do departamento ‘D1’.
2 - O nome e a matrícula de todos os funcionários do
departamento ‘D1’.
3 - A matrícula e o nome do respectivo departamento de
todos os funcionários.
Exercícios – Parte 1
1 - Todos os funcionários do departamento ‘D1’.
CdDepto = ‘D1’ (Funcionario)
2 - O nome e a matrícula de todos os
funcionários do departamento ‘D1’.
MnFunc, NrMatric ( CdDepto = ‘D1’
(FUNCIONARIO))



Exercícios – Parte 1
3 - A matrícula e o nome do respectivo
departamento de todos os funcionários.
NrMatric, NmDepto ( funcionário.CdDepto
= depto.CdDepto (funcionário x depto))
NrMatric, NmDepto ( funcionário | x |
depto)


Exercícios – Parte 1
4 - O nome dos funcionários que ganham mais de
$500.
5 - O ramal do funcionário ‘ANA SILVEIRA’.
6 - Os nomes de todos os funcionários com cargo
de ‘MECANICO’.
7 - Os nomes de todos os funcionários que
trabalham no mesmo departamento que ‘JOSE
NOGUEIRA’.
8 - Os nomes dos departamentos que possuem
tanto funcionários como funcionárias.
Exercícios – Parte 2
Considere as Relações F e D que representam os
CEs Funcionários e Dependentes, respectivamente,
com o seguinte esquema simplificado: F(fumf,
nomef) e D(numf, nomef, par), onde numf: número
do funcionário, nomef: nome do funcionário,
nomed: nome do dependnete e par: parentesco,
que pode ser um dentre: “filho”, “filha”, “esposa/o”
etc. Observe que em D, numf é a chave estrangeira
que referencia a chave primária numf de F. Abaixo é
mostrada uma possível instância dessas relações:
Exercícios – Parte 2
Vamos obter agora a junção natural F | x | D (ela
vai usar a coluna numf para junção)
Exercícios – Parte 2
Observe que a junção natural apresenta para
cada funcionário que possui dependentes, os
dados do funcionário e dos seus dependentes.
Como o funcionário 04 não possui dependentes,
ele não aparece no resultado da junção. Vamos
agora obter expressões da álgebra relacional
que respondem as seguintes consultas:
Exercícios – Parte 2
1. Quais os nomes e parentescos de todos os
dependentes?
2. Quais os funcionários(numero de) possuem
dependentes filhas?
3. Quais funcionários não possuem dependentes?
4. De os nomes dos funcionários que possuem algum
dependente.
5. Dê o nome de cada funcionário que possui uma
dependente chamada Alice
6. Quais funcionários possuem mais de um dependente?
Referência Bibliográfica
• GUIMARÃES, Célio Cardoso. FUNDAMENTOS
DE BANCOS DE DADOS: modelagem, projeto e
linguagem SQL. 1. ed. Campinas: Universidade
de Campinas. 2003.
• MUNARI, Antonio Cesar de Barros. Operações
relacionais e Álgebra Relacional,
http://www.pucrs.campus2.br/~jiani/bd/OpRe
lacional.pdf, acessada em 20/04/2009;

BD I - Aula 08 A - Algebra Relacional

  • 1.
    Rodrigo Kiyoshi Saito/ rodrigok@anchieta.br BANCO DE DADOS I
  • 2.
    Tópicos abordados • Introduçãoà Álgebra Relacional; • União, Intersecção, Diferença; • Projeção e Seleção; • Produto Cartesiano; • Junção e Junção Natural; • Exercícios • Referências Bibliográficas
  • 3.
    INTRODUÇÃO À ÁLGEBRA RELACIONAL- RESUMO • Como o nome indica, a álgebra relacional (AR) é uma álgebra de expressões envolvendo relações. A partir de uma ou mais relações da BD tomadas como operandos, outras relações podem ser progressivamente construídas através de operadores especiais, sendo resultado da consulta sobre a BD. • Uma consulta é, portanto, uma expressão da consulta sobre a BD.
  • 4.
    INTRODUÇÃO À ÁLGEBRA RELACIONAL- RESUMO • Alguns operadores básicos foram propostos por CODD. Se lembrarmos de que relações são conjuntos matemáticos (de tuplas) esses operadores essencialmente manipulam conjuntos e estão em quatro categorias:
  • 5.
    OPERADORES BÁSICOS • Operadoresconvencionais sobre conjuntos: união, subtração, interseção e produto cartesiano; • Operadores que removem parte de uma relação; um operador que elimina linhas (seleção) e um operador que elimina colunas, ou seja, atributos (projeção)
  • 6.
    OPERADORES BÁSICOS • Operadoresque combinam linhas de duas relações de acordo com condições booleanas diversas (essas operações selecionam subconjuntos do produto cartesiano das duas relações); • Um operador especial p (Rô) permite renomear o esquema de uma relação, essencialmente para permitir expressar de forma não ambígua operações envolvendo auto-relacionamentos;
  • 7.
    NOTAÇÃO - Letras dofinal do alfabeto para denotar relações (R, S, T etc) - Letras do inicio do alfabeto para denotar atributos (A, B, C etc) - Letra grega (téta) é usada para denotar um dos seis operadores de comparação: 
  • 8.
    UNIÃO • : éuma relação que contém as tuplas que estão em R, em S ou em ambas; se uma tupla está presente em R e em S, ela só aparece uma vez na união. • Esta operação primitiva também requer como operandos tabelas união-compatíveis. Produz como resultado uma tabela que contém 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 número de linhas que é no máximo igual à soma das linhas das tabelas fornecidas como operandos, já que as linhas que são comuns a ambas as tabelas aparecem uma única vez no resultado. SR
  • 9.
    UNIÃO Observe que A B = B A.
  • 10.
    INTERSECÇÃO • :é arelação que contém as tuplas que estão em ambas R e S. • Esta é uma operação adicional que produz como resultado uma tabela que contém, sem repetições, todos os elementos que são comuns às duas tabelas fornecidas como operandos. As tabelas devem ser união- compatíveis. SR
  • 11.
  • 12.
    INTERSECÇÃO • O mesmoefeito pode ser obtido fazendo-se uma combinação de diferenças entre conjuntos • 𝐴 ∩ 𝐵 = A – ( A – B ) • ou com uniões e diferenças • 𝐴 ∩ 𝐵 = (𝐴 ∩ 𝐵 ) – ( A – B ) – ( B – A ) ou ainda • 𝐴 ∩ 𝐵 = (𝐴 ∩ 𝐵 ) – ( ( A – B ) ∩ ( B – A ) )
  • 13.
    DIFERENÇA • R –S :contém as tuplas que estão em R porém não estão em S. Observe que R – S é diferente de S – R • É uma operação primitiva que requer como operandos duas tabelas união-compatíveis, ou seja, estruturalmente idênticas. O resultado é uma tabela que possui todas as linhas que existem na primeira tabela e não existem na segunda.
  • 14.
  • 15.
  • 16.
    PROJEÇÃO • Projeção: :constrói uma nova relação a partir de R contendo apenas os atributos . Observe que tuplas duplicadas devem ser eliminadas ao se fazer a projeção. Exemplo: )(,..., RAkAjAi        5 3 )(SA
  • 17.
    PROJEÇÃO • Geralmente indicadana literatura por (a letra grega pi) produz um conjunto onde há um elemento para cada elemento do conjunto de entrada, sendo que a estrutura dos membros do conjunto resultante é definida nos argumentos da operação. • Pode ser entendida como uma operação que filtra as colunas de uma tabela. Por operar sobre apenas um conjunto de entrada, a projeção é classificada como uma operação unária. 
  • 18.
    PROJEÇÃO Ex.: NmFunc (funcionário) Essaexpressão produz um conjunto contendo um elemento para cada funcionário, e cada elemento contém apenas a informação referente a NmFunc da relação funcionário original. 
  • 19.
  • 20.
    PROJEÇÃO • Agora estamosinteressados em identificar todos os funcionários de sexo masculino existentes no banco de dados. É uma situação que não podemos resolver com projeções apenas, uma vez que deveremos descartar elementos do conjunto inicial. Para casos desse tipo existe uma operação relacional chamada Seleção.
  • 21.
    SELEÇÃO (OU RESTRIÇÃO) Seleção: sejauma expressão booleana C do tipo R.A c, onde c é uma constante do tipo de A que queremos comparar com o atributo A de uma linha de R. Então, c(R) é uma relação que inclui unicamente as linhas de R para as quais C é verdadeiro. Exemplo:  
  • 22.
    EXEMPLO DE SELEÇÃO (letragrega sigma)        85 65 (S)6B
  • 23.
    SELEÇÃO (OU RESTRIÇÃO) c(R) éuma relação que inclui unicamente as linhas de R para as quais C é verdadeiro. (letra grega sigma)         85 65 (S)6B 
  • 24.
    SELEÇÃO (OU RESTRIÇÃO) Expressões booleanasmais complexas envolvendo “ands” ou “ors” de operandos do tipo R.A c podem ser avaliadas através de operações de união e interseção, mas, para simplificar a notação, vamos admitir em C expressões booleanas arbitrariamente complexas.
  • 25.
    SELEÇÃO (OU RESTRIÇÃO) Se quisermos,podemos compor quaisquer operações, por exemplo:        8 6 6(S))BσB(
  • 26.
    SELEÇÃO (OU RESTRIÇÃO) Indicada por(a letra grega sigma), é uma operação que para um conjunto inicial fornecido como argumento, produz um subconjunto estruturalmente idêntico, mas apenas com os elementos do conjunto original que atendem a uma determinada condição (também chamada de predicado). A seleção pode ser entendida como uma operação que filtra as linhas de uma tabela, e é também uma operação unária, já que opera sobre um único conjunto de dados. 
  • 27.
    EXEMPLO DE SELEÇÃO (OURESTRIÇÃO) Ex.: Sexo = ‘M’ (funcionário) Produz o conjunto dos elementos de funcionário que atendem ao predicado [Sexo = ‘M’], ou seja, representa um subconjunto dos funcionários para o qual essa condição é avaliada como verdadeira. 
  • 28.
  • 29.
    SELEÇÃO (OU RESTRIÇÃO) • Nocaso de querermos descobrir o nome completo e a data de admissão de todos os funcionários do sexo feminino existentes na empresa, será necessário combinar uma projeção com uma seleção. Isso porque se decidirmos projetar as colunas desejadas diretamente a partir da relação funcionário, estaremos considerando também os elementos do sexo masculino, o que não queremos.
  • 30.
    SELEÇÃO (OU RESTRIÇÃO) • Comoa projeção não permite descartar linhas, apenas colunas, deveremos fornecer a essa operação o subconjunto resultante de uma filtragem (seleção) da relação de funcionários original, como mostram as duas figuras a seguir, que representam as relações e as operações de duas maneiras diferentes.
  • 31.
  • 32.
  • 33.
    EXEMPLO DE SELEÇÃO (OURESTRIÇÃO) Assim, a expressão que atende nossos objetivos nesse caso é NmFunc, DtAdm ( Sexo = ‘F’ (funcionário)) cabendo observar que devido ao aninhamento das operações está implícito que primeiro será executada a seleção e depois a projeção, sendo que nesse exemplo não poderíamos inverter essa ordem. 
  • 34.
    SELEÇÃO (OU RESTRIÇÃO) • Vocêpoderia explicar porquê? – Por esse motivo, dizemos que a álgebra relacional é uma linguagem procedural, já que requer alguma definição quanto à ordem em que as operações serão realizadas. Linguagens em que apenas mencionamos o resultado desejado, sem fazer menção alguma à forma como isso deve ser feito são chamadas de linguagens não- procedurais.
  • 35.
    SELEÇÃO (OU RESTRIÇÃO) • Suponhaagora que precisamos obter o nome completo, a data de admissão e o salário de cada funcionário cadastrado. • Para essa consulta temos um fato novo, que é a referência a colunas de mais de uma tabela, uma vez que o nome e a data de admissão fazem parte da relação funcionário, enquanto que o salário existe apenas em cargos.
  • 36.
    SELEÇÃO (OU RESTRIÇÃO) • Issoé problemático, pois as duas operações que conhecemos até o momento são unárias, e temos necessidade de combinar os dados de mais de uma relação. Para situações como essa existe uma operação chamada Produto Cartesiano.
  • 37.
    Produto Cartesiano • ProdutoCartesiano: R x S : é uma relação obtida concatenando-se cada linha de R com cada linha de S, isto é, os atributos do produto cartesiano são os atributos de R, seguidos pelos atributos de S (se houver coincidência nos nomes de alguns atributos de R e S, a forma conveniente de distingui-los deve ser usada, como por exemplo R.C e S.C). Se R possui n atributos e K linhas e S possui m atributos e 1 linha então R x S possui n + m atributos e k x l linhas.
  • 38.
  • 39.
    Produto Cartesiano • Anotação geralmente adotada (na forma ‘conjunto1 x conjunto2’) para representar essa operação binária indica bem a sua natureza: o resultado do produto cartesiano de duas tabelas é uma terceira tabela contendo todas as combinações possíveis entre os elementos das tabelas originais. • Essa tabela resultante possuirá um número de colunas que é igual à soma das quantidades de colunas das duas tabelas iniciais, e um número de linhas igual ao produto do número de suas linhas.
  • 40.
    Produto Cartesiano • Portanto,se fizermos o produto cartesiano de uma tabela A que possua 4 colunas e 10 linhas com uma tabela B onde existem 3 colunas e 7 linhas, a tabela resultante terá 4+3= 7 colunas e 10*7= 70 linhas. Assim, cada linha dessa tabela corresponderá à concatenação de uma linha da primeira tabela com uma linha da segunda.
  • 41.
    Produto Cartesiano • Oproduto cartesiano não é muito usado como um fim em si mesmo, ou seja, dificilmente estaremos interessados em saber quais são todas as combinações possíveis entre as linhas de duas tabelas, pois a utilidade prática desse tipo de conhecimento é muito discutível.
  • 42.
    Produto Cartesiano • Entretanto,é a única forma primitiva de que dispomos para fundir informações de duas tabelas heterogêneas para posterior processamento. • Nesse caso, tipicamente será necessário executar uma Seleção sobre o resultado do Produto Cartesiano, de maneira a descartar as combinações inválidas entre as linhas das tabelas originais.
  • 43.
    Produto Cartesiano Ex.: NmFunc,DtAdm, VrSalário ( funcionário.CdCargo = cargo.CdCargo (funcionário x cargo)) • Observe que primeiro é produzido o produto cartesiano correspondente a todas as combinações possíveis entre funcionários e cargos. 
  • 44.
    Produto Cartesiano • Essarelação vai conter linhas onde um funcionário estará associado a cargos que não são o seu, e devemos então aplicar um filtro (uma seleção) para gerar um subconjunto apenas com as combinações logicamente válidas (aquelas em que a chave estrangeira CdCargo de funcionário tem valor igual á chave primária CdCargo de cargo).
  • 45.
    Produto Cartesiano • Comotemos nesse subconjunto duas colunas com o mesmo nome (CdCargo que veio de funcionário e CdCargo proveniente de cargo), sempre que precisarmos mencionar uma delas será necessário especificar exatamente a qual das duas colunas estamos nos referindo, senão teremos uma situação ambígua, formalmente inaceitável.
  • 46.
    Produto Cartesiano • Dizemos,nesse caso, que é necessário qualificar a coluna, e isso é feito escrevendo o nome da relação original antes do nome da coluna, separando-os por um ponto, ou seja, <nome-da- relação>.<nome-da-coluna>. É por esse motivo que escrevemos o predicado da seleção como sendo funcionário.CdCargo = cargo.CdCargo. Finalmente, a projeção é realizada a partir desse subconjunto, fornecendo os dados inicialmente desejados.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
    Produto Cartesiano • Casodesejemos obter uma variação ligeiramente diferente dessa consulta, acrescentando a restrição de que precisamos dos dados apenas dos funcionários do sexo masculino, teríamos a seguinte expressão algébrica:
  • 52.
    Produto Cartesiano onde osímbolo “^” presente no predicado representa o conectivo lógico “E”. Portanto, com apenas 3 operações relacionais básicas foi possível extrair do banco de dados de exemplo várias informações importantes, representativas de uma grande parcela das consultas que um sistema gerenciador de bancos de dados deve processar.
  • 53.
    Produto Cartesiano • Asconsultas realizadas foram: 1. obter o nome completo de todos os funcionários; 2. identificar todos os funcionários do sexo masculino; 3. obter o nome completo e a data de admissão de todos os funcionários do sexo feminino; 4. obter o nome completo, a data de admissão e o salário de todos os funcionários; 5. descobrir o nome completo, a data de admissão e o salário de todos os funcionários do sexo masculino.
  • 54.
    JUNÇÃO Junção : nestaoperação comparamos duas colunas do mesmo tipo de R e S, por exemplo R.A S.B. Se a comparação der verdadeira, selecionamos a linha correspondente do produto cartesiano RxS. A junção é denotada por: R | X | S R.A S.B   
  • 55.
    JUNÇÃO A junção deduas relações é, portanto, um subconjunto do seu produto cartesiano e pode ser expressa pela identidade: R | X | S = (R.A S.B) (R X S) R.A S.B    
  • 56.
    JUNÇÃO Exemplo: vamos utilizaroutra relação para exemplificar a junção . Seja a relação T com esquema T(B,C,D) e uma instancia de T abaixo: 
  • 57.
    EXEMPLO DE JUNÇÃO Então, R| X | T R.B T.D Terá o valor:            12343 12321 .. DCBTBRA                       12343 87443 62243 12321 87421 62221 TDTCTBRBA
  • 58.
    EXEMPLO DE JUNÇÃO •Para isso, temos a seguinte explicação: Produto cartesiano entre R X T R x T =                       12343 87443 62243 12321 87421 62221 TDTCTBRBA
  • 59.
    EXEMPLO DE JUNÇÃO •Posteriormente, comparamos as linhas de R.B que sejam >= a TD, tendo o resultado apresentado. • É uma operação que produz uma combinação entre as linhas de uma tabela com as linhas correspondentes de outra tabela, sendo em princípio correspondente a uma seleção pelos atributos de relacionamento sobre um produto cartesiano dessas tabelas:
  • 60.
    EXEMPLO DE JUNÇÃO Aoperação de junção foi criada justamente porque esse tipo de combinação de tabelas é de uso muito comum, facilitando com isso a escrita de expressões. A tabela resultante de uma junção tem todas as colunas da primeira tabela e todas da segunda tabela. Isso faz com que os valores dos campos utilizados como critério para a correspondência entre as linhas apareça duplicado, já que um vem da primeira tabela e outro da segunda.
  • 61.
    EXEMPLO DE JUNÇÃO Existeuma variação da junção, chamada junção natural, que fornece o mesmo resultado, mas sem essa repetição de valores: uma das colunas correspondentes aos atributos de relacionamento é descartada.
  • 62.
    JUNÇÃO NATURAL Junção natural:quando é o operador de igualdade, o resultado do produto cartesiano terá duas colunas idênticas, R.A e S.B. Nesse caso é conveniente projetar fora uma dessas colunas e o resultado final é chamado de junção natural de R com S. Se as colunas sobre as quais fizermos a junção tiverem o mesmo nome em R e S, então se pode simplificar a notação escrevendo apenas: R | X | S 
  • 63.
    JUNÇÃO NATURAL Para indicaresta operação, ficando implícitas as colunas sobre as quais é feita a comparação. Exemplo: a junção das tabelas R e T acima, sobre as colunas R.B e T.B seria expressa por: Obs: A comparação é feita sobre o produto cartesiano.            8743 6221 DCBA T|X|R                       12343 87443 62243 12321 87421 62221 TDTCTBRBA
  • 64.
  • 65.
    Exercícios – Parte1 • Com base nas tabelas Funcionário, Cargo e Depto apresentadas neste material, elaborar as expressões da álgebra relacional que obtenham:
  • 66.
  • 67.
    Exercícios – Parte1 1 - Todos os funcionários do departamento ‘D1’. 2 - O nome e a matrícula de todos os funcionários do departamento ‘D1’. 3 - A matrícula e o nome do respectivo departamento de todos os funcionários.
  • 68.
    Exercícios – Parte1 1 - Todos os funcionários do departamento ‘D1’. CdDepto = ‘D1’ (Funcionario) 2 - O nome e a matrícula de todos os funcionários do departamento ‘D1’. MnFunc, NrMatric ( CdDepto = ‘D1’ (FUNCIONARIO))   
  • 69.
    Exercícios – Parte1 3 - A matrícula e o nome do respectivo departamento de todos os funcionários. NrMatric, NmDepto ( funcionário.CdDepto = depto.CdDepto (funcionário x depto)) NrMatric, NmDepto ( funcionário | x | depto)  
  • 70.
    Exercícios – Parte1 4 - O nome dos funcionários que ganham mais de $500. 5 - O ramal do funcionário ‘ANA SILVEIRA’. 6 - Os nomes de todos os funcionários com cargo de ‘MECANICO’. 7 - Os nomes de todos os funcionários que trabalham no mesmo departamento que ‘JOSE NOGUEIRA’. 8 - Os nomes dos departamentos que possuem tanto funcionários como funcionárias.
  • 71.
    Exercícios – Parte2 Considere as Relações F e D que representam os CEs Funcionários e Dependentes, respectivamente, com o seguinte esquema simplificado: F(fumf, nomef) e D(numf, nomef, par), onde numf: número do funcionário, nomef: nome do funcionário, nomed: nome do dependnete e par: parentesco, que pode ser um dentre: “filho”, “filha”, “esposa/o” etc. Observe que em D, numf é a chave estrangeira que referencia a chave primária numf de F. Abaixo é mostrada uma possível instância dessas relações:
  • 72.
    Exercícios – Parte2 Vamos obter agora a junção natural F | x | D (ela vai usar a coluna numf para junção)
  • 73.
    Exercícios – Parte2 Observe que a junção natural apresenta para cada funcionário que possui dependentes, os dados do funcionário e dos seus dependentes. Como o funcionário 04 não possui dependentes, ele não aparece no resultado da junção. Vamos agora obter expressões da álgebra relacional que respondem as seguintes consultas:
  • 74.
    Exercícios – Parte2 1. Quais os nomes e parentescos de todos os dependentes? 2. Quais os funcionários(numero de) possuem dependentes filhas? 3. Quais funcionários não possuem dependentes? 4. De os nomes dos funcionários que possuem algum dependente. 5. Dê o nome de cada funcionário que possui uma dependente chamada Alice 6. Quais funcionários possuem mais de um dependente?
  • 75.
    Referência Bibliográfica • GUIMARÃES,Célio Cardoso. FUNDAMENTOS DE BANCOS DE DADOS: modelagem, projeto e linguagem SQL. 1. ed. Campinas: Universidade de Campinas. 2003. • MUNARI, Antonio Cesar de Barros. Operações relacionais e Álgebra Relacional, http://www.pucrs.campus2.br/~jiani/bd/OpRe lacional.pdf, acessada em 20/04/2009;