Seminario banco de dados calculo relacional de tuplas (2)

Post on 08-Jul-2015

448 views 2 download

Transcript of 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

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.