Você está na página 1de 43

Banco de Dados

Álgebra Relacional

Prof. M.Sc. Emanoel Claudino


Álgebra Relacional

Prof. M.Sc. Emanoel Claudino


Álgebra Relacional

 Linguagens de Consulta: linguagem por meio da qual os


usuários obtêm informações do banco de dados. Podem ser:
– Procedurais: o usuário descreve uma seqüência de operações
para obter o resultado desejado; Ex: java, pl-sql, transact-sql, c
etc.
– Não procedurais: o usuário descreve a informação desejada, sem
instruir como esta será obtida. Ex: sql, oql etc.

Prof. M.Sc. Emanoel Claudino


Álgebra Relacional

 Álgebra Relacional: linguagem de consulta que consiste em


um conjunto de operações, tendo como entrada uma ou duas
relações e produzindo como resultado uma nova relação.
Operações mais importantes:
– Seleção
– Projeção
– União
– Interseção
– Subtração
– Produto Cartesiano
– Junção
– Divisão

Prof. M.Sc. Emanoel Claudino


Álgebra Relacional

 Operações primárias: operam sobre uma


única relação: seleção, projeção.

 Operações binárias: operam sobre duas


relações: união, subtração, produto
cartesiano, junção, divisão.

Prof. M.Sc. Emanoel Claudino


Operação de Seleção

 Seleciona as tuplas que satisfaçam um determinado predicado.


A letra sigma representa a seleção, o predicado aparece
subscrito a sigma, e a relação utilizada é colocada entre
parênteses.
 Ex.:
seleciona as tuplas da relação conta cuja agência é igual a “SAL-1”.

podem ser usados comparações do tipo


e os conectivos

Prof. M.Sc. Emanoel Claudino


Operação de Projeção

Prof. M.Sc. Emanoel Claudino


Operação de Projeção

 Denotada pela letra grega pi (p), esta operação retorna a


relação com somente os atributos selecionados, eliminando as
linhas em duplicidade. Os atributos aparecem ao lado de pi,
subscrito, e a relação aparece entre parênteses.
 Ex.:

Prof. M.Sc. Emanoel Claudino


Operações de Seleção e Projeção

 Pode-se unir operações desde que elas


tratem de relações.

Prof. M.Sc. Emanoel Claudino


Operação de União entre conjuntos

 Considere a seguinte consulta: selecionar todos os nomes de


clientes que tenham um empréstimo, uma conta ou ambos.
Deve-se utilizar as relações “depositante” e “devedor”.

Prof. M.Sc. Emanoel Claudino


Operação de União entre conjuntos

 Considere a seguinte consulta: selecionar todos os nomes de


clientes que tenham um empréstimo, uma conta ou ambos.
Deve-se utilizar as relações “depositante” e “devedor”.

Prof. M.Sc. Emanoel Claudino


Operação de União entre conjuntos

 Uma operação UNION entre duas relações


“x” e “y” só é possível se:
– As relações “x” e “y” têm o mesmo número de
atributos;
– Os domínios dos i-ésimo atributo de “x” e o i-
ésimo atributo de “y” devem ser os mesmos para
todo “i”.

Prof. M.Sc. Emanoel Claudino


Operação de Diferença entre conjuntos

 sendo “x” e “y” duas relações, “x-y” tem como resultado o


conjunto de tuplas que estão na relação “x”, mas não
encontram-se na relação “y”.
 Ex: selecionar todos os clientes que tem conta mas não tem
empréstimo.

Prof. M.Sc. Emanoel Claudino


Operação de Interseção entre
conjuntos

 Captura todas as tuplas que encontram-se em uma relação “x”,


e que também encontram-se na relação “y”.
 Ex.: Selecionar os nomes de clientes que possuem uma conta
e um empréstimo.

Prof. M.Sc. Emanoel Claudino


Operação de Interseção entre
conjuntos

Prof. M.Sc. Emanoel Claudino


Operação de Produto Cartesiano

 Permite combinar informações de duas relações quaisquer.


Representado por “A x B”.
 Ex: Qual o produto cartesiano entre as relações devedor e
emprestimo.
(devedor)x(emprestimo)

Prof. M.Sc. Emanoel Claudino


Operação de Produto Cartesiano

 Permite combinar informações de duas relações quaisquer.


Representado por “A x B”.
 Ex: Qual o produto cartesiano entre as relações devedor e
emprestimo.
(devedor)x(emprestimo) = (nome_cliente, num_emprestimo, nome_agencia,
num_emprestimo, total)

Obs: Para evitar o problema da duplicidade de nomes de atributos insere-se o


nome da relação antes do atributo:
(nome_cliente, devedor.num_emprestimo, nome_agencia,
emprestimo.num_emprestimo, total)

Prof. M.Sc. Emanoel Claudino


Operação de Produto Cartesiano

 Quantas e quais tuplas aparecerão na relação (devedor x


emprestimo) ?

 Se a relação (devedor) possui “n” tuplas e a relação


empréstimo tem “m” tuplas, então o produto cartesiano
(devedor x empréstimo) tem n*m tuplas.

Prof. M.Sc. Emanoel Claudino


Operação de Produto Cartesiano

Prof. M.Sc. Emanoel Claudino


Operação de Junção

 O Produto Cartesiano cria tuplas com a


