Post on 04-Jul-2020
GBC043 – Sistemas de Banco de DadosÁlgebra e Cálculo Relacional
Ilmério Reis da Silva
ilmerio@facom.ufu.br
www.facom.ufu.br/~ilmerio/sbdUFU/FACOM
FACOM/UFU Página:2
Álgebra e Cálculo Relacional e o Modelo R
• São as linguagens formais do Modelo R• Álgebra Relacional (AR): conjunto básico de operações do Modelo R• Expressão da Álgebra Relacional: uma sequência de operações da
AR• Usada na implementação de consultas por processadores de
consultas dos SGBD Relacionais• Cálculo Relacional (CR): uma linguagem declarativa formal
FACOM/UFU Página:3
Álgebra e Cálculo Relacional - Notação
• R: uma relação• F: uma fórmula do cálculo de predicados de primeira ordem, i.e.:
Alfabeto de símbolos: variáveis, constantes, funções, símbolos de predicados, parêntesis, conectivos lógicos (∧, ∨, ¬, →, ↔) e quantificadores (∃, ∀)
Termo: é uma constante ou variável. Sendo f uma função n-ária e t1, t2, ..., tn termos, então f(t1, t2, ..., tn) também é um termo
Fórmula atômica: P(t1, t2, ..., tn ) onde P é um símbolo de predicado n-ário
Fórmula bem formada(fbf): se wi e wj são fbfs então também são fbfs: (wi ); ¬(wi ); (wi ) ∧ (wj ); (wi ) ∨ (wj ); (wi ) → (wj ); (wi ) ↔ (wj ); Obs: As variáveis em fbf podem ser livres ou vinculadas a
um dos dois quantificadores ∃, ∀
FACOM/UFU Página:4
Álgebra Relacional (AR)
FACOM/UFU Página:5
Álgebra Relacional - Fundamentos
• Operações derivadas da teoria de conjuntos são definidas sobre relações
• Operadores fundamentais: UNÁRIOS: seleção, projeção BINÁRIOS: união, diferença, produto cartesiano
• Operadores adicionais: intersecção, junção θ , junção natural, semijunção, quociente
• Outros operadores: junção externa, união externa, fecho transitivo;
FACOM/UFU Página:6
Álgebra Relacional - Seleção
Def. a Seleção σF(R) retorna o subconjunto de tuplas de R que satisfazem a fórmula F. Pode ser vista como uma partição horizontal de R.
• F é chamado predicado da seleção• F contêm termos do tipo (A θ c) ligados por
conectores onde A é um atributo de R θ é um dos seguintes operadores: <, >, =, ≠, ≤, ≥ c uma constante conectores podem ser ∧, ∨, ¬
FACOM/UFU Página:7
AR – Seleção - Exemplo 1
σtitle=‘Mech.Eng.’(emp)
ENO ENAME TITLE
E3 A. Lee Mech. Eng.
E7 R. Davis Mech. Eng.
FACOM/UFU Página:8
AR – Seleção - Exemplo 2
σdno=4 ∧ sakart > 25000(employee)
FACOM/UFU Página:9
Álgebra Relacional - Projeção
Def. a Projeção π A,B (R) retorna o subconjunto de colunas, no caso {A, B} de R. Pode ser vista como uma partição vertical de R..
Exemplo Projeção: π pno, budget(proj)
FACOM/UFU Página:10
AR – Projeção - Considerações
• O resultado é um conjunto de tuplas distintas logo,
π lname, pname, salary(employee)
É diferente do resultado de
SELECT lname, pname, salary FROM employee
FACOM/UFU Página:11
AR – Sequência de operações
• Como recuperar o nome e salario dos funcionários do departamento 5?
– Alternativa 1: expressão da AR
π lname, pname, salary(σdno=5(employee)) – Alternativa 2: sequência explícita de
operações
EDEP5←σdno=5(employee)
RESUL←π lname, pname, salary(EDEP5)
FACOM/UFU Página:12
AR – Renomeando atributos/relação
R(unome,pnome,salario) ← π lname, pname, salary(EDEP5)Operação renomear, denotada por ρ: Renomeando a relação: ρS(R) Renomeando os atributos: ρunome,pnome, salario(R) Renomeando a relação e seus atributos: ρS(unome,pnome, salario)(R)
FACOM/UFU Página:13
Álgebra Relacional - União
Def. a União R ∪ S retorna o conjunto das tuplas que estão em R ou que estão em S, considerando os esquemas de R e S compatíveis
FACOM/UFU Página:14
Álgebra Relacional – União - Exemplo
Recuperar o ssn dos empregados lotados no departamento 5 ou que supervisionam diretamente um empregado do departamento 5
EDEP5 ← σdno=5(employee)
R1 ← πssn(EDEP5)
R2 ← πsupersn(EDEP5)
R ← R1 ∪ R2
FACOM/UFU Página:15
AR – Operações binárias com conjuntos
Considerações sobre a União, Intersecção e Diferença ou subtração.
Def. Compatibilidade de tipo:
Duas relações R(A1, A2,... An) e S(B1, B2,... Bm) são compatíveis se tiverem o mesmo grau, i.e. m=n, e para todo 1 ≤ i ≤ n dom(Ai)=dom(Bi).
FACOM/UFU Página:16
Álgebra Relacional - Diferença
Def. a Diferença R - S retorna o conjunto das tuplas que estão em R mas não estão em S
FACOM/UFU Página:17
Álgebra Relacional - Intersecção
Def. A Intersecção R∩ S retorna o conjunto das tuplas que estão em R e em S
FACOM/UFU Página:18
Álgebra Relacional - Produto Cartesiano
Def. o Produto Cartesiano R x S retorna o conjunto de tuplas formadas pela concatenação de cada tupla de R com todas as tuplas de S.
Sendo (r, s) os graus das relações (R, S), respectivamente,
(R x S) será uma relação de grau r+s
FACOM/UFU Página:19
Álgebra Relacional - Produto Cartesiano - Exemplo
FACOM/UFU Página:20
AR – Conjunto completo de operações
O conjunto de operações {σ, π, ∪, ρ, -, x} é um
conjunto completo, ou seja, qualquer operação da AR pode ser expresas como uma sequência dessas operações, por exemplo:
FACOM/UFU Página:21
Álgebra Relacional - Junção Def. a Junção θ é denotada por R⋈F S e
pode ser definida como σF(R x S), onde F é do tipo (R.A θ S.B) sendo A e B atributos de R e S respectivamente. Também chamada junção interna (inner join)
Se F é do tipo (R.A=S.B) a junção θ é chamada equijunção.
Se F é do tipo (R.A=S.A) e dom(R.A)=dom(S.A), então a equijunção é chamada junção natural. Em junção natural haverá uma projeção no resultado final, aparecendo apenas uma das duas colunas de F.
A junção natural pode ser denotada por R⋈A S
FACOM/UFU Página:22
Álgebra Relacional - Junção - Exemplo
FACOM/UFU Página:23
Álgebra Relacional – Junção Externa Def. a Junção Externa (outer join) entre R e S mantem na
relação resultante tuplas que não têm correspondência na junção, sendo:
- Junção externa à esquerda, R _⋈ S, mantêm tuplas de R sem correspondência em S com NULLS nos atributos de S
- Junção externa à direita, R ⋈_ S, mantêm tuplas de S sem correspondência em R com NULLS nos atributos de R
- Junção externa completa, R _⋈_S, mantêm tuplas de R e S sem correspondência com S e R, respectivamente, com NULLS nos atributos de S e R, respectivamente.
FACOM/UFU Página:24
Álgebra Relacional – Semi Junção
Def. a Semi junção R⋉F S é definida por π R (R ⋈F S) e retorna o subconjunto das tuplas de R que participam de R⋈F S
• É utilizada para reduzir acesso a disco em BD centralizado e como estratégia para reduzir comunicação em BD Distribuídos
FACOM/UFU Página:25
Álgebra Relacional – Divisão Def . a Divisão R÷ S, sendo (r, s) os graus das
relações (R, S), respectivamente, com r > s > 0, retorna o conjunto das (r-s)-tuplas t tais que para toda s-tupla u de S a r-tupla tu, formada pela concatenação de t e u, está em R.
Sendo A o conjunto de atributos de R que não estão em S, então:
R÷ S = πA (R) - πA ((πA(R) x S) – R)
FACOM/UFU Página:26
Álgebra Relacional – Divisão - Exemplo
Na Divisão (ASG’ ÷ PROJ’) o resultado é o conjunto detuplas <ENO> tais que para toda <PNO, PNAME, BUDGET> de PROJ’ existe a tupla <ENO,PNO,PNAME,BUDGET> em ASG’.
ASG’ ASG’ ÷ PROJ’PROJ’
OBS: A palavra-chave é “toda”.
Somente E3 trabalha no dois projetos de PROJ’, i.e. P3 e P4
ENO
E3
FACOM/UFU Página:27
Álgebra Relacional – Divisão passo a passo - 1Divisão ASG’ ÷ PROJ’=
πENO ASG’ - πENO [[(πENO ASG’) x PROJ’] – ASG’]
ENO
E1
E2
E3
E4
E5
E6
E7
E8
FACOM/UFU Página:28
Álgebra Relacional – Divisão passo a passo - 2Divisão ASG’ ÷ PROJ’=
πENO ASG’ - πENO [[(πENO ASG’) x PROJ’] – ASG’]
FACOM/UFU Página:29
Álgebra Relacional – Divisão passo a passo - 3Divisão ASG’ ÷ PROJ’=
πENO ASG’ - πENO [[(πENO ASG’) x PROJ’] – ASG’]
FACOM/UFU Página:30
Álgebra Relacional – Divisão passo a passo - 4Divisão ASG’ ÷ PROJ’=
πENO ASG’ - πENO [[(πENO ASG’) x PROJ’] – ASG’]
ENO
E1
E2
E4
E5
E6
E7
E8
ENO
E1
E2
E3
E4
E5
E6
E7
E8
ENO
E3
- =
FACOM/UFU Página:31
Álgebra Relacional - Expressões
Seja o BD
FACOM/UFU Página:32
Álgebra Relacional – Expressões – Exemplo 1
Qual o nome dos funcionários que trabalham no projeto “CAD/CAM” ?
πENAME(((σPNAME=‘CAD/CAM’PROJ) ⋈PNO ASG) ⋈ENO EMP)
Uma solução com relações intermediários menores é:
πENAME(EMP⋉ENO (πENO(ASG ⋉PNO (σPNAME=‘CAD/CAM’PROJ)))
FACOM/UFU Página:33
Álgebra Relacional – Expressões – Exemplo 2
Atualizar o salário dos programadores (TITLE=‘Programmer’) para 25000.
(PAY – (σTITLE=‘Programmer’PAY)) ∪ (<Programmer, 25000>)
FACOM/UFU Página:34
Álgebra Relacional–Árvore de Consulta
Def. uma árvore de consulta é uma estrutura de dados em árvore que representa uma expressão da álgebra relacional.
Seja a expressão:
FACOM/UFU Página:35
AR–Árvore de Consulta- Exemplo
FACOM/UFU Página:36
AR–Outras operações–Projeção Generalizada
Projeção generalizada: uso de expressões aritméticas
FACOM/UFU Página:37
AR–Outras op.– Agregação e Agrupamento
Funções de agregação e agrupamento
FACOM/UFU Página:38
AR–Outras op.– Fecho transitivo
Como recuperar o ssn dos empregados da hierarquia de um supervisor
Necessita um mecanismo de Loop ou Recursão que não está especificado na AR
Veremos...
FACOM/UFU Página:39
Álgebra Relacional – Exercícios
Ver [EN] capítulo 6
FACOM/UFU Página:40
Cálculo Relacional - CR
FACOM/UFU Página:41
Fundamentos do Cálculo Relacional
• Linguagem declarativa• Cálculo Relacional de Tupla é
semelhante ao SQL• Cálculo Relacional de Domínio
semelhante ao QBE (Query By Example)
FACOM/UFU Página:42
Cálculo Relacional de Tupla - CRT
Def. no Cálculo Relacional de Tupla uma variável t é interpretada como uma tupla qualquer e a consulta é:
{t|F(t)} ou {t.A1, t.A2, ..., t An |F(t1, t2, …, tn,, tn+1, tn+2, ..., tn+m)}
onde: F é uma fórmula com átomos do tipo:
– R(t) ou R.t– (ti.A θ tj.B) : A e B atributos das relações onde ti e tj
variam respectivamente eθ Є {<, >, =, ≠, ≤, ≥ }– (c θ tj.B) ou (ti.A θ c)
Cada átomo é avaliado como true ou false, R.t é true se t é tupla de R e false cc
A fórmula F é composta por átomos conectados pelos operadores booleanos AND, OR e NOT seguindo as seguintes regras:
FACOM/UFU Página:43
Cálculo Relacional de Tupla - CRT
Regra 1) todo átomo é uma fórmulaRegra 2) se F1 e F2 são fórmulas então também são:
( F1 AND F2 ), (F1 OR F2 ), NOT(F1) e NOT(F2 )
Além disso as variáveis podem ser livres ou ligadas por meio dos quantificadores ∃, ∀ .
Regra 3) se F é uma fórmula então tambem é (∃ t) (F), que é verdadeira se para alguma tupla atribuida a t F for verdadeira cc é falsa
Regra 4) se F é uma fórmula então tambem é (∀ t) (F) que é verdadeira se para toda tupla atribuída a t F for verdadeira cc é falsa
FACOM/UFU Página:44
CRT e SQL – Exemplo 1
{t | emp(t) AND t.title= ‘Mech.Eng.’}
O SQL é uma linguagem declarativa baseada no cálculo relacional de tupla. Veja a semelhança
SELECT * FROM emp t WHERE t.title = ‘Mech.Eng.’
FACOM/UFU Página:45
CRT e SQL – Exemplo 2
Q0: Recuperar (data de nascimento, endereço) do funcionário cujo nome é João Batista
{t.birthdate, t.address | emp(t) AND t.name = 'João Batista'}
SELECT t.birthdate, t.address FROM emp t WHERE t.name = 'João Batista'
FACOM/UFU Página:46
CRT – Exemplo 3
Q1: Listar o nome e o endereço dos funcionários que trabalham para o departamento 'Pesquisa'
{t.pname, t.lname, t.address | employee(t) AND (∃ d)(department(d))
AND d.dname = 'Pesquisa' AND d.dnumber=t.dno}
Obs.: as variáveis livres na consulta devem aparecer antes da barra vertical |
FACOM/UFU Página:47
CRT e SQL – Exemplo 3
Q1: Listar o nome e o endereço dos funcionários que trabalham parao departamento 'Pesquisa'
{t.pname, t.lname, t.address | employee(t) AND (∃ d)(department(d))
AND d.dname = 'Pesquisa'
AND d.dnumber=t.dno}
SELECT t.pname, t.lname, t.address
FROM employee t, department d
WHERE d.dname = 'Pesquisa'
AND d.dnumber=t.dno
FACOM/UFU Página:48
CRT – Outros exemplos - Q2
Q2: Listar o número do projeto, o número do departamento que o controla, o sobrenome, data de nascimento e o endereço do funcionário que controla o departamento para projetos localizados em “Mauá”
FACOM/UFU Página:49
CRT – Outros exemplos – Q0'
Q0': Listar os nomes dos funcionários que trabalham em algum projeto controlado pelo departamento 5
FACOM/UFU Página:50
CRT – Outros exemplos Q4
Q4: Listar o número dos projetos que envolvem um funcionário cujo nome é 'Silva', seja como trabalhador ou como gerente de um departamento que controla o projeto.
FACOM/UFU Página:51
CRT – Transfomação de quantificadores
FACOM/UFU Página:52
CRT – Implicação
FACOM/UFU Página:53
CRT – Usando o quantificador universal
Q3: Listar os nomes dos funcionários que trabalham em todos os projetos controlados pelo departamento 5
{f.lname, f.fname | employee(f) AND ((∀ p)(NOT (project(p)) OR NOT (p.dnum=5)
OR ((∃ t)(works_on(t) AND t.essn=f.ssn
AND p.pnumber=t.pno))))}Ou (vide [RG, pg 102]
{f.lname, f.fname | employee(f) AND ((∀ p)((project(p)) AND (p.dnum=5) AND ((∃ t)(works_on(t) AND t.essn=f.ssn
AND p.pnumber=t.pno))))}
FACOM/UFU Página:54
CRT – Substituindo pelo quantificador existencial
Q3: Listar os nomes dos funcionários que trabalham em todos os projetos controlados pelo departamento 5
{f.lname, f.fname | employee(f) AND (NOT (∃ p) (project(p) AND (p.dnum=5)
AND (NOT (∃ t)(works_on(t) AND t.essn=f.ssn
AND p.pnumber=t.pno))))}
FACOM/UFU Página:55
CRT – Expressões segura e insegura
Def. Uma expressão segura no cálculo relacional é aquela que gera como resultado um número finito de tuplas, caso contrário é chamada expressão insegura
Exemplo de expressão insegura: {t | NOT (employee(t))}
Obs.: Definimos domínio da expressão como o conjunto de constantes ou tuplas de relações mencionadas na expressão. Logo, o resultado da expressão acima inclui tuplas que não estão no domínio da expressão, tornando-a insegura.
FACOM/UFU Página:56
Cálculo Relacional de DomínioCálculo Relacional de Domínio: uma variável x é
interpretada como um valor em um domínioConsulta:{x1, x2, ..., xn | F(x1, x2, ..., xn+1, xn+2, ..., xn+m)}• F é uma fbf, análoga ao CRT, onde x1, x2, ..., xn são
variáveis livres• Exemplo: {ENO, ENAME | EMP(ENO,ENAME,
“Mech.Eng.”)}
• O QBE(query by example) é uma linguagem declarativa baseado no Cálculo Relacional de Domínio. Semelhantemente as interfaces gráficas do ‘MS Access’ e do ‘Borland Paradox’
FACOM/UFU Página:57
CRD – Exemplo Q0
Q0: Listar a data de nascimento e o endereço do funcionario cujo nome é 'João B Silva'
{u, v | (∃ q)(∃ r)(∃ s)(∃ t)(∃ w)(∃ x)(∃ y)(∃ z)
( employee(q,r,s,t,u,v,w,x,y,z) AND q='João' AND AND r='B' AND s='Silva')}
Obs.: cada variável percorre o domínio de um atributo
FACOM/UFU Página:58
CRD – Exemplo Q0A – Notação QBE
Q0: Listar a data de nascimento e o endereço do funcionario cujo nome é 'João B Silva'
No QBE as condições são inseridas diretamente no esquema da relação. Além disso, considere nos exemplos subsequentes que as variáveis que não aparecem antes da | e que não são usadas em condições estão automaticamente quantifiadas com ∃
{u, v | employee('João', 'B', 'Silva', t,u,v,w,x,y,z)}
FACOM/UFU Página:59
CRD – Exemplo Q1
Q1: Listar o nome e o endereço de todos os funcionários que trabalham para o departamento 'Pesquisa'
{q, s, v | (∃ z)(∃ l)(∃ m)
( employee(q,r,s,t,u,v,w,x,y,z) AND deparment(l,m,n,o) AND l='Pesquisa' AND m=z)}
FACOM/UFU Página:60
CRD – Exemplo Q2
Q1: Listar o número do projeto, o número do departamento que o controla, o último nome, data de nascimento e endereço do gerente do departamento que controla projetos localizados em 'Mauá'
{i, k, s, u, v | (∃ j)(∃ l)(∃ m)(∃ n)(∃ t) (project(h,i,j,k)
AND employee(q,r,s,t,u,v,w,x,y,z) AND deparment(l,m,n,o) AND k=l AND j='Mauá' AND n=t)}
FACOM/UFU Página:61
CRD – Exemplo Q7
Q1: Listar o nome dos gerentes que têm pelo menos um dependente
{s, q | (∃ t)(∃ n)(∃ h) employee(q,r,s,t,u,v,w,x,y,z) AND deparment(l,m,n,o) AND dependent(h,i,j,k) AND t=n AND t=h)}
FACOM/UFU Página:62
Cálculo Relacional – Exercícios
Ver [EN] capítulo 6
FACOM/UFU Página:63
FIM – Álgebra e Cálculo Relacional
FIM