Upload
others
View
8
Download
0
Embed Size (px)
Citation preview
Prof. Luiz Vivacqua
Banco de Dados II
Universidade Veiga de Almeida
Banco de Dados II
Prof. Luiz Antônio Vivacqua C. Meyer
Prof. Luiz Vivacqua
Álgebra Relacional
Linguagens de Consulta
• Linguagens nas quais os usuários fazem
requisições de informação do banco de dados.
• Categorias das linguagens
– “Procedural”
– “Nao-procedural, ou declarativa”
• linguagens “puras”:
– Álgebra Relacional
– Calculo Relacional
• Estas linguagens puras formam a base das
linguagens de consulta que as pessoas usam.
Prof. Luiz Vivacqua
Álgebra Relacional
Álgebra Relacional
É uma linguagem de consulta formal e procedural
• Formal – tem uma notação matemática para a
manipulação de dados baseado na teoria de conjuntos.
• Procedural – os operandos são executados em uma
determinada ordem para atender uma solicitação.
Muito útil para representar planos de execução de
consultas
Prof. Luiz Vivacqua
Álgebra Relacional
Álgebra Relacional
“Conhecer a álgebra relacional é fundamental para
entendermos SQL e processamento de consultas”
Lógica: Uma operação é aplicada a uma relação
(tabela) e o resultado também é uma relação
Prof. Luiz Vivacqua
Álgebra Relacional
Operadores Fundamentais
Cinco operadores são ditos primitivos ou
fundamentais, ou seja, através deles qualquer
expressão de consulta de dados é possível.
Operadores Derivados
Derivam dos operadores fundamentais. São
definidos para facilitar a especificação de certos
procedimentos.
Prof. Luiz Vivacqua 6
Álgebra Relacional
Operações Básicas
Projeção : π
Seleção : σ
Produto Cartesiano : X
União : U
Diferença : -
Operadores Adicionais
Interseção - ∩
Divisão - ÷
Junção –
Agrupamento – G
Renomeação - ρ
Prof. Luiz Vivacqua
Álgebra Relacional
PEÇA
CÓDIGO NOME COR CIDADE
P1 PREGO VERMELHO RJ
P2 PORCA VERDE SP
P3 PARAFUSO AZUL CURITIBA
FORNECEDOR
CÓDIGO NOME CIDADE
S1 SILVA RJ
S2 JOÃO SP
FORNECIMENTO
CÓD_FORN COD_PEÇA QTDE
S1 P1 300
S1 P2 200
S1 P3 400
S2 P1 300
S2 P2 400
Prof. Luiz Vivacqua
Álgebra Relacional
Projeção - π lista-de-colunas(R)
Projeta (seleciona) colunas de uma relação
Exemplos:
• Obter o nome e a cor de todas as peças
PEÇA
CÓDIGO NOME COR CIDADE
P1 PREGO VERMELHO RJ
P2 PORCA VERDE SP
P3 PARAFUSO AZUL CURITIBA
Prof. Luiz Vivacqua
Álgebra Relacional
• Obter o nome e a cor de todas as peças
Resultado π nome, cor(PECA)
Resultado
NOME COR
PREGO VERMELHO
PORCA VERDE
PARAFUSO AZUL
Prof. Luiz Vivacqua
Álgebra Relacional
Seleção - σcondição(R)
Seleciona linhas que satisfazem determinada
condição.
Exemplo: Obter as peças com cor azul
PEÇA
CÓDIGO NOME COR CIDADE
P1 PREGO VERMELHO RJ
P2 PORCA VERDE SP
P3 PARAFUSO AZUL CURITIBA
Prof. Luiz Vivacqua
Álgebra Relacional
Resultado
Resultado σcor=azul(PECA)
Predicado Relação
OBSERVAÇÃO: Operadores aritméticos >, <, =, <>, >=, <=
Operadores lógicos ^(e), v (ou), (not)
Resultado
CÓDIGO NOME COR CIDADE
P3 PARAFUSO AZUL CURITIBA
Prof. Luiz Vivacqua
Álgebra Relacional
Projeção e Seleção
Exemplos:
• Obter o nome e a cidade das peças azuis
PEÇA
CÓDIGO NOME COR CIDADE
P1 PREGO VERMELHO RJ
P2 PORCA VERDE SP
P3 PARAFUSO AZUL CURITIBA
Prof. Luiz Vivacqua
Álgebra Relacional
Obter o nome e a cidade das peças azuis
Resultado π nome, cidade(R1)
Resultado
NOME CIDADE
PARAFUSO CURITIBA
R1
Resultado
CÓDIGO NOME COR CIDADE
P3 PARAFUSO AZUL CURITIBA
Resultado π nome, cidade( σcor=azul(PECA) )
2 passos
1 passo
σ cor = azul(PECA)
Prof. Luiz Vivacqua
Álgebra Relacional
Produto Cartesiano – R1 X R2
Produz uma nova relação com todas as colunas das
duas tabelas e a combinação de todas as linhas
Usado quando se quer recuperar dados que estão
em duas tabelas
Exemplo:
• Obter o nome da peça e o nome do fornecedor que estão
localizados na mesma cidade
Prof. Luiz Vivacqua
Álgebra Relacional
1º Passo – Produto Cartesiano: R1 PECA X FORNECEDOR
PECA
CODIGO
PECA
NOME
PECA
COR
PECA
CIDADE
FORN.
CODIGO
FORN.
NOME
FORN.
CIDADE
P1 PREGO VERMELHO RJ S1 SILVA RJ
P1 PREGO VERMELHO RJ S2 JOAO SP
P2 PORCA VERDE SP S1 SILVA RJ
P2 PORCA VERDE SP S2 JOAO SP
P3 PARAFUSO AZUL CURITIBA S1 SILVA RJ
P3 PARAFUSO AZUL CURITIBA S2 JOAO SP
CODIGO NOME COR CIDADE
P1 PREGO VERMELHO RJ
P2 PORCA VERDE SP
P3 PARAFUSO AZUL CURITIBA
PECA
CODIGO NOME CIDADE
S1 SILVA RJ
S2 JOAO SP
FORNECEDOR
PECA x FORNECEDOR
Prof. Luiz Vivacqua
Álgebra Relacional
2º Passo – Seleção das linhas onde a condição peca.cidade = fornecedor.cidade
R2 σ peca.cidade = fornecedor.cidade (R1)
PECA
CODIGO
PECA
NOME
PECA
COR
PECA
CIDADE
FORN.
CODIGO
FORN.
NOME
FORN.
CIDADE
P1 PREGO VERMELHO RJ S1 SILVA RJ
P1 PREGO VERMELHO RJ S2 JOAO SP
P2 PORCA VERDE SP S1 SILVA RJ
P2 PORCA VERDE SP S2 JOAO SP
P3 PARAFUSO AZUL CURITIBA S1 SILVA RJ
P3 PARAFUSO AZUL CURITIBA S2 JOAO SP
PECA
CODIGO
PECA
NOME
PECA
COR
PECA
CIDADE
FORN.
CODIGO
FORN.
NOME
FORN.
CIDADE
P1 PREGO VERMELHO RJ S1 SILVA RJ
P2 PORCA VERDE SP S2 JOAO SP
R2
Prof. Luiz Vivacqua
Álgebra Relacional
3º Passo – projeção das colunas nome da peça
e nome do fornecedor
π peca.nome, fornecedor.nome (R2)Resultado
PECA
CODIGO
PECA
NOME
PECA
COR
PECA
CIDADE
FORN.
CODIGO
FORN.
NOME
FORN.
CIDADE
P1 PREGO VERMELHO RJ S1 SILVA RJ
P3 PORCA VERDE SP S3 JOAO SP
PECA.NOME FORN.NOME
PREGO SILVA
PORCA JOAO
Prof. Luiz Vivacqua
Álgebra Relacional
União
Geração de uma nova relação através da seleção de
linhas das duas relações.
As relações tem que ser compatíveis a união
(mesmo número de colunas, mesmo domínio)
Exemplo:
• Obter o código das peças que são azuis ou que são
fornecidas pelo fornecedor S2
Prof. Luiz Vivacqua
Álgebra Relacional
Obter o código das peças azuis
Obter o código das peças fornecidas por S2
Obter o código das peças azuis ou fornecidas por S2
Resultado R1 U R2
R1 π codigo (σ cor = azul (PECA))
R2 π cod_peca (σ cod_forn = s2 (FORNECIMENTO))
CODIGO
P3
CODIGO
P1
P2
CODIGO
P1
P2
P3
Prof. Luiz Vivacqua
Álgebra Relacional
Diferença
Geração de uma relação com as linhas da 1ª
relação que não aparecem na 2ª relação
Exemplo
• Obter as cidades onde existam peças mas não existam
fornecedores
Prof. Luiz Vivacqua
Álgebra Relacional
Cidades onde existem peças
Cidades onde existem fornecedores
Cidades onde existem peças mas não fornecedores
R1 π cidade (PECA)
R2 π cidade (FORNECEDOR)
Resultado R1 - R2
CIDADE
RJ
SP
CURITIBA
CIDADE
RJ
SP
CURITIBA
CIDADE
CURITIBA
Prof. Luiz Vivacqua
Álgebra Relacional
Interseção
Geração de uma relação contendo as linhas que
existem nas duas relações.
Exemplo:
• Obter as cidades onde existam peças E fornecedores
Prof. Luiz Vivacqua
Álgebra Relacional
Cidades onde existem peças
Cidades onde existem fornecedores
Cidades onde existem peças E fornecedores
R1 π cidade (PECA)
R2 π cidade (FORNECEDOR)
Resultado R1 ∩ R2
CIDADE
RJ
SP
CURITIBA
CIDADE
RJ
SP
CIDADE
RJ
SP
Prof. Luiz Vivacqua
Álgebra Relacional
Junção
Geração de uma relação pela aplicação de uma
seleção sobre um produto cartesiano
Exemplo:
• R1 R2 = σ condição (R1 X R2)condição
• Obter o nome dos fornecedores que fornecem P3
Resultado π nome (Peca Fornecimento)codigo=cod_peca ^ cod_peca=‘P3’