0% acharam este documento útil (0 voto)
25 visualizações131 páginas

Document 3

O documento aborda a modelagem conceitual e o projeto de banco de dados, focando na álgebra relacional e no cálculo relacional. Os principais objetivos incluem a realização de consultas utilizando álgebra relacional e cálculo relacional, além de apresentar operadores como seleção, projeção, união, interseção, diferença e produto cartesiano. A aula também introduz o uso do programa RelaX para aplicar consultas em álgebra relacional.

Enviado por

ingrid-do-prado
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Tópicos abordados

  • Recuperação de Atributos,
  • Sintaxe de Consultas,
  • Produto Cartesiano,
  • Consultas de Subconjuntos,
  • Teoria dos Conjuntos,
  • Interseção,
  • SGBD,
  • Junção Interna,
  • Projeção,
  • Consultas de União
0% acharam este documento útil (0 voto)
25 visualizações131 páginas

Document 3

O documento aborda a modelagem conceitual e o projeto de banco de dados, focando na álgebra relacional e no cálculo relacional. Os principais objetivos incluem a realização de consultas utilizando álgebra relacional e cálculo relacional, além de apresentar operadores como seleção, projeção, união, interseção, diferença e produto cartesiano. A aula também introduz o uso do programa RelaX para aplicar consultas em álgebra relacional.

Enviado por

ingrid-do-prado
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Tópicos abordados

  • Recuperação de Atributos,
  • Sintaxe de Consultas,
  • Produto Cartesiano,
  • Consultas de Subconjuntos,
  • Teoria dos Conjuntos,
  • Interseção,
  • SGBD,
  • Junção Interna,
  • Projeção,
  • Consultas de União

Banco de Dados I

Unidade III - Modelagem conceitual e Projeto de Banco de Dados


‣Álgebra e Cálculo Relacional

Tópico
Danilo Borges da Silva 07
danilo@frn.uespi.br
Objetivos
Ao nal desta aula você será capaz de:
‣ Realizar consultas utilizando álgebra relacional;
‣ Realizar consultas em tuplas utilizando cálculo relacional;

2
fi
Modelo de Dados Relacional
Cronograma
‣ Introdução
‣ Álgera Relacional
‣ Cálculo Relacional

3
Introdução
Modelo Relacional
Manipulação
‣ Existem duas categorias de linguagens
‣ Formais: álgebra relacional e cálculo relacional
‣ Alto nível (comerciais): baseadas nas linguagens formais (SQL)
‣ Características das linguagens formais
‣ Orientadas a conjuntos
‣ Linguagens de base: linguagens relacionais devem ter no mínimo um poder de expressão
equivalente ao de uma linguagem formal
‣ Resultados das consultas são relações

5
Álgebra Relacional
Conceitos
‣ Álgebra desenvolvida para descrever operações sobre uma base de dados relacional
‣ O conjunto de objetos são as relações
‣ Possuem operadores especí cos para consulta e alteração de relações
‣ Os operadores da álgebra relacional recebem uma ou mais relações de entrada e geram uma
nova relação de saída
‣ Utiliza linguagem procedural
‣ Uma expressão na álgebra de ne uma execução sequencial de operadores
‣ A execução de cada operador produz uma relação

6
fi
fi
Álgebra Relacional
Objetivos
‣ Compreendendo álgebra relacional é mais fácil apreender SQL
‣ Não há SGBD que implementa álgebra diretamente como DML (Data Manipulation Language),
mas SQL incorpora cada vez mais conceitos de álgebra
‣ Algoritmos de otimização de consulta são de nidos sobre álgebra (possível uso internamente no
SGBD)

7
fi
Álgebra Relacional
Operadores
‣ Operadores sobre conjuntos (uma tabela é um conjunto de linhas):
‣ União
‣ Interseção
‣ Diferença
‣ Produto Cartesiano
‣ Operadores especí cos da álgebra relacional:
‣ Seleção
‣ Projeção
‣ Junção
‣ Divisão
‣ Renomeação
8
fi
Álgebra Relacional
Operadores

9
Álgebra Relacional
Relax

‣ Para aplicar as consultas realizadas em álgebra relacional utilizaremos o programa RelaX

RelaX - relational algebra calculator


Consulta…
11
Operações Álgebra Relacional

12
Operações Álgebra Relacional
Esquema Relacional

13
Operações Álgebra Relacional
Seleção (σ)
‣ Retorna tuplas que satisfazem uma condição
‣ Age como um ltro que mantém somente as tuplas que satisfazem a condição
‣ Ex.: selecione os funcionários com salário maior que 25000
‣ O resultado:
‣ É uma relação que contém as tuplas que satisfazem a condição
‣ Possui os mesmos atributos da relação de entrada

14
fi
Operações Álgebra Relacional
Seleção (σ)
‣ Retorna tuplas que satisfazem uma condição
‣ Age como um ltro que mantém somente as tuplas que satisfazem a condição
‣ Ex.: selecione os funcionários com salário maior que 25000
‣ O resultado:
‣ É uma relação que contém as tuplas que satisfazem a condição
‣ Possui os mesmos atributos da relação de entrada

15
fi
Operações Álgebra Relacional
Seleção (σ)
‣ Sintaxe: σ<condição de seleção>(R)
‣ σ (sigma): é o símbolo que representa a seleção
‣ <condição de seleção>: é uma expressão booleana que envolve literais e valores de atributos da
relação

‣ R: é o nome de uma relação ou uma expressão da álgebra relacional de onde as tuplas serão
buscadas

16
Operações Álgebra Relacional
Seleção (σ) - Exemplos
1. Selecionar a tupla de FUNCIONARIO cujo departamento é 4.
2. Selecionar a tupla de FUNCIONARIO cujo salário é maior que 25000
3. Selecionar as tuplas para todos os funcionários que ou trabalham no departamento 4 e ganham
mais de R$ 25.000,00 por ano, ou trabalham no departamento 5 e ganham mais de R$ 30.000,00

σDnr=4(FUNCIONARIO)

