Upload
internet
View
109
Download
2
Embed Size (px)
Citation preview
Algebra Relacional
Banco de Dados IProfa. Jiani Cardoso
2/2005
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.
CidadeFornecSão PauloRio 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 quatrooperadores: 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 astabelas 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) = intDom(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 determinepermitem 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 400 P1 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.