algebra relacional
TRANSCRIPT
12/10/2009
Roteiro
● Operações Relacionais Unárias○ Seleção, Projeção e Rebatizamento
● Operações sobre Conjuntos○ União, Interseção, Diferença○ Produto Cartesiano
● Operações Relacionais Binárias○ Junções e Divisão
● Operações de Agregamento
12/10/2009
Operações Relacionais Unárias● Seleção (Select)
○ Usada para selecionar um subconjunto de tuplas de uma relação que satisfaça uma condição de seleção.
○ Particionamento Horizontal da relação em dois conjuntos de tuplas: as que satisfazem a condição e as que não satisfazem a condição de seleção.
12/10/2009
Operações Relacionais Unárias● Seleção (Select)
○ Notação: (símbolo sigma)■ R � σ <condição de seleção> (S)■ onde a condição de seleção é uma expressão
booleana, especificada nos atributos da relação S.
■ S é, geralmente, uma expressão de álgebra relacional.
■ O resultado da operação de seleção é uma relação R com os mesmos atributos de S.
12/10/2009
Operações Relacionais Unárias● Seleção (Select)
○ Condição de Seleção:■ Geralmente é composta por expressões
booleanas na forma: <nome do atributo> <operador de comparação> <valor da constante>
■ Onde o operador de comparação pode ser =,≠, ≤, ≥, >, <
■ As cláusulas podem ser conectadas por operadores de disjunção (OR) ou conjunção (AND)
12/10/2009
Operações Relacionais Unárias
● Seleção (Select)○ Exemplo:
■ Listar todos os avaliadores com título de mestre:
■ R � σ <Titulação=‘Mestre’> (PROFESSOR)
12/10/2009
Operações Relacionais Unárias
● Seleção (Select)○ Exemplos:
■ Listar todos as provas escritas da área de Computação:
■ R � σ <Área=‘Computação’ AND Tipo=‘Escrita’> (PROVA)
12/10/2009
Operações Relacionais Unárias● Propriedades da Seleção (Select)
○ Comutatividade: σ <condição 1>(σ <condição 2> (R)) = σ <condição 2> (σ <condição 1> (R))
○ Propagação: σ <cond 1>(σ <cond 2> (...(σ <cond n>(R)...) = σ <cond 1> AND <cond 2> AND
... AND <cond n> (R)
12/10/2009
Operações Relacionais Unárias● Projeção (Project)
○ Usada para selecionar um subconjunto de atributos de uma relação.
○ Particionamento Vertical da relação.
12/10/2009
Operações Relacionais Unárias● Projeção (Project)
○ Notação: (símbolo pi)■ R � π <lista de atributos> (S)
■ S é, geralmente, uma expressão de álgebra relacional ou uma relação simples do banco de dados.
■ O resultado da operação de projeção é uma relação R com os atributos especificados de S, na mesma ordem em que aparecem na lista.
■ A operação de Projeção REMOVE quaisquer tuplas repetidas
12/10/2009
Operações Relacionais Unárias
● Projeção (Project)○ Exemplo:
■ Listar todos os nomes dos candidatos inscritos no concurso:
■ R � π <Nome> (CANDIDATO)
12/10/2009
Operações Relacionais Unárias
● Projeção (Project)○ Exemplo:
■ Listar os nomes de todos os avaliadores com título de mestre:
■ S � σ <Titulação=‘Mestre’> (PROFESSOR)
■ R � π nome (S)
OU■ R � π nome(σ <Titulação=‘Mestre’> (PROFESSOR))
12/10/2009
Operações Relacionais Unárias● Propriedades da Projeção (Project)
○ O número de tuplas da relação resultante R é menor ou igual ao número de tuplas de S.
○ Comutatividade: Não Aplicável π <lista 1> (π <lista 2> (R)) = π <lista 1> (R)
Desde que <lista 2> contenha os atributos de <lista 1>, caso contrário, a operação estará incorreta.
12/10/2009
Operações Relacionais Unárias● Rebatizar (Rename)
○ Usada para renomear os atributos das relações resultantes em operações da álgebra relacional.
○ Exemplo:■ Listar os nomes de todos os avaliadores com
título de mestre:■ R (Professor) � π nome (σ <Titulação=‘Mestre’> (PROFESSOR))
12/10/2009
Operações Relacionais Unárias
● Exercícios:○ Elabore consultas utilizando operadores da Álgebra Relacional
para listar:1. Os nomes dos departamentos da Empresa.2. Os nomes dos funcionários do sexo masculino da Empresa.3. Os nomes das esposas dos funcionários da empresa que estiverem
no cadastro de dependentes.4. O nome da localização do projeto de número 5.5. A matrícula do gerente do departamento ‘Contabilidade’.6. As matrículas dos empregados que trabalhem mais de 20 horas em
qualquer projeto.7. Os números de projetos em que o empregado de matrícula 10
trabalha.8. Os nomes dos empregados dos sexo feminino, supervisionadas pelo
empregado de matrícula 120.9. Os nomes dos departamentos gerenciados pelo empregado de
matrícula 534 ou gerenciados a partir de ’01-Janeiro-2004’.
12/10/2009
Operações da Álgebra Relacional a Partir da Teoria dos Conjuntos● Diferentemente das operações unárias, são
aplicadas em duas relações, a fim de obter uma terceira como resultado da operação aplicada.
● São baseadas em operações sobre conjuntos: União, Interseção e Diferença
● As relações sobre as quais é efetuada a operação devem ser união-compatíveis.
12/10/2009
Operações da Álgebra Relacional a Partir da Teoria dos Conjuntos
● Relações União-Compatíveis:○ Duas relações R (A1, A2, …, An) e S (B1,
B2, …, Bn) são ditas união-compatíveis se:
■ Tiverem o mesmo grau n; ■ dom(Ai) = dom(Bi), para 1 ≤ i ≤ n.
○ Ou seja, as duas relações têm o mesmo número de atributos e cada par correspondente de atributos tem o mesmo domínio.
12/10/2009
Operações da Álgebra Relacional a Partir da Teoria dos Conjuntos
● Operação de União (∪):
○ O resultado dessa operação, indicada por:
R � S ∪ T
○ É uma relação R que inclui todas as tuplas que estão em S, ou em T, ou em ambas, S e T.
○ As tuplas repetidas são eliminadas.
12/10/2009
Operações da Álgebra Relacional a Partir da Teoria dos Conjuntos
● Operação de Interseção (∩):○ O resultado dessa operação, indicada
por: R � S ∩ T
○ É uma relação R que inclui todas as tuplas que estão em ambas, S e T.
12/10/2009
Operações da Álgebra Relacional a Partir da Teoria dos Conjuntos
● Operação de Diferença (-):○ O resultado dessa operação, indicada
por: R � S - T
○ É uma relação R que inclui todas as tuplas que estão em S, mas não estão em T.
12/10/2009
Operações da Álgebra Relacional a Partir da Teoria dos Conjuntos
● Exemplos:○ Listar os nomes dos professores e dos
candidatos inscritos no concurso. Cand � π nome (CANDIDATO)
Prof � π nome (PROFESSOR)
R � Cand ∪ Prof
12/10/2009
Operações da Álgebra Relacional a Partir da Teoria dos Conjuntos
● Exemplos:○ Listar os nomes dos professores que
realizaram alguma avaliação: AVAL (Nome) � π Professor (AVALIAÇÃO)
PROF � π nome (PROFESSOR)
R � PROF ∩ AVAL
12/10/2009
Operações da Álgebra Relacional a Partir da Teoria dos Conjuntos
● Exemplos:○ Listar os nomes dos professores que não
realizaram nenhuma avaliação: AVAL (Nome) � π Professor (AVALIAÇÃO)
PROF � π nome (PROFESSOR)
R � PROF - AVAL
12/10/2009
Operações da Álgebra Relacional a Partir da Teoria dos Conjuntos
● Propriedades:○ Comutativivade:
■ União e Interseção são comutativas:■ R ∪ S = S ∪ R
■ R ∩ S = S ∩ R■ Diferença não é comutativa:
■ R – S ≠ S – R○ Associatividade
■ União, interseção e diferença são associativas:■ R ∪ (S ∪ T) = (R ∪ S) ∪ T
■ R ∩ (S ∩ T) = (R ∩ S) ∩ T■ R – (S – T) = (R – S) – T
12/10/2009
Operações da Álgebra Relacional a Partir da Teoria dos Conjuntos● Produto Cartesiano (X):
○ Não há necessidade das relações envolvidas serem “união-compatíveis”
○ Utilizada para gerar uma nova relação a partir de duas outras, associando suas tuplas de forma combinatória.
○ Em geral, só possui algum sentido se combinada com uma operação de seleção, “casando” atributos de relações diferentes que tenham valores iguais.
12/10/2009
Operações da Álgebra Relacional a Partir da Teoria dos Conjuntos
● Produto Cartesiano (X):○ R � S X T
■ S (A1, A2, …, An)
■ T (B1, B2, …, Bn)
■ R (A1, A2, …, An, B1, B2, …, Bn)
■ Se S possuir n tuplas e T possuir m tuplas, então R possuirá n*m tuplas.
12/10/2009
Operações da Álgebra Relacional a Partir da Teoria dos Conjuntos
● Exemplo de Produto Cartesiano (X):○ Listar, para as bancas formadas: área,
sub-área, membro, titulação e Universidade de Origem
■ Área, Sub-Área e Membro da banca estão na relação “BANCA_MEMBROS”
■ Membro da banca, titulação e universidade de origem estão na relação “PROFESSOR”
■ Temos que combinar as duas relações para obter o resultado esperado
12/10/2009
Esquema ExemploEstado do banco de dados CONCURSO
● Comb �PROFESSOR X BANCA_MEMBROS● R �σ Nome = Membro (Comb)
OU● R �σ Nome = Membro (PROFESSOR X BANCA_MEMBROS)
12/10/2009
Operações da Álgebra Relacional a Partir da Teoria dos Conjuntos
● Exemplo de Produto Cartesiano (X):○ Resultado:
12/10/2009
Operações Relacionais Binárias● Junção (Join)
○ É usada para combinar as tuplas relacionadas em duas relações dentro de uma tupla única.
○ É uma das operações mais importantes aplicadas ao modelo relacional, porque implementa a associação entre relações.
○ Grosso modo, substitui a associação entre relações através de produto cartesiano combinado à seleção.
12/10/2009
Operações Relacionais Binárias● Junção (⋈):
○ R � S ⋈<condição da junção> T■ S (A1, A2, …, An)
■ T (B1, B2, …, Bn)
■ R (A1, A2, …, An, B1, B2, …, Bn)
■ Uma tupla de R será composta por uma tupla de S e uma de T, quando a combinação satisfizer a condição de junção.
12/10/2009
Operações Relacionais Binárias● Junção (⋈):
○ R � S ⋈<condição da junção> T■ Condição de junção: mesmas regras da
condição de seleção, exceto que a expressão poderá ser do tipo:
<nome do atributo1> <operador de comparação> <nome do atributo2>
■ Onde atributo1 faz parte da relação S e atributo2 faz parte da relação T.
12/10/2009
Operações Relacionais Binárias● Junção (⋈):
○ Exemplo: Listar nome dos candidatos que realizaram provas da área de Computação.
CAND_COMP � πinscrição (σÁrea=‘Computação’PROVAS_CANDIDATO)
R � πnome (CANDIDATO ⋈ candidato.inscrição = cand_comp.inscrição CAND_COMP)
12/10/2009
Operações Relacionais Binárias● Junção (⋈):
○ Variações■ Equijunção (Equijoin)
■ Junção em que o único operador de comparação usado é o = (igual)
■ Junção Natural (Natural Join)■ Equijunção em que os dois atributos (ou cada par
de atributos) têm o mesmo nome em ambas as relações envolvidas.
■ Representada por *
12/10/2009
Operações Relacionais Binárias● Equijunção (⋈):
○ Exemplo: Listar nome dos candidatos que realizaram provas da área de Computação.
CAND_COMP � πinscrição (σÁrea=‘Computação’PROVAS_CANDIDATO)
R � πnome (CANDIDATO ⋈ candidato.inscrição = cand_comp.inscrição CAND_COMP)
12/10/2009
Operações Relacionais Binárias● Junção Natural (*):
○ Exemplo: Listar nome dos candidatos que realizaram provas da área de Computação.
CAND_COMP � πinscrição (σÁrea=‘Computação’PROVAS_CANDIDATO)
R � πnome (CANDIDATO * CAND_COMP)
12/10/2009
Operações Relacionais Binárias● Divisão (÷)
○ Operação peculiar da álgebra relacional, não possuindo comando na linguagem SQL para representá-la.
○ É aplicada em duas relações: R(A) e S(B), em que A ⊆ B. Se tivermos um conjunto de atributos
C = A – B, ou seja, C é o conjunto de atributos de R que não são atributos de S. Assim, o resultado da operação será uma relação T(C).
12/10/2009
Operações Relacionais Binárias● Divisão (÷)
○ Para uma tupla t aparecer no resultado T da divisão de R por S, os valores em t devem aparecer em R em combinação com toda tupla em S.
12/10/2009
Operações Relacionais Binárias
● Divisão (÷)○ Exemplo: Listar os nomes dos candidatos
que passaram pelas duas fases do concurso, ou seja, realizaram tanto prova escrita quanto didática.
12/10/2009
Operações Relacionais Binárias
● Resposta (possível): PROVAS � π Tipo (PROVA)
PROV_REALIZ � π Inscrição, Tipo
(PROVAS_CANDIDATO) CAND � PROV_REALIZ ÷ PROVAS R � π Nome CAND * CANDIDATO
12/10/2009
Operações Relacionais Binárias
● Divisão (÷)○ Pode ser expressa como uma seqüência de
operações de projeção (π), produto cartesiano (X) e diferença (-): T � R ÷ S
ǁ T1 � πγ(R)
T2 � πγ((S X T1) – R)
T � T1 – T2
12/10/2009
Operações Relacionais Binárias
● Exercícios:○ Elabore consultas utilizando operadores da
Álgebra Relacional para listar:1. Os nomes dos empregados que trabalham no
departamento ‘Administração’2. Os nomes e parentescos dos dependentes do
empregado ‘Ari França’3. O nome do gerente do departamento ‘Informática’4. As Localidades do departamento ‘Contabilidade’5. Os nomes dos projetos em que o empregado ‘José da
Silva’ trabalha6. Os nomes e parentescos dos dependentes dos
empregados do departamento ‘Financeiro’
12/10/2009
Operações Relacionais Binárias
● Exercícios:○ Elabore consultas utilizando operadores da Álgebra
Relacionais para listar:1. Os nomes dos empregados supervisionados por ‘Antenor
Filho’2. Os nomes dos projetos em que os empregados do
departamento ‘Informática’ trabalham3. Os nomes dos supervisores dos empregados que trabalham
no projeto ‘Pesquisa’4. Os nomes dos empregados que trabalham em
departamentos com localizações em ‘Manaus’5. Os nomes dos gerentes dos departamentos que controlam
projetos em que o empregado ‘Iran Neves’ trabalha6. Os nomes dos empregados que trabalham nos dois projetos
‘Pesquisa’ e ‘Desenvolvimento’, simultaneamente
12/10/2009
Operações de Agregamento
● Inclui funções ou operações aplicadas a um conjunto ou grupo de tuplas.
● Funções básicas:○ Contar○ Soma○ Média○ Mínimo○ Máximo
12/10/2009
Operações de Agregamento
● O agrupamento pode ser feito com base na aplicação da função de agregamento a todo o conjunto de tuplas da relação ou a um grupo de conjuntos de tuplas, obtido a partir de valores para uma lista de atributos.
12/10/2009
Operações de Agregamento
● Notação (“script F”):○ R � <atributos de agrupamento> ℱ <lista de funções> (S)
■ Onde:■ <atributos de agrupamento> é uma lista de
atributos da relação S■ <lista de funções> é uma lista de pares: <função>
<atributo>, onde a função é uma das permitidas pelas operações de agregação.
12/10/2009
Operações de Agregamento
● Exemplo:○ Listar o número de candidatos inscritos no
concurso: R (candidatos) � ℱ contar(*) (CANDIDATO)
12/10/2009
Operações de Agregamento
● Exemplo:○ Listar quantos professores doutores estarão
aptos para avaliar trabalhos: S � σTitulação em (‘Doutor’,’Doutora’)(PROFESSOR)
R (candidatos) � ℱ contar(*) (S)
12/10/2009
Operações de Agregamento
● Exemplo:○ Listar quantas avaliações foram realizadas
para cada professor avaliador: R (professor,total) � professor ℱ contar(*)
(AVALIACAO)
12/10/2009
Operações de Agregamento
● Exemplo:○ Listar o nome do aluno que obteve a maior
nota de todas as avaliações realizadas: S (maior_nota) � ℱ máximo(nota) (AVALIACAO)
T � S ⋈ nota=maior_nota AVALIACAO
U � CANDIDATO * T R (Candidato) � π nome (U)
12/10/2009
Operações de Agregamento● Exercícios:
○ Elabore consultas utilizando operadores da Álgebra Relacionais para listar:
1. O nome do empregado mais jovem da empresa2. O nome do departamento que controla o maior número de
projetos3. O total de horas trabalhadas nos projetos, por empregado4. O nome do empregado que possui maior número de
dependentes5. As quantidades de empregados dos sexos masculino e
feminino que trabalham na empresa6. O nome do departamento que mais gasta com pagamento
de salários da empresa
12/10/2009
Outras Operações
● Junção Externa:○ Nas junções, apenas as tuplas de ambas as
relações envolvidas que satisfazem à condição de junção são retornadas na consulta.
○ Há casos em que para uma relação seja necessário recuperar suas tuplas, mesmo que estas não satisfaçam à condição de junção.
○ Para isto, utilizamos a operação de “junção externa” (“outter join”)
12/10/2009
Outras Operações
● Junção Externa:○ Pode ser aplicada:
■ Na relação à esquerda da junção (“left outer join”)
■ Na relação à direita da junção (“right outer join”)
■ Em ambas as relações, à esquerda e à direita da junção (“full outer join”)
12/10/2009
Outras Operações
● Junção Externa:○ Notação:
■ “left outer join”: R � S T■ “right outer join”: R � S T■ “full outer join”: R � S T
12/10/2009
Outras Operações
● Junção Externa:○ Exemplo:
■ Listar as notas das provas didáticas por candidato:
S � σTipo = ‘Didática’ (AVALIACAO)
T � π Inscrição,Nota (S)
U � π Inscrição,Nome (CANDIDATO)
R � π Nome,Nota (U U.Inscrição=T.Inscrição T)
12/10/2009
Junção Externa
● Exercícios:○ Elabore consultas utilizando operadores
da Álgebra Relacionais para listar:1. O nome de cada empregado da empresa e,
se for o caso, o departamento que o mesmo gerencia
2. Os nomes dos empregados do departamento ‘Informática’ e de suas esposas, caso estas estejam cadastradas como suas dependentes