RelaX - relational algebra calculator


σ Dno=4 (EMPLOYEE)
17
Operações Álgebra Relacional
Esquema Relacional

18
Operações Álgebra Relacional
Esquema Relacional

19
Operações Álgebra Relacional
Seleção (σ) - Exemplos
1. Selecionar a tupla de FUNCIONARIO cujo departamento é 4.
2. Selecionar a tupla de FUNCIONARIO cujo salário é maior que 25000.
3. Selecionar as tuplas para todos os funcionários que ou trabalham no departamento 4 e ganham
mais de R$ 25.000,00 por ano, ou trabalham no departamento 5 e ganham mais de R$ 30.000,00

σSalario>25000(FUNCIONARIO)

RelaX - relational algebra calculator


σ Salary>25000 (EMPLOYEE)
20
Operações Álgebra Relacional
Esquema Relacional

21
Operações Álgebra Relacional
Esquema Relacional

22
Operações Álgebra Relacional
Seleção (σ) - Exemplos
1. Selecionar a tupla de FUNCIONARIO cujo departamento é 4.
2. Selecionar a tupla de FUNCIONARIO cujo salário é maior que 25000.
3. Selecionar as tuplas para todos os funcionários que ou trabalham no departamento 4 e ganham
mais de R$ 25.000,00 por ano, ou trabalham no departamento 5 e ganham mais de R$ 30.000,00

σ(Dnr=4 AND Salario>25000) OR (Dnr=5 AND Salario>30000)(FUNCIONARIO)

RelaX - relational algebra calculator


σ(Dno=4 ∧ Salary>25000) ∨ (Dno=5 ∧ Salary>30000) (EMPLOYEE)
23
Operações Álgebra Relacional
Esquema Relacional

24
Operações Álgebra Relacional
Esquema Relacional

25
Operações Álgebra Relacional
Projeção (π)
‣ Retorna um ou mais atributos de interesse
‣ O resultado:
‣ É uma relação que contém apenas as colunas selecionadas

26
Operações Álgebra Relacional
Projeção (π)
‣ Retorna um ou mais atributos de interesse
‣ O resultado:
‣ É uma relação que contém apenas as colunas selecionadas

27
Operações Álgebra Relacional
Projeção (π)
‣ Sintaxe: π<lista de atributos>(R)
‣ π (pi): é o símbolo que representa a projeção
‣ <lista de atributos>: é uma lista que contém nomes de colunas de uma ou mais relações
‣ R: é o nome de uma relação ou uma expressão da álgebra relacional de onde as tuplas serão
buscadas

28
Operações Álgebra Relacional
Projeção (π) - Exemplos
1. Buscar o sexo, primeiro nome e último nome de funcionário
2. Buscar o primeiro nome e o salário dos empregados que trabalham no departamento 4

πSexo, Pnome, Unome(FUNCIONARIO)

RelaX - relational algebra calculator


π Sex, Fname, Lname (EMPLOYEE)
29
Operações Álgebra Relacional
Esquema Relacional

30
Operações Álgebra Relacional
Esquema Relacional

31
Operações Álgebra Relacional
Projeção (π) - Exemplos
1. Buscar o sexo, primeiro nome e último nome de funcionário
2. Buscar o primeiro nome e o salário dos empregados que trabalham no departamento 4

πPnome,Salario (σDnr=4(FUNCIONARIO))

RelaX - relational algebra calculator


π Fname, Salary (σ Dno=4 (EMPLOYEE))
32
Operações Álgebra Relacional
Esquema Relacional

33
Operações Álgebra Relacional
Esquema Relacional

34
Exercícios
Seleção e Projeção
1. Busque o CPF dos empregados que trabalham no projeto de id 2
2. Selecione o nome do funcionário que trabalham no departamento 5
3. Selecione os CPF dos funcionários que trabalharam mais de 20 horas em algum projeto

35
Operações de Teoria dos Conjuntos

36
Operações de Teoria dos Conjuntos
Introdução
‣ A álgebra relacional utiliza 4 operadores da teoria dos conjuntos:
‣ União, Intersecção, Diferença e Produto Cartesiano
‣ Todos os operadores utilizam ao menos duas relações
‣ As relações devem ser compatíveis:
‣ possuir o mesmo número de atributos
‣ o domínio da i-ésima coluna de uma relação deve ser idêntico ao domínio da i-ésima coluna da
outra relação
‣ Quando os nomes dos atributos forem diferentes, adota-se a convenção de usar os nomes dos
atributos da primeira relação

37
Operações de Teoria dos Conjuntos
Interseção (∩)
‣ Retorna uma relação com as tuplas comuns a R e a S
‣ Notação: R ∩ S

38
Operações de Teoria dos Conjuntos
Interseção (∩)
‣ Retorna uma relação com as tuplas comuns a R e a S
‣ Notação: R ∩ S

R S R∩S

39
Operações de Teoria dos Conjuntos
Interseção (∩) - Exemplo
‣ Buscar os CPF dos funcionários que trabalham no departamento 4 e que ganham mais de R$
25000

πCpf (σDnr=4(FUNCIONARIO)) ∩ πCpf (σSalario>25000(FUNCIONARIO))

RelaX - relational algebra calculator


π Ssn (σ Dno=4 (EMPLOYEE)) ∩ π Ssn (σ Salary>25000 (EMPLOYEE))
40
Operações Álgebra Relacional
Esquema Relacional

41
Operações Álgebra Relacional
Esquema Relacional

42
Operações Álgebra Relacional
Esquema Relacional

43
Operações Álgebra Relacional
Esquema Relacional

44
Operações Álgebra Relacional
Esquema Relacional

45
Operações de Teoria dos Conjuntos
União (∪)
‣ Requer que as duas relações fornecidas como argumento tenham o mesmo esquema.
‣ Resulta em uma nova relação, com o mesmo esquema, cujo conjunto de linhas é a união dos
conjuntos de linhas das relações dadas como argumento.

‣ Retorna a união das tuplas de duas relações R e a S


