Algebra Relacional Banco de Dados I Profa. Jiani Cardoso 2/2005.

21
Algebra Relacional Banco de Dados I Profa. Jiani Cardoso 2/2005

Transcript of Algebra Relacional Banco de Dados I Profa. Jiani Cardoso 2/2005.

Page 1: Algebra Relacional Banco de Dados I Profa. Jiani Cardoso 2/2005.

Algebra Relacional

Banco de Dados IProfa. Jiani Cardoso

2/2005

Page 2: Algebra Relacional Banco de Dados I Profa. 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

Page 3: Algebra Relacional Banco de Dados I Profa. Jiani Cardoso 2/2005.

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

Page 4: Algebra Relacional Banco de Dados I Profa. Jiani Cardoso 2/2005.

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>)

Page 5: Algebra Relacional Banco de Dados I Profa. Jiani Cardoso 2/2005.

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

Page 6: Algebra Relacional Banco de Dados I Profa. Jiani Cardoso 2/2005.

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

Page 7: Algebra Relacional Banco de Dados I Profa. Jiani Cardoso 2/2005.

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

Page 8: Algebra Relacional Banco de Dados I Profa. Jiani Cardoso 2/2005.

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

Page 9: Algebra Relacional Banco de Dados I Profa. Jiani Cardoso 2/2005.

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

Page 10: Algebra Relacional Banco de Dados I Profa. Jiani Cardoso 2/2005.

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

Page 11: Algebra Relacional Banco de Dados I Profa. Jiani Cardoso 2/2005.

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

Page 12: Algebra Relacional Banco de Dados I Profa. Jiani Cardoso 2/2005.

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

Page 13: Algebra Relacional Banco de Dados I Profa. Jiani Cardoso 2/2005.

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.

Page 14: Algebra Relacional Banco de Dados I Profa. Jiani Cardoso 2/2005.

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

Page 15: Algebra Relacional Banco de Dados I Profa. Jiani Cardoso 2/2005.

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

Page 16: Algebra Relacional Banco de Dados I Profa. Jiani Cardoso 2/2005.

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

Page 17: Algebra Relacional Banco de Dados I Profa. Jiani Cardoso 2/2005.

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

Page 18: Algebra Relacional Banco de Dados I Profa. Jiani Cardoso 2/2005.

Embarq X Peça

Operação de Produto Cartesiano

Normalmente o produto cartesiano é combinado com uma seleção que envolve as diversas tabelas multiplicadas.

Page 19: Algebra Relacional Banco de Dados I Profa. Jiani Cardoso 2/2005.

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

Page 20: Algebra Relacional Banco de Dados I Profa. Jiani Cardoso 2/2005.

<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:

Page 21: Algebra Relacional Banco de Dados I Profa. Jiani Cardoso 2/2005.

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.