A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Cálculo Relacional.

Apresentações semelhantes


Apresentação em tema: "Cálculo Relacional."— Transcrição da apresentação:

1 Cálculo Relacional

2 Outras Linguagens Relacionais
Cálculo Relacional de Tupla Cálculo Relacional de Domínio

3 Exemplo: BD Empresa EMPREGADO DEPARTAMENTO PROJETO 28

4 Cálculo Relacional de Tupla
Linguagem de consulta não-procedural, em que cada consulta assume a forma {t | P(t)}. {t | P(t)} representa o conjunto de todas as tuplas t onde o predicado P(t) é verdadeiro. t é uma variável de tupla. t.A representa o valor do atributo A em uma tupla t. R(t) indica que R é a relação-limite de t.

5 Empregados com salário maior do que 20 mil reais.
Exemplo Empregados com salário maior do que 20 mil reais. {t | EMPREGADO(t) ^ t.Salário > } Recupera todos os atributos de t. {t.PNOME, t.SNOME | EMPREGADO(t) ^ t.Salário > } Recupera apenas os atributos PNOME e SNOME de t.

6 Átomos do Cálculo de Predicados
R(t) t.A op t.B t.A op c ou c op t.B Cada um desses átomos possui um valor verdade para uma determinada combinação de tuplas t, isto é, um valor VERDADEIRO ou FALSO dependendo se a condição especificada no átomo é avaliada como VERDADEIRA ou FALSA para a combinação específica de tuplas.

7 Fórmula do Cálculo de Predicados
Constituída por um ou mais átomos conectados pelos operadores lógicos AND, OR e NOT. Definida recursivamente da seguinte forma: Todo átomo é uma fórmula. Se F1 e F2 são fórmulas, então (F1 AND F2), (F1 OR F2), NOT(F1) e NOT(F2) também o são.

8 Quantificador Universal e Existencial
(t)(F) existe uma tupla na relação-limite de t para a qual a fórmula F é verdadeira. (t)(F) para todas as tuplas da relação- limite de t, a fórmula F é verdadeira.

9 Variáveis Livres e Vinculadas
Toda variável em uma fórmula F que é um átomo do cálculo de predicado é livre em F. Nas fórmulas F do tipo (F1 AND F2), (F1 OR F2), NOT(F1) e NOT(F2), a ocorrência de uma variável t será livre ou vinculada em F, dependendo se ela é livre ou vinculada em F1 e/ou F2. Todas as ocorrências livres de uma variável de tupla em F serão vinculadas em uma fórmula F’ = (t)(F) ou F’ = (t)(F) para o quantificador especificado em F’ .

10 Exemplo Nas fórmulas: F1 : d.DNOME = “Pesquisa”
F2 : (t)(d.DNUMERO = t.DNO) F3 : (d)(d.GERSSN = “ ”) d é livre em F1 e F2 ; d está vinculada ao quantificador universal em F3 ; e t está vinculada ao quantificador existencial em F2.

11 Definição de Fórmulas (cont)
Se é F uma fórmula então (t)(F) é fórmula. (t)(F) será VERDADEIRA se F for VERDADEIRA para, pelo menos, uma ocorrência de t. Se é F uma fórmula então (t)(F) é fórmula. (t)(F) será VERDADEIRA se F for VERDADEIRA para todas as ocorrências de t.

12 Exemplos Nome e endereço de todos os empregados que trabalham para o departamento de Pesquisa: {t.Nome, t.SNome, t.Endereço | Empregado(t) AND (d)(Departamento(d) AND d.Nome = “Pesquisa” AND d.Sigla = t.Depto) } Para cada projeto localizado em “Brasília”, liste o código do projeto, a sigla do departamento responsável e o sobrenome, data de nascimento e endereço do gerente do departamento: {p.Código, p.Depto, m.Snome, m.DataNasc, m.Endereço | Projeto(p) AND p.Local = “Brasília” AND (d)(Departamento(d) AND d.Sigla = p.Depto AND (m) (Empregado(m) AND m.Matrícula = d.Gerente ) ) }

13 Exemplo: Banco agência (nome, cidade, ativos)
cliente (nome, endereço, cidade) conta (número, agência, saldo) empréstimo (número, agência, valor) correntista (cliente, conta) tomador (cliente, empréstimo)

14 Consultas número, agência e valor dos empréstimos acima de 1200 reais:
{ e | empréstimo (e)  e.valor  1200 } nome dos tomadores que tomaram empréstimos acima de 1200 reais: { t.nome | tomador (t)  (e) ( empréstimo (e)  e.número = t.empréstimo  e.valor  1200 ) } Nome dos clientes que possuem uma conta e tomaram um empréstimo no banco: { c1.nome | cliente (c1)  ( (c2) ( correntista (c2)  c2.cliente = c1.nome )  (t) ( tomador (t)  t.cliente = c1.nome ) ) }

15 Consultas nomes dos clientes que tomaram empréstimos na agência XYZ:
{ c.nome | cliente (c)  ( (t) ( tomador (t)  t.cliente = c.nome )  (e) ( empréstimo (e)  e.número = t.empréstimo  e.agência = “XYZ” ) ) } nomes dos clientes que tomaram empréstimos na agência XYZ, mas não possuem contas no Banco: { c1.nome | cliente (c1)  ( (t) ( tomador (t)  t.cliente = c1.nome )  (e) ( empréstimo (e)  e.número = t.empréstimo  e.agência = “XYZ” ) )  (c2) ( correntista (c2)  c2.cliente = c1.nome ) ) }


Carregar ppt "Cálculo Relacional."

Apresentações semelhantes


Anúncios Google