‣ Eliminação automática de duplicatas
‣ Notação: R ∪ S

46
Operações de Teoria dos Conjuntos
União (∪)
‣ Requer que as duas relações fornecidas como argumento tenham o mesmo esquema.
‣ Resulta em uma nova relação, com o mesmo esquema, cujo conjunto de linhas é a união dos
conjuntos de linhas das relações dadas como argumento.

‣ Retorna a união das tuplas de duas relações R e a S


‣ Eliminação automática de duplicatas
‣ Notação: R ∪ S

R S R∪S

47
Operações de Teoria dos Conjuntos
União (∪) - Exemplo
‣ Buscar os CPF dos funcionários que trabalham no departamento 4 ou que ganham mais de R$
25000

πCpf (σDnr=4(FUNCIONARIO)) ∪ πCpf (σSalario>25000(FUNCIONARIO))

RelaX - relational algebra calculator


π Ssn (σ Dno=4 (EMPLOYEE)) ∪ π Ssn (σ Salary>25000 (EMPLOYEE))
48
Operações Álgebra Relacional
Esquema Relacional

49
Operações Álgebra Relacional
Esquema Relacional

50
Operações Álgebra Relacional
Esquema Relacional

51
Operações Álgebra Relacional
Esquema Relacional

52
Operações Álgebra Relacional
Esquema Relacional

53
Operações de Teoria dos Conjuntos
Diferença (−)
‣ Requer que as duas relações fornecidas como argumento tenham o mesmo esquema.
‣ Resulta em uma nova relação, com o mesmo esquema, cujo conjunto de linhas é o conjunto de
linhas da primeira relação menos as linhas existentes na segunda.

‣ Notação: R − S

54
Operações de Teoria dos Conjuntos
Diferença (−)
‣ Requer que as duas relações fornecidas como argumento tenham o mesmo esquema.
‣ Resulta em uma nova relação, com o mesmo esquema, cujo conjunto de linhas é o conjunto de
linhas da primeira relação menos as linhas existentes na segunda.

‣ Notação: R − S

R S R−S

55
Operações de Teoria dos Conjuntos
Diferença (−) - Exemplo
‣ Buscar os CPF dos funcionários que trabalham no departamento 4 e que não ganham mais de R$
25000

πCpf (σDnr=4(FUNCIONARIO)) − πCpf (σSalario>25000(FUNCIONARIO))

RelaX - relational algebra calculator


π Ssn (σ Dno=4 (EMPLOYEE)) - π Ssn (σ Salary>25000 (EMPLOYEE))
56
Operações Álgebra Relacional
Esquema Relacional

57
Operações Álgebra Relacional
Esquema Relacional

58
Operações Álgebra Relacional
Esquema Relacional

59
Operações Álgebra Relacional
Esquema Relacional

60
Operações Álgebra Relacional
Esquema Relacional

61
Operações de Teoria dos Conjuntos
Produto Cartesiano (×)
‣ Retorna todas as combinações de tuplas de duas relações R e S
‣ O resultado é uma relação cujas tuplas são a combinação das tuplas das relações R e S,
tomando-se uma tupla de R e concatenando-a com uma tupla de S

‣ Notação: R × S

62
Operações de Teoria dos Conjuntos
Produto Cartesiano (×)
‣ Retorna todas as combinações de tuplas de duas relações R e S
‣ O resultado é uma relação cujas tuplas são a combinação das tuplas das relações R e S,
tomando-se uma tupla de R e concatenando-a com uma tupla de S

‣ Notação: R × S

63
Operações de Teoria dos Conjuntos
Produto Cartesiano (×)
‣ Retorna todas as combinações de tuplas de duas relações R e S
‣ O resultado é uma relação cujas tuplas são a combinação das tuplas das relações R e S,
tomando-se uma tupla de R e concatenando-a com uma tupla de S

‣ Notação: R × S

Total de atributos do produto cartesiano:


Número de Atributos de R + Número de Atributos de S

Total de tuplas do produto cartesiano:


Número de Tuplas de R × Número de Tuplas de S

64
Operações de Teoria dos Conjuntos
Produto Cartesiano (×) - Exemplo

R S R×S
Total de atributos do produto cartesiano:
2+3

Total de tuplas do produto cartesiano:


3×2

65
Operações de Teoria dos Conjuntos
Produto Cartesiano (×) - Exemplo
‣ Suponha que queiramos recuperar a lista dos nomes dos dependentes de cada funcionária.

