Disciplina de Banco de Dados
Cálculo Relacional de Tuplas
Genivaldo Rocha, João Natalino, Lourenço Carvalho
ROTEIRO
- Introdução
- O que é Calculo Relacional de Tuplas
- O que é preciso informar numa Expressão de Cálculo de Tuplas?
- Expressões e Fórmulas
- A Expressão Lógica
- Quantificadores Existencial e Universal
- Exemplos
- Considerações finais
- Bibliografia
Introdução
Sabemos que existem diversas formas de fazer consultas em banco de dados.
Mas nesse trabalho iremos abordar uma das linguagens de consulta o cálculo relacional de tuplas que consiste em uma dessas maneiras formais de manipular dados em uma base digital que especificara o que será consultado.
O que é Calculo Relacional de Tuplas
O cálculo relacional de tuplas é uma linguagem de consulta formal onde escrevemos uma expressão declarativa para especificar uma solicitação de recuperação ( consulta ).
Qualquer consulta que possa ser expressa na álgebra pode ser expressa no cálculo
Ambas tem o mesmo poder de expressão O usuário descreve a informação que deseja
obter
O que é Calculo Relacional de Tuplas sem descrever como obtê-la (O QUÊ) A
expressão especifica 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.
– Restrição/Seleção (select): σ – Projeção (Project): π – Produto Cartesiano (cartesian product): x
– União (union): ∪ – Diferença (set-difference): -
O QUE É CALCULO RELACIONAL DE TUPLAS
Permite a descrição da consulta desejada sem especificar 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 Dominios Nivel de Tuplas
Cálculo Relacional de Tuplas
Expressão geral:{ t | COND(t) }
t= variável de tuplaCOND(t) = é uma expressão condicional envolvendo t
Resultado da consulta = conjunto de todas as tuplas t que satisfazem COND(t)
Exemplo: encontrar todas as tuplas de empregado com salário acima de 1200,00
Notação Silberchatz: { t | t ∈ empregado ∧ t[salario] > 1200}Notação Navathe: { t | empregado(t) AND t.salario > 1200}
Leitura: o conjunto de todas as tuplas t tal que exista uma tupla t na relação empregado para a qual o valor no atributo salario seja maior que 1200 reais
Cálculo Relacional de Tuplas
Na consulta { t | empregado(t) AND t.salario > 1200}
Cada tupla de EMPREGADO que satisfaça a condição de salario>1200 é recuperada
t.Salario referencia o atributo salario da variavel de tupla t (similar ao SQL)
Cálculo Relacional de Tuplas
Na consulta { t | empregado(t) AND t.salario > 1200}
Para recuperar apenas alguns atributos ao invés da tupla toda:{ t.nome, t.sobrenome | empregado(t) AND t.salario > 1200}
Equivale a consulta SQL:SELECT t.nome, t.sobrenome FROM empregado t WHERE t.salario>1200
Equivale a consulta da Álgebra:
πnome, sobrenome (σsalario > 1.200 (Empregado))
Atributo relação condição
O que é preciso informar numa expressão de cálculo de tuplas?
1. Uma relação R(t) Equivalente a cláusula FROM do SQL
1. Uma condição para selecionar tuplas Equivalente a cláusula WHERE do SQL e SELECAO da algebra
A condição é após o símbolo |
3. Conjunto de atributos a ser recuperado Equivalente ao SELECT do SQL
SELECT FROM WHERE
{ t.nome, t.sobrenome | empregado(t) AND t.salario > 1200}
condição
Expressões e Fórmulas
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 de tuplasOs A são um atributo da relação
A relação faz parte da condição
Uma condição pode ter operadores de conjunto <, >, <=, >=, <>, do tipot>c, onde c é uma constante
Expressões e Fórmulas
Expressão GERAL: {t1.A1, t2.A2, ..., tn.An, | COND (t1, t2,..., tn, tn+1, tn+2,..., tn+m)}
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
variáveis livres predicado aplicado às variáveis livres
A Expressão Lógica
{t1.A1, t2.A2, ..., tn.An, | COND (t1, t2,..., tn, tn+1, tn+2,..., tn+m)}
Uma expressão pode ter várias condições C (fórmula), ligadas por operadores lógicos AND, OR, e NOT
Se C1 e C2 são uma condição, então (C1 AND C2), (C1 OR C2 ), NOT (C1) e NOT (C2)
Valores verdade para as condições: (C1 AND C2) é verdadeiro se ambos C1 e C2 forem verdadeiros, caso contrário
é FALSO (C1 OR C2 ) é falso se ambos C1 e C2 forem falsos, caso contrário é verdadeiro
NOT (C1) é verdadeiro se c1 for FALSO; é FALSo se C1 for VERDADEIRO
NOT (C2) é verdadeiro se C2 for FALSO; é FALSo se C2 for VERDADEIRO
Exemplo
Q1: recupere a data de nascimento e o endereço do empregado João Natalino
{ t.dataNasc, t.endereco | empregado(t) AND t.nome=´Joao´ AND t.sobrenome=´Natalino´}
Quantificadores Existencial e Universal
Usados para consultas com mais de uma relação
Quantificador existencial: ∃ Chamado EXISTE
Quantificador universal: ∀ Chamado PARA TODO
Em uma expressão uma tupla t é livre quando não for quantificada em uma cláusula (∃t ) ou (∀t), caso contrário ela é limite.
Quantificadores Existencial e Universal
Valores verdade para os quantificadores Sendo C uma condição:
(∃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
Quantificador Existencial
Notação (Silberchatz)∃ t ∈ C(t)
Notação (Navathe)
(∃t)(C)
Define uma variável não-livre t (associada sempre a uma relação R) e avalia uma condição C(t) para ela interpretação: verifica se existe alguma tupla t em R para o qual
C(t) seja verdadeiro
Quantificador Existencial
Relações Exemplo
Projeto (codProj, tipo, descr, codDep) ProjetoEmpregado (codProj, codEmp, dataIni, tempoAl) Empregado (codEmp, nome, salario, codDep) Departamento (codDep, descricao)
Departamento que controla o projeto
Quantificador Existencial
TABELAS: EXEMPLO Consulta 1: recupere o nome e o endereco de
todos os empregados que trabalham no departamento de PESQUISA
{ t.nome, t.endereco | empregado(t) AND
(∃d) (departamento(d) AND d.nome=´PESQUISA´ AND d.codDepto=t.codDepto)}
Neste exemplo, t é uma tupla livre, d não é livre
Condição de SELEÇÂO da Algebra Condição de JUNÇÂO Equivale aoC da Formula(∃d)(C))
Quantificador Existencial
Consulta 2: Encontre o nome do projeto dos empregados do departamento 5
MAIS EXEMPLO
Neste exemplo, t é uma tupla livre, d não é livre
Condição de SELEÇÂO da Algebra
Condição de JUNÇÂO
{ t.descr, | projeto (t) AND (∃d) (Empregado(d) AND d.codDep=5 AND d.codDepto=t.codDepto)}
Quantificador Universal
Notação
∀ t ∈ C(t) (Silberchatz) (∀ t) (C) (Navathe)
Interpretaçãoverifica se toda tupla t satisfaz C(t)
Usado para formular consultas que envolvem a associação com tuplas de relações
que não vão para a respostasimilar ao princípio da divisão da álgebra relacional
Exemplos de Consultas c/ o Quantificador Existencial
Projeto (codProj, tipo, descr, codDep)ProjetoEmpregado (codProj, codEmp, dataIni, tempoAl)Empregado (codEmp, nome, salario, codDep)Departamento (codDep, descricao) Consulta: nomes dos empregados que não trabalham em
projetos
{e.nome | empregado(e) AND ((∀ x)(NOT (projetoEmpregado(x)) OR NOT (x.codEmp=e.codEmp)))}* Para cada tupla: retorna o nome do empregado se, somente se, na tupla x
(∀ x ) de projetoEmpregado este empregado não exista
EQUIVALENTE a{e.nome | empregado(e) AND (NOT(∃ x)(projetoEmpregado(x) AND
x.codEmp=e.codEmp))}
* Para cada tupla, retorna o nome do empregado somente se não existir NOT(∃ x) uma tupla em projetoEmpregado com este empregado
Considerações finais
O calculo relacional de tuplas pode ser definido como uma sequência de operações que determina e especifica uma consulta de maneira aplicada e composta por variáveis quantificadas que facilita as ligações entre as tuplas, assim combinando os atributos em uma determinada consulta no calculo relacional de tuplas. Toda consulta é atribuída por uma regra especificada.
Bibliografia
1 - Silbershatz, Abraham; Korth, Henry F. e Sudarshan, S. Sistema de banco de dados – 3. ed. Tradução de Marília Guimarães Pinheiro.- São Paulo: Pearson Makron Books, 1999.
2 - Elmasri, Rames; Shamkant , B. Navathe; Sistema de banco de dados Tradução de Daniel Vieira; Revisão Técnica Enzo Seraphim e Thatyana de Faria Piola Seraphim. – 6. ed. – São Paulo : Pearson addison wesley, 2011.