A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Banco de Dados I Profa. Jiani Cardoso 2/2005

Apresentações semelhantes


Apresentação em tema: "Banco de Dados I Profa. Jiani Cardoso 2/2005"— Transcrição da apresentação:

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

2 Algebra Relacional Á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: 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)

3 Operadores da 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: ÷

4  <critério de seleção> (< tabela>)
Operação de Seleção () 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  <critério de seleção> (< tabela>) O resultado da seleção tem colunas com os mesmos nomes e domínios da tabela de entrada.

5 BD exemplo

6  codPeça = ‘P1’ (Peça) Exemplo de Seleção ()
O resultado da seleção tem colunas com os mesmos nomes e domínios da tabela de entrada.  codPeça = ‘P1’ (Peça) Resulta em uma tabela que contém todos os dados da peça de código P1.

7  (StatusFornec > 5 and CidadeFornec = ‘Rio de Janeiro’ (Fornec))
Exemplo de Seleção () Ex.:Mostre os dados de todas os fornecedores que tenham status maior que 5 e que sejam do Rio de Janeiro.  (StatusFornec > 5 and CidadeFornec = ‘Rio de Janeiro’ (Fornec)) Tabela Resultante

8  <lista de colunas> (<tabela>)
Operação de Projeção () A Projeção tem como operando uma tabela. O resultado é uma tabela que contém apenas as colunas selecionadas. Sintaxe:  <lista de colunas> (<tabela>) Ex.: Apresente os códigos e os nomes de todas as peças:  CodPeça, NomePeça (Peça) Tabela Resultante

9 Operação de Projeção ()
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 Tabela Resultante

10  CodFornec, QtidEmbarq
Aninhamento de Operadores 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) ) Tabela Resultante

11 Operações da teoria de conjuntos
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.

12 Aluno é compatível com Professor, mas não é com Funcionario.
Operação de União Ex: Aluno = { nome, idade, curso} Professor = { nome, idade, depto.} Funcionario = { nome, depto, idade} 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.

13 Operação de União Apresente uma relação com todos os alunos e também com todos os professores: Professor = {nome, idade, depto.} {Ari, 35, comput. Wilma, 32, eletr. Zeca, 25, comput.} Aluno = {nome, idade, curso} {Zeca, 25, comput. Zico, 21, eletr. Juca, 19, odonto. Tuca, 19, comput.} Aluno  Professor = {nome, idade, curso} { Zeca, 25, comput. Zico, 21, eletr. Juca, 19, odonto. Tuca, 19, comput. Ari, 35, comput. Wilma, 32, eletr. } 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.

14 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} { 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.}

15 Operação de Intersecção
Apresente uma relação de todos os alunos que 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} Operadores derivados 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)

16  CodFornec (  (StatusFornec > 5 (Fornec) )
Operação de Intersecção Ex.: Obtenha os códigos de todos os fornecedores que tem embarques e que tem status maior que 5.  CodFornec (Embarq)  CodFornec (  (StatusFornec > 5 (Fornec) ) CodFornec F2 F4 Tabela Resultante

17 <tabela1> X <tabela 2>
Operação Produto Cartesiano 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 = linhas

18 Operação de Produto Cartesiano
Embarq X Peça Normalmente o produto cartesiano é combinado com uma seleção que envolve as diversas tabelas multiplicadas.

19 Exemplo de Produto Cartesiano
Obtenha os nomes de todas as peças para as quais há embarques  NomePeça ( Embarq. CodPeça= Peça. CodPeça (Embarq X Peça) ) Tabela Resultante NomePeça Eixo Rolamento

20  <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:  <criterio> (<tabela1> X <tabela 2>))

21 ( Embarq.codFornec=Fornec.CodFornec (Embarq x Fornec) )
Exemplo de Junção (join) <tabela1> |X| < criterio> < tabela2> Embarq |x| (Embarq.codFornec=Fornec.CodFornec) Fornec Equivalente: ( Embarq.codFornec=Fornec.CodFornec (Embarq x Fornec) ) 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.


Carregar ppt "Banco de Dados I Profa. Jiani Cardoso 2/2005"

Apresentações semelhantes


Anúncios Google