Seminario banco de dados calculo relacional de tuplas (2)

24
Disciplina de Banco de Dados Cálculo Relacional de Tuplas Genivaldo Rocha, João Natalino, Lourenço Carvalho

Transcript of Seminario banco de dados calculo relacional de tuplas (2)

Page 1: Seminario banco de dados calculo relacional de tuplas (2)

Disciplina de Banco de Dados

Cálculo Relacional de Tuplas

Genivaldo Rocha, João Natalino, Lourenço Carvalho

Page 2: Seminario banco de dados calculo relacional de tuplas (2)

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

Page 3: Seminario banco de dados calculo relacional de tuplas (2)

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.

Page 4: Seminario banco de dados calculo relacional de tuplas (2)

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

Page 5: Seminario banco de dados calculo relacional de tuplas (2)

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): -

Page 6: Seminario banco de dados calculo relacional de tuplas (2)

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

Page 7: Seminario banco de dados calculo relacional de tuplas (2)

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

Page 8: Seminario banco de dados calculo relacional de tuplas (2)

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)

Page 9: Seminario banco de dados calculo relacional de tuplas (2)

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

Page 10: Seminario banco de dados calculo relacional de tuplas (2)

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

Page 11: Seminario banco de dados calculo relacional de tuplas (2)

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

Page 12: Seminario banco de dados calculo relacional de tuplas (2)

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

Page 13: Seminario banco de dados calculo relacional de tuplas (2)

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

Page 14: Seminario banco de dados calculo relacional de tuplas (2)

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´}

Page 15: Seminario banco de dados calculo relacional de tuplas (2)

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.

Page 16: Seminario banco de dados calculo relacional de tuplas (2)

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

Page 17: Seminario banco de dados calculo relacional de tuplas (2)

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

Page 18: Seminario banco de dados calculo relacional de tuplas (2)

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

Page 19: Seminario banco de dados calculo relacional de tuplas (2)

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))

Page 20: Seminario banco de dados calculo relacional de tuplas (2)

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)}

Page 21: Seminario banco de dados calculo relacional de tuplas (2)

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

Page 22: Seminario banco de dados calculo relacional de tuplas (2)

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

Page 23: Seminario banco de dados calculo relacional de tuplas (2)

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.

Page 24: Seminario banco de dados calculo relacional de tuplas (2)

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.