combinação dos atributos de duas relações.

 Podemos fazer Seleção apenas das tuplas


relacionadas entre as duas relações

Prof. M.Sc. Emanoel Claudino


Operação de Junção

 Em virtude do fato desta seqüência, Produto


Cartesiano seguido por Seleção ser bastante
usada para identificar e selecionar tuplas
relacionadas entre duas relações.

 Uma operação especial chamada JUNÇÃO


(JOIN) foi criada para especificar esta seqüência
como uma única operação.

Prof. M.Sc. Emanoel Claudino


Operação de Junção

 A junção (join) é uma operação binária que


permite combinar Seleções e um Produto
Cartesiano em uma só operação.

 Ex: Encontrar todos os nomes de clientes que


tenham um empréstimo no banco, bem como o
total emprestado e o número do empréstimo.
– Responder utilizando apenas as operações
fundamentais

Prof. M.Sc. Emanoel Claudino


Álgebra Relacional

Prof. M.Sc. Emanoel Claudino


Operação de Junção

 Utilizando apenas as operações fundamentais,


poderia ser resolvido assim:

Prof. M.Sc. Emanoel Claudino


Operação de Junção

 No entanto, é possível simplificar esta operação


utilizando o símbolo da junção:

 A junção natural forma um produto cartesiano


das duas relações, e já executa uma seleção,
fazendo a equivalência dos atributos que
aparecem em ambos os esquemas da relação,
e por último, remove os atributos em
duplicidade.

Prof. M.Sc. Emanoel Claudino


Operação de Junção

 Resposta utilizando a operação de Junção.

Prof. M.Sc. Emanoel Claudino


Operação de Junção

 EquiJunção
– Junção em que o único operador de comparação utilizado
for o “=”
 Junção Natural
– Exige que os dois atributos de Junção tenham o mesmo
nome em ambas as relações.
– Torna o segundo atributo da condição de junção supérfluo.

 Estas Junções são chamadas também de Junções


Internas.

Prof. M.Sc. Emanoel Claudino


Operação de Junção

 Sendo R e S dois esquemas de relação, ou


seja, uma lista de atributos r(R ) e s(S) duas
relações, a junção natural de r e s (r s)é
uma relação formalmente definida assim:

Prof. M.Sc. Emanoel Claudino


Operação de Junção

 Propriedade:
– A junção é associativa, portanto:

– Se r(R) e s(S) são relações sem atributos


comuns, então:

Prof. M.Sc. Emanoel Claudino


Operação de Junção Externa

 Outer Join

 Extensão da operação de junção para


resolver informações omitidas.

Prof. M.Sc. Emanoel Claudino


Operação de Junção Externa

 Ex.: dadas as relações a


seguir com os seguintes
esquemas:
 Descobrir a rua, cidade,
agência e salário de todos
os empregados.

Prof. M.Sc. Emanoel Claudino


Operação de Junção Externa

 Alternativa natural é fazer uma projeção com uma


junção natural:

Prof. M.Sc. Emanoel Claudino


Operação de Junção Externa

 Problema: os dados de rua e cidade do empregado


Pedro foram perdidos, bem como os dados de
agência e salário foram perdidos da empregada
Flávia.

 Solução: utilizar as operações de junções externas


para evitar perda de informações

Prof. M.Sc. Emanoel Claudino


Operação de Junção Externa

 Junção externa a esquerda


 Junção externa a direita
 Junção externa total

Prof. M.Sc. Emanoel Claudino


Junção externa a esquerda

A junção à esquerda pega todas as tuplas da


relação à esquerda que não encontraram par entre
as tuplas da relação à direita, preenchendo com
“nulo” os valores não encontrados. Estas tuplas são
adicionadas ao resultado da junção natural.
Prof. M.Sc. Emanoel Claudino
Junção externa a direita

A junção à direita pega todas as tuplas da relação à


direita que não encontraram par entre as tuplas da
relação à esquerda, preenchendo com “nulo” os
valores não encontrados. Estas tuplas são
adicionadas ao resultado da junção natural.
Prof. M.Sc. Emanoel Claudino
Junção externa total

A junção externa total faz ambas operações:


Junção Externa a Esquerda e Junção Externa a
Direita.

Prof. M.Sc. Emanoel Claudino


Operação de Divisão

 A divisão de duas relações R / S, onde os atributos


de S estão contidos nos atributos de R, A(R) A(S),
resulta na relação T, em que 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 operação é utilizada nas consultas em que se


emprega a frase “para todos”;

Prof. M.Sc. Emanoel Claudino


Operação de Divisão

Prof. M.Sc. Emanoel Claudino


Operação de Divisão

 Ex.: encontrar todos os clientes que tenham conta


em todas as agências localizadas em São Leopoldo.

Prof. M.Sc. Emanoel Claudino


Operação de Divisão

Prof. M.Sc. Emanoel Claudino


Bibliografia

 C. J. Date. “Introdução a Sistemas de Banco de


Dados”. Ed. Campus

 R. Elmasri & S. B. Navathe. “Sistemas de Banco de


Dados”. Ed Pearson

Prof. M.Sc. Emanoel Claudino


Outras Operações

 Renomear
 Atribuição
 Projeção Generalizada
 Clausura Recursiva
 Exclusão
 Inserção
 Atualização

Prof. M.Sc. Emanoel Claudino