Baixe o app para aproveitar ainda mais
Prévia do material em texto
Banco de Dados I Álgebra Relacional Cálculo Relacional DCC-UFLA Prof. Denilson Alves Pereira DCC-UFLA Prof. Denilson Alves Pereira 2 Outras Operações Relacionais Operações adicionais da Álgebra Relacional para atender solicitações comuns em SGBDRs Projeção Generalizada Funções de Agregação Agrupamento Operações OUTER JOIN (Junção Externa) Melhoram o poder expressivo da Álgebra Relacional original DCC-UFLA Prof. Denilson Alves Pereira 3 Projeção Generalizada Permite que funções dos atributos sejam incluídas na lista de projeção Π F1, F2, …, Fn (R) Exemplo: Π NumEmpregado, Salario*0.25, Salario – Salario*0.25 (Empregado) Os atributos podem ser renomeados: ρ (NumEmp, Imposto, SalarioLiquido) (Π NumEmpregado, Salario*0.25, Salario – Salario*0.25 (Empregado)) DCC-UFLA Prof. Denilson Alves Pereira 4 Funções de Agregação São funções de agregação matemática especificadas sobre coleções de valores do banco de dados Funções comuns: Soma (SUM), Média (AVG), Máximo (MAX), Mínimo (MIN) e Conta (COUNT) DCC-UFLA Prof. Denilson Alves Pereira 5 Agrupamento Agrupa tuplas pelo valor de alguns de seus atributos Normalmente, depois do agrupamento aplica-se funções de agregação independentemente para cada grupo Notação: ℑ (pronuncia-se F script) <atributos agrupamento> ℑ <lista de funções> (R) DCC-UFLA Prof. Denilson Alves Pereira 6 Agregação e Agrupamento Exemplo: recuperar para cada departamento o seu número, o seu número de funcionários e o seu salário médio R1 ← NumDepart ℑ COUNT NumEmpregado, AVG Salário (Empregado) ρ (NumDepto, NoEmps, SalarioMedio) (R1) Resultado: NumDepto NoEmps SalarioMedio 5 4 33250 4 3 31000 1 1 55000 DCC-UFLA Prof. Denilson Alves Pereira 7 Agregação e Agrupamento Exemplo: recuperar os nomes de todos os funcionários com dois ou mais dependentes R1 ← NumEmpregado ℑ COUNT NomeDependente (Dependente) R2 ← ρ (NumEmpregado, NoDeps) (R1) R3 ← σ NoDeps >= 2 (R2) R ← pi PrimeiroNome, UltimoNome (R3 * Empregado) DCC-UFLA Prof. Denilson Alves Pereira 8 Operações OUTER JOIN (Junção Externa) A junção vista anteriormente é chamada de Junção Interna (Inner Join). Nela, somente tuplas que possuem correspondentes nas duas relações aparecem no resultado. A Junção Externa (Outer Join) mantém todas as tuplas da primeira relação, ou todas da segunda, ou todas aquelas nas duas relações no resultado da junção, independentemente de elas possuírem ou não tuplas correspondentes na outra relação. DCC-UFLA Prof. Denilson Alves Pereira 9 Operações OUTER JOIN (Junção Externa) Tipos de junção externa: Junção externa à esquerda, junção externa à direita e junção externa completa Exemplo: Lista todos os nomes de funcionários, bem como o nome dos departamentos que eles gerenciam, se eles gerenciarem um departamento. Caso não o façam, indicar isso com um valor NULL DCC-UFLA Prof. Denilson Alves Pereira 10 Cálculo Relacional O cálculo relacional é outra linguagem de consulta formal para o modelo relacional. Divide-se em: Cálculo relacional de tupla Cálculo relacional de domínio É uma linguagem declarativa, especifica-se o que deve ser recuperado em vez de como recuperar Diferente da álgebra relacional, que é uma linguagem procedimental Tem o mesmo poder de expressão da álgebra relacional DCC-UFLA Prof. Denilson Alves Pereira 11 Cálculo Relacional de Tupla É um dos alicerces da Linguagem SQL Variável de tupla Percorre determinada relação do banco de dados O cálculo relacional de tupla simples tem a forma: {t | COND(t)} t é uma variável de tupla COND(t) é expressão condicional booleana O resultado da consulta é o conjunto de todas as tuplas t que avaliam COND(t) como TRUE DCC-UFLA Prof. Denilson Alves Pereira 12 Cálculo Relacional de Tupla Exemplo: Recuperar o nome de todos os funcionários cujo salário é maior que 50.000 {t.PrimeiroNome | Empregado(t) AND t.salario > 50.000} Uma expressão deve conter: Relação de intervalo R de t. É especificada por uma condição na forma R(t) Condição para selecionar combinações de tuplas Conjunto de atributos a serem recuperados DCC-UFLA Prof. Denilson Alves Pereira 13 Expressões e Fórmulas Uma expressão geral do cálculo relacional de tupla tem a forma: Uma fórmula (ou condição) é composta de átomos do cálculo de predicados Um átomo da forma R(t i ), onde R é um nome de relação e t i uma variável de tupla Um átomo da forma t i .A op t j .B, onde op é um operador de comparação, A e B, atributos das relações de t i e t j Um átomo da forma t i .A op c, onde c é um valor constante DCC-UFLA Prof. Denilson Alves Pereira 14 Quantificador Existencial e Universal Quantificador existencial (∃) Uma fórmula (∃t)(F) é TRUE se existir alguma tupla que torne F TRUE Quantificador universal (∀) Uma fórmula (∀t)(F) é TRUE se cada tupla no universo de tuplas tornar F TRUE Uma variável de tupla t é ligada se for quantificada, ou seja, aparecer em uma cláusula (∃t) ou (∀t); caso contrário, ela é livre. DCC-UFLA Prof. Denilson Alves Pereira 15 Exemplos de Consulta Listar o nome e o endereço de todos os funcionários que trabalham para o depto 'Pesquisa' {t.nome, t.endereço | Funcionario(t) AND (∃d) (Departamento(d) AND d.nomeDepart='Pesquisa' AND d.numDepart=t.numDepart)} As únicas variáveis de tupla livres em uma expressão devem ser aquelas que aparecem à esquerda da barra (|) DCC-UFLA Prof. Denilson Alves Pereira 16 Exemplos de Consulta Para cada projeto localizado em 'Houston', listar o número do projeto, o número do departamento que o controla e o nome do gerente do departamento {p.NumProj, p.NumDepart, f.PrimeiroNome | Funcionario(f) AND Projeto(p) AND p.Localizacao='Houston' AND ((∃d)(Departamento(d) AND p.NumDepart=d.NumDepart AND d.NumGerente=f.NumEmpregado))} DCC-UFLA Prof. Denilson Alves Pereira 17 Exemplos de Consulta Listar o nome dos funcionários que trabalham em algum projeto controlado pelo departamento de número 5 {f.PrimeiroNome | Funcionario(f) AND ((∃p)(∃t)(Projeto(p) AND Trabalha(t) AND p.NumDepart=5 AND t.NumEmpregado=f.NumEmpregado AND p.NumProj=t.NumProj))} DCC-UFLA Prof. Denilson Alves Pereira 18 Exemplos de Consulta Listar os números de projetos que envolvem um funcionário cujo sobrenome é 'Smith', seja como um trabalhador ou como um gerente do departamento que controla o projeto {p.NumProj | Projeto(p) AND (((∃f)(∃t)(Funcionario(f) AND Trabalha(t) AND p.NumProj=t.NumProj AND t.NumEmpregado=f.NumEmpregado AND f.UltimoNome='Smith')) OR ((∃g)(∃d)(Funcionario(g) AND Departamento(d) AND p.NumDepart=d.NumDepart AND d.NumGerente=g.NumEmpregado AND g.UltimoNome='Smith')))} DCC-UFLA Prof. Denilson Alves Pereira 19 Cálculo Relacional de Domínio É a base da linguagem QBE (Query-By-Example) Difere do cálculo relacional de tupla no tipo das variáveis usadas nas fórmulas Ao invés de percorrerem as tuplas, elas percorrem valores isolados dos domínios dos atributos Para formar uma relação de grau n, precisamos ter n variáveis de domínio, uma para cada atributo DCC-UFLA Prof. Denilson Alves Pereira 20 Cálculo Relacional de Domínio Uma expressão do cálculo de domínio tem a forma {x 1 , x 2 , …, x n | COND(x 1 , x 2 , …, x n , x n+1 , x n+2 , …, x n+m )} onde x 1 , x 2 , …, x n , x n+1 , x n+2 , …, x n+m são variáveis de domínio que percorrem os domínios dos atributos e COND é uma condição ou fórmula DCC-UFLA Prof. Denilson Alves Pereira 21 Cálculo Relacional de Domínio Uma fórmula é composta de átomos, variáveis e quantificadores Um átomo da forma R(x 1 , x 2 , …, x j ), onde R é o nome de uma relação de grau j e cada x i é uma variável de domínio Um átomo da forma x i op x j , onde op é um operador de comparaçãoe x i e x j são variáveis de domínio Um átomo da forma x i op c ou c op x i , onde c é um valor constante Os átomos são avaliados como TRUE ou FALSE DCC-UFLA Prof. Denilson Alves Pereira 22 Exemplos de Consulta Listar a data de nascimento e o endereço do funcionário de nome 'Franklin Wong' {v, w | (∃r)(∃s)(∃t)(∃u)(∃x)(∃y)(∃z)(∃q) (Empregado(rstuvwxyzq) AND r='Franklin' AND t='Wong')} v e w são variáveis livres (não ligadas a um quantificador) Notação simplificada Quantifica-se somente as variáveis que realmente aparecem em uma condição (r e t, no exemplo) {v, w | (∃r)(∃t)(Empregado(rstuvwxyzq) AND r='Franklin' AND t='Wong')} DCC-UFLA Prof. Denilson Alves Pereira 23 Exemplos de Consulta Listar o nome e o endereço de todos os funcionários que trabalham para o departamento 'Pesquisa' {r, w | (∃q)(∃l)(∃m)(Empregado(rstuvwxyzq) AND Departamento(lmno) AND l='Pesquisa' AND m=q)} Para cada projeto localizado em 'Houston', listar o número do projeto, o número do departamento que o controla e o nome do gerente do departamento {i, k, r | (∃j)(∃m)(∃n)(∃u)(Projeto(hijk) AND Empregado(rstuvwxyzq) AND Departamento(lmno) AND k=m AND j='Houston') AND n=u} DCC-UFLA Prof. Denilson Alves Pereira 24 Exemplos de Consulta Listar os nomes dos funcionários que não tem dependentes {r, t | (∃u)(Empregado(rstuvwxyzq) AND (NOT(∃l) (Dependente(lmnop) AND u=l)))} Listar os nomes dos gerentes que têm pelo menos um dependente {r, t | (∃u)(∃j)(∃l)(Empregado(rstuvwxyzq) AND Departamento(hijk) AND Dependente(lmnop) AND u=j AND u=l)} DCC-UFLA Prof. Denilson Alves Pereira 25 Referência Bibliográfica Básica ELMASRI, Ramez; NAVATHE, Shamkant B. Sistemas de Bancos de Dados. Pearson Education, 6a edição, 2011. ISBN-978-85-7936-085-5 Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25
Compartilhar