banco de dados i móduloiii: linguagens de consultaclodis/bdi/bdi_2007_modulo3_6.pdf · dados...

34
Clodis Boscarioli Banco de Dados I 2007 Módulo III: Linguagens de Consulta (Aula 9)

Upload: phungque

Post on 02-Dec-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Clodis Boscarioli

Banco de Dados I

2007

Módulo III: Linguagens de Consulta

(Aula 9)

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 caractersublinhado (underscore _).

� Elimina duplicatas automaticamente.

Exemplo de Tabela Esqueleto

fundoscidade_agencianome_agenciaagencia

saldoNumero_contanome_agenciaconta

Consultas em uma Única Relação

totalnr_emprestimonome_agenciaemprestimo

Perryridge P.

� Encontrar todos os números de empréstimos da agência Perryridge.

totalnr_emprestimonome_agenciaemprestimo

Perryridge P._x

ou:

{ < 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.

totalnr_emprestimonome_agenciaemprestimo

Perryridge P.ALL. > 700

totalcidade_agencianome_agenciaagencia

P. ¬ Brooklyn

Exemplo 1: Uso do Operador ¬

� Encontre os nomes de todas as agências que não estão localizadas no Brooklyn:

¬ equivale a not. Pode também ser lido como “não

existe de fato”.

numero_emprestimonome_clientedevedor

“Jones”

“Smith”

P._x

_x

Exemplo 2: Uso do Operador AND

� Encontre os números de empréstimos de todos os empréstimos feitos por Jones e Smith, conjuntamente:

numero_emprestimonome_clientedevedor

“Jones”

“Smith”

P._x

P._y

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.

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.

_x

numero_emprestimonome_clientedevedor

P._y

totalnr_emprestimonome_agenciaemprestimo

Perryridge _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.

saldoNumero_contanome_agenciaconta

P. _x

condições

_x ≥ 1300

_x ≤ 1500

Caixa de Condição - Exemplos

� Encontre todas as agências que tenham fundos maiores que os das agências localizadas no “Brooklyn”.

fundoscidade_agencianome_agenciaagencia

P._xBrooklyn

_y

_z

condições

_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.

saldoNumero_contanome_agenciaconta

P. _x

condições

_x = ( ≥ 1300 and ≤ 2000 and ¬ 1500)

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

saldoNumero_contanome_agenciaconta

_y _zPerryridge

_y

numero_contanome_clientedevedor

_x

saldonumero_contanome_clienteresultado

_x _y _zP.

Ordenar Apresentação das Tuplas

� AO. (ordem ascendente)

� DO. (ordem descendente)

� 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.

saldoNumero_contanome_agenciaconta

P.AO(1). P.DO(2).Perryridge

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.

saldoNumero_contanome_agenciaconta

A-9732 700PerryridgeI.

Modificações no Banco de Dados

fundoscidade_agêncianome_agenciaagência

D.Perryridge

cidaderua_clientenome_clientecliente

SmithD.

� Exemplos de Remoção:

� Remova o valor de cidade_agência das agências de nome “Perryridge”

� Remova o cliente Smith.

Modificações no Banco de Dados

� Exemplo de Atualização:

fundoscidade_agêncianome_agenciaagência

Perryridge U. 10000

� Atualizar para 10000 dólares o valor de fundos da agência Perryridge.

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

� 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.

� É 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.

Visual Open DB

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, suportea Unicode, agendamento de tarefas, sincronizaçãode dados, transferências, construção de consultas erelató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.