Buscar

Algebra e Calculo Relacional Mauricio Escarpinati

Prévia do material em texto

GSI016 - Bancos de Dados I
Prof. Mauricio Cunha Escarpinati
Algebra Relacional
e
Operações Relacionais
 Compreendendo álgebra relacional é mais fácil apreender SQL;
 SQL incorpora cada vez mais conceitos de álgebra;
 Algoritmos de otimização de consulta definidos sobre álgebra 
(possível uso internamente no SGBD)
 Álgebra desenvolvida para descrever operações sobre 
uma base de dados relacional
 Os objetos sobre os quais a álgebra opera são tabelas
 Uma operação possui como operandos e como resultado 
tabelas
 Porque aprender:
Algebra Relacional
Operadores originários da teoria de conjuntos: 
 União (union) : 
 Intersecção (intersect): 
 Diferença (minus): -
Operadores específicos da álgebra relacional:
 Seleção (select): 
 Projeção (project): 
 Junção (join): | |
 Renomeação (rename): 
 Divisão: ÷
Operadores da Algebra Relacional
 O resultado da seleção tem colunas com os mesmos nomes e 
domínios da tabela de entrada.
O resultado é uma tabela que contém as linhas que 
obedecem a um determinado critério.
Sintaxe:
onde <tabela> é o nome de uma tabela ou uma expressão 
de álgebra relacional que resulta em uma tabela e 
<critério de seleção> é uma expressão booleana que
envolve literais e valores de atributos da tabela
Operação de Seleção ( )
<critério de seleção> (< tabela>)
BD exemplo 
Peça 
CodPeça NomePeça CorPeça PesoPeça CidadePeça 
P1 Eixo Cinza 10 Porto Alegre 
P2 Rolamento Preto 16 Santa Maria 
P3 Mancal Verde 30 Uruguaiana 
 
Embarq 
CodPeça CodFornec QtidEmbarq 
P1 F1 300 
P1 F2 400 
P1 F3 200 
P2 F1 300 
P2 F4 350 
 
Fornec 
CodFornec NomeFornec StatusFornec CidadeFornec 
F1 Silva 5 São Paulo 
F2 Souza 10 Rio de Janeiro 
F3 Alvares 5 São Paulo 
F4 Tavares 8 Rio de Janeiro 
 
 O resultado da seleção tem colunas com os mesmos 
nomes e domínios da tabela de entrada.
Exemplo de Seleção ( )
codPeça = ‘P1’ (Peça)
Resulta em uma tabela que contém todos os dados da peça de código P1.
 
CodPeça NomePeça CorPeça PesoPeça CidadePeça 
P1 Eixo Cinza 10 Porto Alegre 
 
 Ex.:Mostre os dados de todas os fornecedores que tenham status 
maior que 5 e que sejam do Rio de Janeiro.
Exemplo de Seleção ( )
(StatusFornec > 5 and CidadeFornec = ‘Rio de Janeiro’ (Fornec))
Fornec 
CodFornec NomeFornec StatusFornec CidadeFornec 
F1 Silva 5 São Paulo 
F2 Souza 10 Rio de Janeiro 
F3 Alvares 5 São Paulo 
F4 Tavares 8 Rio de Janeiro 
 
Fornec 
CodFornec NomeFornec StatusFornec CidadeFornec 
F2 Souza 10 Rio de Janeiro 
F4 Tavares 8 Rio de Janeiro 
 
Tabela 
Resultante
 A Projeção tem como operando uma tabela. O resultado é uma 
tabela que contém apenas as colunas selecionadas.
 Sintaxe:
Operação de Projeção ( )
<lista de colunas> (<tabela>)
Ex.: Apresente os códigos e os nomes de todas as peças:
CodPeça, NomePeça (Peça)
 
CodPeça NomePeça 
P1 Eixo 
P2 Rolamento 
P3 Mancal 
 
Tabela 
Resultante
A Projeção pode resultar também na eliminação de linhas, caso 
a(s) coluna(s) que são parte da chave forem eliminadas. 
 Se uma coluna cujos valores distinguem diferentes linhas é 
eliminada, surgem linhas duplicadas na tabela, que devem 
ser eliminadas.
 Exemplo: CidadeFornec (Fornec)
Resulta em uma tabela que contém todas as cidades em que 
há fornecedores. Note- se que se houver múltiplos 
fornecedores na mesma cidade, as diferentes linhas são 
eliminadas. 
CidadeFornec
São Paulo
Rio de Janeiro
Operação de Projeção ( )
Tabela 
Resultante
Operadores diferentes podem ser aninhados
Ex.: Mostre o código de fornecedor e quantidade 
embarcada para cada embarque da peça de código P1.
CodFornec, QtidEmbarq 
(CodPeça = ‘P1’ (Embarq) )
Aninhamento de Operadores
CodFornec QtidEmbarq 
F1 300 
F2 400 
F3 200 
 