( ( ) )
πPnome, Unome, Nome_dependente σ(Cpf = Fcpf) πPnome, Unome, Cpf (σSexo = 'F'(FUNCIONARIO) × DEPENDENTE

RelaX - relational algebra calculator


π Fname, Lname, Dependent_name (σ (Ssn=Essn) (π Fname,Lname,Ssn (σ Sex='F' (EMPLOYEE)) ⨯ DEPENDENT))
66
Operações de Teoria dos Conjuntos
Produto Cartesiano (×) - Exemplo
‣ Buscar o nome dos médicos que têm consulta marcada e as datas das suas consultas:
‣ Medico(CRM, nome, idade, cidade, especialidade)
‣ Consulta (#CRM, #RG, data, hora) (# indica foreign key)

πmedico.nome,consulta.data (σmedico.CRM=consulta.CRM(Medico × Consulta))

67
Exercícios
Operações de Teoria dos Conjuntos
Dado o seguinte esquema relacional responda as perguntas seguintes:
Ambulatorio (numeroA, andar, capacidade)
Medico (CRM, nome, idade, cidade, especialidade, #numeroA)
Paciente(RG, nome, idade, cidade, doenca)
Consulta(#CRM, #RG, data, hora)
Funcionario(RG, nome, idade, cidade, salario)

1. Buscar os dados dos pacientes que estão com sarampo


2. Buscar os dados dos médicos ortopedistas com mais de 40 anos
3. Buscar os dados das consultas, exceto aquelas marcadas para os médicos com CRM 46 e 79
4. Buscar os dados dos ambulatórios do quarto andar que ou tenham capacidade igual a 50 ou
tenham número superior a 10

68
Exercícios
Operações de Teoria dos Conjuntos
Dado o seguinte esquema relacional responda as perguntas seguintes:
Ambulatorio (numeroA, andar, capacidade)
Medico (CRM, nome, idade, cidade, especialidade, #numeroA)
Paciente(RG, nome, idade, cidade, doenca)
Consulta(#CRM, #RG, data, hora)
Funcionario(RG, nome, idade, cidade, salario)

5. Buscar o nome e a especialidade de todos os médicos


6. Buscar o número dos ambulatórios do terceiro andar
7. Buscar o CRM dos médicos e as datas das consultas para os pacientes com RG 122 e 725
8. Buscar os números dos ambulatórios, exceto aqueles do segundo e quarto andares, que
suportam mais de 50 pacientes

69
Exercícios
Operações de Teoria dos Conjuntos
Dado o seguinte esquema relacional responda as perguntas seguintes:
Ambulatorio (numeroA, andar, capacidade)
Medico (CRM, nome, idade, cidade, especialidade, #numeroA)
Paciente(RG, nome, idade, cidade, doenca)
Consulta(#CRM, #RG, data, hora)
Funcionario(RG, nome, idade, cidade, salario)

9. Buscar o nome dos médicos que têm consulta marcada e as datas das suas consultas
10.Buscar o número e a capacidade dos ambulatórios do quinto andar e o nome dos médicos que
atendem neles
11.Buscar o nome dos médicos e o nome dos seus pacientes com consulta marcada, assim como a
data destas consultas
12.Buscar os nomes dos médicos ortopedistas com consultas marcadas para o período da manhã
(7hs-12hs) do dia 15/04/03
70
Operações Álgebra Relacional
Junção

‣ Retorna a combinação de tuplas de duas relações R e S que satisfazem um predicado


‣ É a Seleção combinada com Produto Cartesiano
‣ Como esta é uma operação muito comum, foi criada uma forma de simpli car a sequência de
operações necessárias para realização de uma consulta.

71

fi
Operações Álgebra Relacional
Junção

‣ Retorna a combinação de tuplas de duas relações R e S que satisfazem um predicado


‣ É a Seleção combinada com Produto Cartesiano
‣ Como esta é uma operação muito comum, foi criada uma forma de simpli car a sequência de
operações necessárias para realização de uma consulta.
‣ Sintaxe:
‣ S ⋈<critério> R
‣ Onde <critério> é a expressão booleano envolvendo os literais e valores de atributos das duas
tabelas

72

fi
Operações Álgebra Relacional
Junção - Exemplo
‣ Listar o nome de cada gerente por projeto

RelaX - relational algebra calculator


PROJECT ⨝ (Dnum=Dnumber) DEPARTMENT ⨝ (Mgr_ssn=Ssn) EMPLOYEE
73
Operações Álgebra Relacional
Junção - Exemplo
‣ Buscar o número dos ambulatórios e o nome dos médicos que atendem neles

πambulatorio.numeroA, medico.nomeAmbulatorio ⋈(ambulatorio.numeroA=medico.numeroA) Medico

Ambulatorio (numeroA, andar, capacidade)


Medico (CRM, nome, idade, cidade, especialidade, #numeroA)
Paciente(RG, nome, idade, cidade, doenca)
Consulta(#CRM, #RG, data, hora)
Funcionario(RG, nome, idade, cidade, salario)
74
Operações Álgebra Relacional
Junção Natural

‣ Na junção natural o ⋈ possui uma igualdade prede nida, ou seja, entre todos os atributos de
mesmo nome presentes em duas relações R e S(atributos de junção) será automaticamente
realizada a igualdade. Estes atributos só aparecem uma vez no resultado
‣ Sintaxe:
‣ S⋈R
‣ Onde <critério> é a expressão booleano envolvendo os literais e valores de atributos das duas
tabelas

75
fi
Operações Álgebra Relacional
Junção Natural - Exemplo
‣ Buscar o número dos ambulatórios e o nome dos médicos que atendem neles. Aqui não é preciso
especi car o atributo numeroA na relação, pois aparecem nas duas tabelas relacionadas.

πambulatorio.numeroA, medico.nomeAmbulatorio ⋈(ambulatorio.numeroA=medico.numeroA) Medico

Ambulatorio (numeroA, andar, capacidade)


Medico (CRM, nome, idade, cidade, especialidade, #numeroA)
Paciente(RG, nome, idade, cidade, doenca)
Consulta(#CRM, #RG, data, hora)
Funcionario(RG, nome, idade, cidade, salario)
76
fi
Operações Álgebra Relacional
Junção Natural - Exemplo
‣ Buscar o número dos ambulatórios e o nome dos médicos que atendem neles. Aqui não é preciso
especi car o atributo numeroA na relação, pois aparecem nas duas tabelas relacionadas.

πambulatorio.numeroA, medico.nomeAmbulatorio ⋈(ambulatorio.numeroA=medico.numeroA) Medico

πambulatorio.numeroA, medico.nomeAmbulatorio ⋈ Medico

Ambulatorio (numeroA, andar, capacidade)


Medico (CRM, nome, idade, cidade, especialidade, #numeroA)
Paciente(RG, nome, idade, cidade, doenca)
Consulta(#CRM, #RG, data, hora)
Funcionario(RG, nome, idade, cidade, salario)
77
fi
Operações Álgebra Relacional
Junção Externa (outer join)
‣ Na junção eterna é de nida se as tuplas de uma ou ambas as relações que não são combinadas
serão preservadas no resultado, ou seja, se serão apresentadas mesmo na ausência de uma
combinação.
‣ Tipos:
‣ Junção externa à esquerda (left [outer] join)
‣ Junção externa à direita (right [outer] join)
‣ Junção externa completa (full [outer] join)

78
fi
Operações Álgebra Relacional
Junção Externa (outer join)
‣ Na junção eterna é de nida se as tuplas de uma ou ambas as relações que não são combinadas
serão preservadas no resultado, ou seja, se serão apresentadas mesmo na ausência de uma
combinação.
‣ Tipos:
‣ Junção externa à esquerda (left [outer] join). Notação: R⟕S
‣ Junção externa à direita (right [outer] join). Notação: R⟖S
‣ Junção externa completa (full [outer] join). Notação: R⟗S

79
fi
Operações Álgebra Relacional
Entendendo cada Junção
R
Nome Chave
Élito 1
Zé 3
Aléqui 4
Zefa 8

S
Profissao Chave
Agricultor(a) 1
Empresário(a) 3
Professor(a) 5
Engenheiro(a) 8
80
Operações Álgebra Relacional
Entendendo cada Junção
R
Nome Chave R NULL
Élito 1
Zé 3
R . Chave = S . Chave
Aléqui 4
Zefa 8
NULL S

S
Profissao Chave
Agricultor(a) 1
Empresário(a) 3
Professor(a) 5
Engenheiro(a) 8
81
(Inner) Join
Entendendo cada Junção
R
Nome Chave R NULL
Élito 1
Zé 3
R . Chave = S . Chave
Aléqui 4
Zefa 8
NULL S

S
Profissao Chave
Agricultor(a) 1
Empresário(a) 3
Professor(a) 5
Engenheiro(a) 8
82
(Inner) Join
Entendendo cada Junção
R
Nome Chave R NULL
Élito 1
Zé 3
R . Chave = S . Chave
Aléqui 4
Zefa 8
NULL S

S
R⋈S
Profissao Chave
R.Nome R.Chave S.Profissao S.Chave
Agricultor(a) 1
Élito 1 Agricultor(a) 1
Empresário(a) 3
Zé 3 Empresário(a) 3
Professor(a) 5
Zefa 8 Engenheiro(a) 8
Engenheiro(a) 8
83
Left (Outer) Join
Entendendo cada Junção
R
Nome Chave R NULL
Élito 1
Zé 3
R . Chave = S . Chave
Aléqui 4
Zefa 8
NULL S

S
Profissao Chave
Agricultor(a) 1
Empresário(a) 3
Professor(a) 5
Engenheiro(a) 8
84
Left (Outer) Join
Entendendo cada Junção
R
Nome Chave R NULL
Élito 1
Zé 3
R . Chave = S . Chave
Aléqui 4
Zefa 8
NULL S

S R⟕S
Profissao Chave R.Nome R.Chave S.Profissao S.Chave
Agricultor(a) 1 Élito 1 Agricultor(a) 1
Empresário(a) 3 Zé 3 Empresário(a) 3
Professor(a) 5 Aléqui 4 NULL NULL
Engenheiro(a) 8 Zefa 8 Engenheiro(a) 8
85
Right (Outer) Join
Entendendo cada Junção
R
Nome Chave R NULL
Élito 1
Zé 3
R . Chave = S . Chave
Aléqui 4
Zefa 8
NULL S

S
Profissao Chave
Agricultor(a) 1
Empresário(a) 3
Professor(a) 5
Engenheiro(a) 8
86
Right (Outer) Join
Entendendo cada Junção
R
Nome Chave R NULL
Élito 1
Zé 3
R . Chave = S . Chave
Aléqui 4
Zefa 8
NULL S

S R⟖S
Profissao Chave R.Nome R.Chave S.Profissao S.Chave
Agricultor(a) 1 Élito 1 Agricultor(a) 1
Empresário(a) 3 Zé 3 Empresário(a) 3
Professor(a) 5 NULL NULL Professor(a) 5
Engenheiro(a) 8 Zefa 8 Engenheiro(a) 8
87
Full (Outer) Join
Entendendo cada Junção
R
Nome Chave R NULL
Élito 1
Zé 3
R . Chave = S . Chave
Aléqui 4
Zefa 8
NULL S

S
Profissao Chave
Agricultor(a) 1
Empresário(a) 3
Professor(a) 5
Engenheiro(a) 8
88
Full (Outer) Join
Entendendo cada Junção
R
Nome Chave R NULL
Élito 1
Zé 3
R . Chave = S . Chave
Aléqui 4
Zefa 8
NULL S

R⟗S
S
R.Nome R.Chave S.Profissao S.Chave
Profissao Chave
Élito 1 Agricultor(a) 1
Agricultor(a) 1
Zé 3 Empresário(a) 3
Empresário(a) 3
Aléqui 4 NULL NULL
Professor(a) 5
NULL NULL Professor(a) 5
Engenheiro(a) 8
Zefa 8 Engenheiro(a) 8
89
Operações Álgebra Relacional
Divisão
‣ Útil para responder questões como: “encontre os pacientes que consultaram com TODOS os
médicos”

‣ Sintaxe: R : S
‣ Os nomes das colunas de S devem estar contidos em R
‣ A relação resultante tem como nomes das colunas aquelas que aparecem em R mas não
aparecem em S
‣ Para que uma linha apareça no resultado, é necessário que a sua concatenação com cada linha
de R apareça também em S.

90
Operações Álgebra Relacional
Divisão - Exemplo
R S
A B A
a1 b1 a1
a2 b1 a2
a3 b1 a3
a4 b1 R:S
a1 b2 B
a3 b2 b1
a2 b3 b4
a3 b3
a4 b3
a1 b4
a2 b4
a3 b4
91
Operações Álgebra Relacional
Divisão - Exemplo
‣ Buscar o RG dos pacientes que possuem consultas marcadas com todos os médicos

πRG,CRMConsulta : πCRMMedico

Ambulatorio (numeroA, andar, capacidade)


Medico (CRM, nome, idade, cidade, especialidade, #numeroA)
Paciente(RG, nome, idade, cidade, doenca)
Consulta(#CRM, #RG, data, hora)
Funcionario(RG, nome, idade, cidade, salario)
92
Operações Álgebra Relacional
Agregação
‣ Na agregação teremos os campos com funções de agregação determinados na projeção

93
Operações Álgebra Relacional
Agregação
‣ Na agregação teremos os campos com funções de agregação.
‣ Deve-se especi car antes de inserir as funções quais os atributos de agrupamento, caso não seja
especi cado nada o agrupamento será realizado em todas as tuplas da relação


<atributos de agrupamento> <lista de funções>(R)

94
fi
fi
Operações Álgebra Relacional
Agregação - Exemplos
‣ Nesta consulta é realizada a contagem de funcionários e a média de salários por departamento.

DnrℑCONTA Cpf, MEDIA Salario (FUNCIONARIO)

RelaX - relational algebra calculator


γ Dno; count(*) → Ssn(EMPLOYEE) ⨝ γ Dno; avg(Salary) → Salary(EMPLOYEE)
95
Operações Álgebra Relacional
Agregação - Exemplos

‣ O ρ representa uma renomeação. Nesta consulta é realizada a contagem de funcionários e a


média de salários por departamento.
ρR Dnr,Nr_de_funcionarios,Media_sal (DnrℑCONTA Cpf, MEDIA Salario (FUNCIONARIO))
( )

96
Operações Álgebra Relacional
Agregação - Exemplos
‣ Nesta consulta é realizada a contagem de funcionários e a média de salários.

ℑCONTA Cpf, MEDIA Salario (FUNCIONARIO)

97
Cálculo Relacional
Cálculo Relacional
Introdução
‣ Permite a descrição da consulta desejada sem especi car os procedimentos para obtenção das
informações
‣ Na lógica de primeira ordem pode-se pensar como uma linguagem de consulta de duas formas:
‣ Calculo relacional de tuplas
‣ Cálculo relacional de domínio
‣ A diferença está no nível em que são utilizadas as variáveis:
‣ Nível de Atributo para os Domínios
‣ Nivel de Tuplas

99
fi
Cálculo Relacional
Introdução
‣ O cálculo é uma linguagem de consulta formal onde escrevemos uma expressão declarativa para
especi car uma solicitação de recuperação
‣ A expressão especi ca o que será recuperado, em vez de como será recuperado
‣ Linguagem de consulta não-procedural, o que o difere da álgebra, onde descrevemos uma
sequência de operações
‣ Qualquer consulta que possa ser expressa na álgebra pode ser expressa no cálculo
‣ Ambas tem o mesmo poder de expressão

100
fi
fi
Cálculo Relacional
Introdução
‣ O cálculo é uma linguagem de consulta formal onde escrevemos uma expressão declarativa para
especi car uma solicitação de recuperação
‣ A expressão especi ca o que será recuperado, em vez de como será recuperado
‣ Linguagem de consulta não-procedural, o que o difere da álgebra, onde descrevemos uma
sequência de operações
‣ Qualquer consulta que possa ser expressa na álgebra pode ser expressa no cálculo
‣ Ambas tem o mesmo poder de expressão
‣ Existem consultas em linguagens que não podem ser expressas na álgebra ou no calculo
relacional
‣ Algumas linguagens de consulta são mais completas que a álgebra e o cálculo, devido as
operações de agregação e ordenamento

101
fi
fi
Cálculo Relacional
Cálculo Relacional de Tuplas

‣ Expressão geral: {t | COND(t)}


‣ t é a variável de tupla
‣ COND(t) é a expressão condicional envolvendo t
‣ Resultado da consulta: conjunto de todas as tuplas t que satisfazem a expressão condicional

102
Cálculo Relacional
Cálculo Relacional de Tuplas

‣ Expressão geral: {t | COND(t)}


‣ t é a variável de tupla
‣ COND(t) é a expressão condicional envolvendo t
‣ Resultado da consulta: conjunto de todas as tuplas t que satisfazem a expressão condicional
‣ Exemplo: Encontrar todas as tuplas de empregado com salário acima de 25000
‣ Notação de Silberchatz: {t | t ∈ FUNCIONARIO ∧ t[Salario] > 25000}

103
Cálculo Relacional
Cálculo Relacional de Tuplas

‣ Expressão geral: {t | COND(t)}


‣ t é a variável de tupla
‣ COND(t) é a expressão condicional envolvendo t
‣ Resultado da consulta: conjunto de todas as tuplas t que satisfazem a expressão condicional
‣ Exemplo: Encontrar todas as tuplas de empregado com salário acima de 25000
‣ Notação de Silberchatz: {t | t ∈ FUNCIONARIO ∧ t[Salario] > 25000}
‣ Notação de Navathe: {t | FUNCIONARIO(t) AND t . Salario > 25000}

104
Cálculo Relacional
Cálculo Relacional de Tuplas

‣ Expressão geral: {t | COND(t)}


‣ t é a variável de tupla
‣ COND(t) é a expressão condicional envolvendo t
‣ Resultado da consulta: conjunto de todas as tuplas t que satisfazem a expressão condicional
‣ Exemplo: Encontrar todas as tuplas de empregado com salário acima de 25000
‣ Notação de Silberchatz: {t | t ∈ FUNCIONARIO ∧ t[Salario] > 25000}
‣ Notação de Navathe: {t | FUNCIONARIO(t) AND t . Salario > 25000}

Obtenha todas as tuplas t tal que t esteja presente na relação


FUNCIONARIO E que o valor do atributo Salario da tupla t seja
maior que 25000.

105
Cálculo Relacional
Cálculo Relacional de Tuplas

‣ Expressão geral: {t | COND(t)}


‣ t é a variável de tupla
‣ COND(t) é a expressão condicional envolvendo t
‣ Resultado da consulta: conjunto de todas as tuplas t que satisfazem a expressão condicional
‣ Exemplo: Encontrar todas as tuplas de empregado com salário acima de 25000
‣ Notação de Silberchatz: {t | t ∈ FUNCIONARIO ∧ t[Salario] > 25000}
‣ Notação de Navathe: {t | FUNCIONARIO(t) AND t . Salario > 25000} Notação Utilizada

Obtenha todas as tuplas t tal que t esteja presente na relação


FUNCIONARIO E que o valor do atributo Salario da tupla t seja
maior que 25000.

106
Cálculo Relacional
Cálculo Relacional de Tuplas

‣ Na consulta: {t | FUNCIONARIO(t) AND t . Salario > 25000}


‣ Para recuperar apenas alguns atributos ao invés da tupla toda:
{t . Pnome, t . Unome | FUNCIONARIO(t) AND t . Salario > 25000}

107
Cálculo Relacional
Cálculo Relacional de Tuplas

‣ Na consulta: {t | FUNCIONARIO(t) AND t . Salario > 25000}


‣ Para recuperar apenas alguns atributos ao invés da tupla toda:
{t . Pnome, t . Unome | FUNCIONARIO(t) AND t . Salario > 25000}

SQL

SELECT Pnome, Unome


FROM FUNCIONARIO
WHERE Salario>25000;

Álgebra Relacional

πPnome,UnomeσSalario>25000(FUNCIONARIO)

108
Cálculo Relacional
Cálculo Relacional de Tuplas - Informações Básicas
1. Uma relação R(t): equivalente a cláusula FROM do SQL

{t . Pnome, t . Unome | FUNCIONARIO(t) AND t . Salario > 25000}

FROM

109
Cálculo Relacional
Cálculo Relacional de Tuplas - Informações Básicas
1. Uma relação R(t): equivalente a cláusula FROM do SQL
2. Uma condição para selecionar as tuplas logo após o símbolo | : equivalente a cláusula WHERE do
SQL e SELEÇÃO da álgebra

Condição

{t . Pnome, t . Unome | FUNCIONARIO(t) AND t . Salario > 25000}

WHERE

110
Cálculo Relacional
Cálculo Relacional de Tuplas - Informações Básicas
1. Uma relação R(t): equivalente a cláusula FROM do SQL
2. Uma condição para selecionar as tuplas logo após o símbolo | : equivalente a cláusula WHERE do
SQL e SELEÇÃO da álgebra
3. Conjunto de atributos a ser recuperado: equivalente ao SELECT do SQL

{t . Pnome, t . Unome | FUNCIONARIO(t) AND t . Salario > 25000}

SELECT

111
Cálculo Relacional
Cálculo Relacional de Tuplas - Informações Básicas
1. Uma relação R(t): equivalente a cláusula FROM do SQL
2. Uma condição para selecionar as tuplas logo após o símbolo | : equivalente a cláusula WHERE do
SQL e SELEÇÃO da álgebra
3. Conjunto de atributos a ser recuperado: equivalente ao SELECT do SQL
Condição

{t . Pnome, t . Unome | FUNCIONARIO(t) AND t . Salario > 25000}

SELECT FROM WHERE

112
Cálculo Relacional
Cálculo Relacional de Tuplas - Expressão Geral

{t1 . A1, t2 . A2, . . . , tn . An | COND(t1, t2, . . . , tn, tn+1, tn+2, . . . , tn+m)}

113
Cálculo Relacional
Cálculo Relacional de Tuplas - Expressão Geral

{t1 . A1, t2 . A2, . . . , tn . An | COND(t1, t2, . . . , tn, tn+1, tn+2, . . . , tn+m)}

Os t são variáveis e tuplas A relação faz parte da condição


Os A são um atributo da relação

114
Cálculo Relacional
Cálculo Relacional de Tuplas - Expressão Geral

{t1 . A1, t2 . A2, . . . , tn . An | COND(t1, t2, . . . , tn, tn+1, tn+2, . . . , tn+m)}

Variáveis livres Predicado aplicado às variáveis livres

115
Cálculo Relacional
Cálculo Relacional de Tuplas - Expressão Geral

{t1 . A1, t2 . A2, . . . , tn . An | COND(t1, t2, . . . , tn, tn+1, tn+2, . . . , tn+m)}

Variáveis livres Predicado aplicado às variáveis livres

‣ Variável livre:
‣ Assume valores de tuplas de uma ou mais relações
‣ Constitui a resposta da consulta
‣ Aparece do lado esquerdo da |
‣ Predicado
‣ Expressão lógica que, se verdadeira para determinados valores das variáveis livres, retorna os
valores destas variáveis na resposta da consulta

116
Cálculo Relacional
Cálculo Relacional de Tuplas - Expressão Geral

{t1 . A1, t2 . A2, . . . , tn . An | COND(t1, t2, . . . , tn, tn+1, tn+2, . . . , tn+m)}

Variáveis livres Predicado aplicado às variáveis livres

‣ Variável livre:
‣ Assume valores de tuplas de uma ou mais relações
‣ Constitui a resposta da consulta
‣ Aparece do lado esquerdo da |
‣ Predicado
‣ Expressão lógica que, se verdadeira para determinados valores das variáveis livres, retorna os
valores destas variáveis na resposta da consulta

117
Cálculo Relacional
Exemplo
‣ Recupere a data de nascimento e o endereço do funcionário João Oliveira
{t . Datanasc, t . Endereco | FUNCIONARIO(t) AND t . Pnome = 'João' AND t . Unome = 'Silva'}

118
Exercício
Cálculo Relacional
Ambulatorio (numeroA, andar, capacidade)
Medico (CRM, nome, idade, cidade, especialidade, #numeroA)
Paciente(RG, nome, idade, cidade, doenca)
Consulta(#CRM, #RG, data, hora)
Funcionario(RG, nome, idade, cidade, salario)

1. Buscar os dados dos pacientes que estão com sarampo


2. Buscar os dados dos médicos ortopedistas com mais de 40 anos
3. Buscar os dados das consultas, exceto aquelas marcadas para os médicos com CRM 46 e 79
4. Buscar o número dos ambulatórios do quarto andar que tenham capacidade igual a 50 ou
tenham número superior a 10

119
Cálculo Relacional
Quanti cadores Existencial e Universal
‣ Usados para consultas com mais de uma relação
‣ Quanti cador existencial chamado existe utilizaremos: ∃
‣ Quanti cador universal chamado para todo utilizaremos: ∀
‣ Em uma expressão uma tuplas t é livre quando não for quanti cada em uma cláusula ∃t ou ∀t,
caso contrário ela é limitante

120
fi
fi
fi
fi
Cálculo Relacional
Quanti cadores Existencial e Universal

‣ Será considerado verdade para esses quanti cares se, em uma condição C:
‣ ( ∃t)(C) é VERDADEIRA se C for verdadeira para alguma (pelo menos 1) tupla das ocorrências
livres de t em C, caso contrário é FALSA

‣ ( ∀t)(C) é VERDADEIRA se C for VERDADEIRA para todas as tuplas (no universo) designadas
para ocorrências livres de t em C, caso contrário é FALSA

121
fi
fi
Cálculo Relacional
Quanti cadores Existencial e Universal

‣ Será considerado verdade para esses quanti cares se, em uma condição C:
‣ ( ∃t)(C) é VERDADEIRA se C for verdadeira para alguma (pelo menos 1) tupla das ocorrências
livres de t em C, caso contrário é FALSA

‣ ( ∀t)(C) é VERDADEIRA se C for VERDADEIRA para todas as tuplas (no universo) designadas
para ocorrências livres de t em C, caso contrário é FALSA

‣ Notação Silberchatz: ∃t ∈ C(t), ∀t ∈ C(t)


‣ Notação Navathe: ( ∃t)(C), ( ∀t)(C)

122
fi
fi
Cálculo Relacional
Quanti cadores Existencial e Universal - Exemplo
1. Recupere o nome e o endereço de todos os empregados que trabalham no departamento de
Pesquisa.

{t . Pnome, t . Unome, t . Endereco | FUNCIONARIO(t) AND


( ∃d)(DEPARTAMENTO(d) AND d . Dnome = 'Pesquisa' AND d . Dnumero = t . Dnr)}

123
fi
Cálculo Relacional
Quanti cadores Existencial e Universal - Exemplo
1. Recupere o nome e o endereço de todos os empregados que trabalham no departamento de
Pesquisa.

{t . Pnome, t . Unome, t . Endereco | FUNCIONARIO(t) AND


( ∃d)(DEPARTAMENTO(d)) AND d . Dnome = 'Pesquisa' AND d . Dnumero = t . Dnr}

‣ Neste exemplo t é uma tuplas livre, mas d não é livre, pois está na condição de junção

124
fi
Cálculo Relacional
Quanti cadores Existencial e Universal - Exemplo
2. Encontre o nome do projeto dos empregados do Departamento 5

{t . Projnome | PROJETO(t) AND


( ∃d)(FUNCIONARIO(d) AND d . Dnr = t . Dnum AND d . Dnr = 5)}

125
fi
Cálculo Relacional
Quanti cadores Existencial e Universal - Exemplo
3. Nomes dos empregados que não trabalham em projetos

{t . Pnome, t . Unome | FUNCIONARIO(t) AND


(( ∀d)(NOT (TRABALHA_EM(d)) OR NOT (d . Fcpf = t . Cpf))}

126
fi
Cálculo Relacional
Quanti cadores Existencial e Universal - Exemplo
3. Nomes dos empregados que não trabalham em projetos

{t . Pnome, t . Unome | FUNCIONARIO(t) AND


(( ∀d)(NOT (TRABALHA_EM(d)) OR NOT (d . Fcpf = t . Cpf))}

Retorna o nome do funcionário se, somente se, na tupla d ( ∀d )


de TRABALHA_EM este funcionário não exista

127
fi
Cálculo Relacional
Quanti cadores Existencial e Universal - Exemplo
3. Nomes dos empregados que não trabalham em projetos

{t . Pnome, t . Unome | FUNCIONARIO(t) AND


(( ∀d)(NOT (TRABALHA_EM(d)) OR NOT (d . Fcpf = t . Cpf))}

Retorna o nome do funcionário se, somente se, na tupla d ( ∀d )


de TRABALHA_EM este funcionário não exista

{t . Pnome, t . Unome | FUNCIONARIO(t) AND


(( ∃d)(TRABALHA_EM(d)) AND (d . Fcpf = t . Cpf))}

128
fi
Exercício
Cálculo Relacional
Ambulatorio (numeroA, andar, capacidade)
Medico (CRM, nome, idade, cidade, especialidade, #numeroA)
Paciente(RG, nome, idade, cidade, doenca)
Consulta(#CRM, #RG, data, hora)
Funcionario(RG, nome, idade, cidade, salario)

5. Buscar o nome e a especialidade de todos os médicos


6. Buscar o número dos ambulatórios do terceiro andar
7. Buscar o CRM dos médicos e as datas das consultas para os pacientes com RG 122 e 725
8. Buscar os números dos ambulatórios, exceto aqueles do segundo e quarto andares, que
suportam mais de 50 pacientes
9. Buscar o nome dos médicos que têm consulta marcada e as datas das suas consulta

129
Exercício
Cálculo Relacional
Ambulatorio (numeroA, andar, capacidade)
Medico (CRM, nome, idade, cidade, especialidade, #numeroA)
Paciente(RG, nome, idade, cidade, doenca)
Consulta(#CRM, #RG, data, hora)
Funcionario(RG, nome, idade, cidade, salario)

10.Buscar o número e a capacidade dos ambulatórios do quinto andar e o nome dos médicos que
atendem neles
11.Buscar os nomes dos médicos ortopedistas com consultas marcadas para o período da manhã
(7hs-12hs) do dia 15/04/22
12.Buscar os nomes dos pacientes, com consultas marcadas para o médicos João Carlos Santos,
que estão com pneumonia
13.Buscar os nomes e RGs dos funcionários que recebem salários abaixo de R$ 900,00 e que não
estão internados como pacientes
130
Referência

ELMASRI, Ramez et al. Sistemas de banco de dados. 6ed. São Paulo. Peason Addison Wesley.
2011.

BOGORNY, Vania. Slides de Aula. UFSC. 2019.

131

Você também pode gostar