Banco de dados Aula 19 Algebra Relacional Continuação 1
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:
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 relaçõescomo operando.e as Relações 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 relação.
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 Fornec P2 F4 350 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
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)
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) ) Relação Resultante CodFornec F2 F4
Operação Produto Cartesiano Sintaxe: <relação1> X < relação2> O produto cartesiano possui como operadores duas relações. O resultado é uma relação cuja linhas são a combinação das linhas das relações < relação1 > e <relação2> tomando-se uma linha da <relação1> e concatenando-a com uma linha da < relação 2> Total de colunas do produto cartesiano: nº colunas da primeira relação+ nº de colunas da segunda relação 6 + 3 = 9 colunas Nº de linhas do produto cartesiano: Nº de linhas da primeira relação x nº de linhas da segunda relação. 500 x 600 = 30.000 linhas
Operação de Produto Cartesiano Embarq X Peça Normalmente o produto cartesiano é combinado com uma seleção que envolve as diversas relações multiplicadas.
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) ) 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 NomePeça Eixo Rolamento Relação Resultante CodPeça CodFornec P1 F1 300 P1 F2 400 P1 F3 200 P2 F1 300 P2 F4 350 QtidEmbarq
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: <relação1> X < criterio> < relação2> A junção tem como operandos duas relações. O resultado é equivalente a executar: <criterio> (<relação1> X <relação2>))
Exemplo de Junção (join) <relação1> X < criterio> < relação2> 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 relações envolvidas na junção. Essa operação de junção é chamada Junção Theta.
Seleção combinada com Produto Cartesiano NomePeça ( Embarq.CodPeça=Peça.CodPeça (Embarq X Peça)) Obtém os nomes de todas as peças para as quais há embarques
BD exemplo - Repetição 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 Fornec P2 F4 350 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
Exercícios Elabore a expressão algébrica para exibir o nome da cidade dos fornecedores da peça com o nome Eixo. Elabore a expressão algébrica para exibir o nome das peças fornecidas pelo fornecedor Tavares.