Tabela 
Resultante
A álgebra relacional empresta da teoria de conjuntos quatro
operadores: União, Intersecção, Diferença e Produto Cartesiano
Sintaxe da União: <tabela> 1 <tabela> 2
Sintaxe da Intersecção: <tabela> 1 <tabela> 2
Sintaxe da Diferença: <tabela> 1 – <tabela> 2
Nos três casos, a operação possui duas tabelas como operando.E as
tabelas devem ser compatíveis:
possuir o mesmo número de colunas; 
o mesmo domínio para cada posição da lista de atributos;
quando os nomes das colunas forem diferentes, adota- se os nomes 
das colunas da primeira tabela.
Operações da teoria de conjuntos 
Dom(nome) = varchar(30)
Dom(idade) = int
Dom(curso) = varchar(5)
Dom(depto) = varchar(5)
Aluno é compatível com Professor,
mas não é com Funcionario.
Ex: 
Aluno = { nome, idade, curso} 
Professor = { nome, idade, depto.} 
Funcionario = { nome, depto, idade} 
Operação de União
Aluno = {nome, idade, curso}
{Zeca, 25, comput.
Zico, 21, eletr.
Juca, 19, odonto.
Tuca, 19, comput.}
Professor = {nome, idade, depto.}
{Ari, 35, comput.
Wilma, 32, eletr.
Zeca, 25, comput.}
Aluno Professor = {nome, idade, curso}
{ Zeca, 25, comput.
Zico, 21, eletr.
Juca, 19, odonto.
Tuca, 19, comput.
Ari, 35, comput.
Wilma, 32, eletr. }
Apresente uma relação com todos os alunos e também com 
todos os professores:
Operação de União
Tabela 
Resultante
a operação de UNIÃO elimina duplicatas, mas existem SGBDs (ex.:INGRES) 
que permitem que o usuário determine se tuplas duplicadas devem ser 
eliminadas do resultado ou não.
Aluno = {nome, idade, curso}
{Zeca, 25, comput.
Zico, 21, eletr.
Juca, 19, odonto.
Tuca, 19, comput.}
Professor = {nome, idade, depto.}
{Ari, 35, comput.
Wilma, 32, eletr.
Zeca, 25, comput.}
Aluno - Professor = {nome, idade, curso}
{ Zico, 21, eletr.
Juca, 19, odonto.
Tuca, 19, comput.}
Note-se que a DIFERENÇA não é comutativa !
Professor - Aluno = {nome, idade, depto.}
{Ari, 35, comput.
Wilma, 32, eletr.}
Operação de Diferença
Apresente uma relação de todos os alunos que não são
professores
Aluno = {nome, idade, curso}
{Zeca, 25, comput.
Zico, 21, eletr.
Juca, 19, odonto.
Tuca, 19, comput.}
Professor = {nome, idade, depto.}
{Ari, 35, comput.
Wilma, 32, eletr.
Zeca, 25, comput.}
Aluno Professor = {nome, idade, curso}
{ Zeca, 25, comput}
Operação de Intersecção
Apresente uma relação de todos os alunos que são professores
há operadores de álgebra que são deriváveis de outros. A operação de 
intersecção é derivável de união e diferença:
A B = A – (A – B)
Operadores derivados
Ex.: Obtenha os códigos de todos os fornecedores que tem embarques 
e que tem status maior que 5.
Operação de Intersecção
CodFornec (Embarq)
CodFornec ( (StatusFornec > 5 (Fornec) )
CodFornec
F2
F4
Tabela 
Resultante
Sintaxe: 
<tabela1> X <tabela 2> 
O produto cartesiano possui como operadores duas tabela.
O resultado é uma tabela cuja linhas são a combinação das linhas das 
tabelas <tabela1> e <tabela 2> tomando-se uma linha da <tabela1> e 
concatenando-a com uma linha da < tabela 2> 
Total de colunas do produto cartesiano: 
nº colunas da primeira tabela + nº de colunas da segunda tabela
6 + 3 = 9 colunas
Nº de linhas do produto cartesiano: 
Nº de linhas da primeira tabela x nº de linhas da segunda tabela. 
500 x 600 = 30.000 linhas
Operação Produto Cartesiano
Embarq X Peça
Operação de Produto Cartesiano
Normalmente o produto cartesiano é combinado com uma seleção que envolve 
as diversas tabelas multiplicadas.
NomePeça
( Embarq. CodPeça= Peça. CodPeça
(Embarq X Peça) )
Exemplo de Produto Cartesiano
Obtenha os nomes de todas as peças para as quais há embarques
Peça 
CodPeça NomePeça CorPeça PesoPeça CidadePeça 
P1 Eixo Cinza 10 Porto Alegre 
P2 Rolamento Preto 16 Santa Maria 
P3 Mancal Verde 30 Uruguaiana 
 
Embarq 
CodPeça CodFornec QtidEmbarq 
P1 F1 300 
P1 F2 400P1 F3 200 
P2 F1 300 
P2 F4 350 
 
NomePeça
Eixo
Rolamento
Tabela 
Resultante
<criterio> (<tabela1> X <tabela 2>))
Operação de junção (join)
A combinação de uma operação de seleção aplicada sobre uma 
operação de produto cartesiano é usual em aplicações de BD. É através 
dela que dados de tabelas relacionadas são associados. 
Sintaxe: 
<tabela1> |X| < criterio> < tabela2>
A junção tem como operandos duas tabelas. O resultado é equivalente 
a executar: 
Exemplo de Junção (join)
Embarq |x| (Embarq.codFornec=Fornec.CodFornec) Fornec 
Equivalente:
( Embarq.codFornec=Fornec.CodFornec (Embarq x Fornec) )
<tabela1> |X| < criterio> < tabela2>
Critério da junção: qualquer expressão booleana, inclusive 
comparações do tipo <, >, <>, ... entre os valores de atributos das 
tabelas envolvidas na junção. Essa operação de junção é chamada 
Junção Theta.
Considere as seguintes relações:
funcionário (NrMatric, NmFunc, DtAdm, Sexo, CdCargo, CdDepto)
cargo (CdCargo, NmCargo, VrSalario)
depto (CdDepto, NmDepto, Ramal)
Com base nas relações dadas, elabore as expressões de álgebra relacional para obter:
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.
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.
Exercicios

Continue navegando