QBE

Propaganda
Banco de Dados I
2007
Módulo III: Linguagens de
Consulta
(Aula 9)
Clodis Boscarioli
Agenda:
QBE (Query-by-Example)
Histórico e Características;
Notações;
Exemplos da linguagem;
Ferramentas que suportam QBE.
QBE - Breve Histórico
O sistema de BD QBE foi desenvolvido pela IBM, no
Centro de Pesquisa T.J. Watson, no início da década de
70;
A versão experimental da linguagem de manipulação de
dados Query-by-Example foi descrita formalmente
(publicada) por Moshe Zloof [1977];
A versão comercial foi descrita em IBM [1978] e usada
mais tarde na Query Management Facility (QMF);
QBE - Características
Tem por base o cálculo relacional de domínio.
Possui sintaxe bidimensional: as consultas parecem
tabelas.
Consultas são expressas “por exemplo”. Em vez de
determinar um procedimento para obtenção da resposta
desejada, o usuário dá um exemplo do que é desejado.
O sistema generaliza o exemplo para o processamento
da resposta da consulta.
QBE - Características
Utiliza tabelas esqueletos. O usuário seleciona os
esqueletos necessários e preenche-os com linhas de
exemplo.
Linha de exemplo consiste em constantes e elementos de
exemplos, que são domínios de variáveis.
Variáveis de domínio são precedidas por um caracter
sublinhado (underscore _).
Elimina duplicatas automaticamente.
Exemplo de Tabela Esqueleto
agencia nome_agencia cidade_agencia
fundos
conta
saldo
nome_agencia Numero_conta
Consultas em uma Única Relação
Encontrar todos os números de empréstimos da
agência Perryridge.
emprestimo nome_agencia nr_emprestimo
Perryridge
P._x
ou: emprestimo nome_agencia nr_emprestimo
Perryridge
total
total
P.
{ < x > | ∃ b, a (<b, x, a> ∈ emprestimo ^ b = “Perryridge”)}
Consultas em uma Única Relação
Para mostrar uma relação completa pode-se criar uma
linha única colocando P. em todos os campos, ou usar
notação reduzida P.ALL.
Exemplo: Encontre todos os números de empréstimos
na agência Perryridge, cujo total seja maior que 700
reais.
emprestimo nome_agencia nr_emprestimo
Perryridge
P.ALL.
total
> 700
Exemplo 1: Uso do Operador ¬
Encontre os nomes de todas as agências que não estão
localizadas no Brooklyn:
agencia nome_agencia cidade_agencia
P.
total
¬ Brooklyn
¬ equivale a not. Pode também ser lido como “não
existe de fato”.
Exemplo 2: Uso do Operador AND
Encontre os números de empréstimos de todos os
empréstimos feitos por Jones e Smith, conjuntamente:
devedor
nome_cliente
“Jones”
“Smith”
numero_emprestimo
P._x
_x
Exemplo 3: Uso do Operador OR
Encontre os números de empréstimos de todos os
empréstimos feitos por Jones, por Smith, ou por ambos.
devedor
nome_cliente
“Jones”
“Smith”
numero_emprestimo
P._x
P._y
Consultas em Diversas Relações
A QBE permite consultas em diversas relações
(análogas ao produto cartesiano ou à junção natural
na álgebra relacional). As conexões entre as várias
relações são realizadas por meio de variáveis que
fazem com que certas tuplas tenham os mesmos
valores de certos atributos.
Consultas em Diversas Relações
Exemplo: Encontrar todos os nomes de todos os
clientes que possuam um empréstimo na agência
Perryridge.
emprestimo nome_agencia nr_emprestimo
Perryridge
devedor
nome_cliente
P._y
total
_x
numero_emprestimo
_x
Caixa de Condição
Quando não for conveniente ou for impossível
expressar todas as restrições de domínio, dentro do
esqueleto das tabelas pode-se recorrer ao recurso de
caixa de condição, que permite a expressão de
restrições gerais sobre qualquer domínio de variável.
Caixa de Condição
Permite:
¬ = (lê-se diferente de)
& (equivale ao operador lógico and)
| (equivale ao operador lógico or)
>, <, ≥ , ≤ e =
expressões aritméticas
Caixa de Condição - Exemplos
Encontre todos os números de conta com saldo entre
1.300 e 1.500 reais.
conta
nome_agencia Numero_conta
P.
condições
_x ≥ 1300
_x ≤ 1500
saldo
_x
Caixa de Condição - Exemplos
Encontre todas as agências que tenham fundos
maiores que os das agências localizadas no “Brooklyn”.
agencia nome_agencia cidade_agencia
P._x
Brooklyn
condições
_y > _z
fundos
_y
_z
Caixa de Condição - Exemplos
Encontre todos os números de conta com saldos entre
1.300 e 2.000 reais, exceto os que contenham
exatamente 1.500 reais.
conta
nome_agencia Numero_conta
saldo
P.
condições
_x = ( ≥ 1300 and ≤ 2000 and ¬ 1500)
_x
Relação Resultante
Quando o resultado de uma consulta englobar atributos
de diversos esquemas de relações, é necessário um
mecanismo para apresentar o resultado desejado em
uma única tabela. Para tal, declara-se uma relação
resultado que inclui todos os atributos de resultado. O
resultado é impresso por meio do comando P., utilizado
somente na tabela esqueleto Resultado.
Relação Resultante - Exemplo
Encontrar o nome_cliente, numero_conta e saldo para
todas as contas da agência Perryridge.
Em álgebra ter-se-ía:
1. Junção de depositante e conta.
2. Projeção de nome_cliente, numero_conta e saldo.
Em QBE:
1. Criação de uma tabela esqueleto com os atributos
desejados.
2. A escrita da consulta.
O Resultado da consulta é:
conta
nome_agencia Numero_conta
Perryridge
devedor
nome_cliente
_y
P.
_z
numero_conta
_x
resultado
_y
nome_cliente numero_conta
_x
saldo
_y
saldo
_z
Ordenar Apresentação das Tuplas
AO. (ordem ascendente)
DO. (ordem descendente)
conta
nome_agencia Numero_conta
Perryridge
P.AO(1).
saldo
P.DO(2).
P.AO(1). Especifica que o número da conta deverá ser
intercalado primeiro; P.DO(2). indica que os saldos
deverão, então, ser intercalados em ordem descrescente.
Operações Agregadas
QBE possui os operadores agregados AVG, MAX, MIN,
SUM, CNT. É preciso acrescentar no final desses
operadores a palavra ALL. para a criação de um
conjunto sobre o qual será aplicado o operador de
agregação.
O operador ALL. assegura que as repetições não serão
eliminadas.
Para eliminar todas as repetições usa-se UNQ. Ex.:
P.CNT.UNQ.ALL.
Modificações no Banco de Dados
D. (Remoção)
I. (Inserção)
U. (Atualização)
Estes operadores devem
ser colocados no nome da
relação envolvida.
Modificações no Banco de Dados
Exemplo de Inserção:
Inserir um saldo de 700 reais na conta A-9732 na
agência de Perryridge.
conta
I.
nome_agencia Numero_conta
Perryridge
A-9732
saldo
700
Modificações no Banco de Dados
Exemplos de Remoção:
Remova o valor de cidade_agência das agências
de nome “Perryridge”
agência nome_agencia cidade_agência
Perryridge
fundos
D.
Remova o cliente Smith.
cliente nome_cliente rua_cliente
D.
Smith
cidade
Modificações no Banco de Dados
Exemplo de Atualização:
Atualizar para 10000 dólares o valor de fundos
da agência Perryridge.
agência nome_agencia cidade_agência
Perryridge
fundos
U. 10000
Ferramentas Comerciais e QBE
Várias são as ferramentas que incorporam recursos
de QBE, como Microsoft Access, Oracle, IBM DB2 e
outros aplicativos para banco de dados (exemplos a
seguir);
Consultas visuais a banco de dados é uma
tendência;
Preocupação com o usuário final, aspectos de
interface e minimização de esforços em SQL.
Visual Open DB
É um aplicativo genérico para análise de dados,
permitindo consultas de várias fontes de dados. A idéia
é que seja utilizado por usuários finais na análise de
dados e pelos desenvolvedores em consultas a tabelas
e visões de um banco de dados.
Navicat
É uma ferramenta de administração de bancos de
dados MySQL e PostgreSQL que pode converter
XML, CSV, MS Excel e MS Access e outros
formatos de dados populares para bancos de
dados;
Outros recursos incluem importar/exportar, suporte
a Unicode, agendamento de tarefas, sincronização
de dados, transferências, construção de consultas e
relatórios.
Navicat
Microsoft Access
Direct Oracle Access - Query By
Example Mode
Referências Bibliográficas
Sistemas de Banco de Dados. (Cap. 5) Abraham Silberchatz,
Henry F. Korth e S. Sudarshan. 3ª Edição. Makron Books, 1999.
Sistemas de Banco de Dados. (Apêndice D) Ramez Elsmari,
4ª Edição. Shamkant B. Navathe. Pearson Addison Wesley, 2005.
Sites e manuais de ferramentas.
Download