Origem: Wikipédia, a enciclopédia livre.
Query-by-Example (QBE) é uma linguagem de consulta e também um antigo SGDB que incluia essa linguagem. A linguagem QBE foi criada por Moshé M. Zloof da IBM na década de 70, em paralelo com a criação do SQL. Como diz seu nome (pergunta "por exemplos"), o usuário apenas descreverá as informações desejadas, dando exemplos do que deseja encontrar, mas não fornecerá um procedimento específico para obter essas informações. A QBE foi baseada na lógica relacional.
Características [editar]
A QBE possui dois recursos característico:
- Possui uma sintexe bidimensional, ou seja, as consultas se parecem com tabelas. Uma consulta em linguagem unidimensional, como o SQL pode ser escrita em uma linha, porém, uma bidimensional exigirá duas dimensões (uma tabela)
- As consultas QBE são expressas "por exemplos". Em vez de fornecer um procedimento para obter a resposta, o usuário fornece um exemplo do que é desejado e o sistema generalizará esse exemplo para calcular a resposta.
Existem dois tipos de QBE: a versão original baseada em texto e uma versão gráfica, desenvolvida mais tarde e que foi aceita pelo Microsoft Access
Estrutura da linguagem [editar]
Expressamos consultas na QBE por tabelas de estruturas . Em vez de encher a tela com todas as estruturas, o usuário seleciona as estruturas necessárias para uma determinada consulta e preenche as estruturas com linhas de exemplo.
Usaremos a seguinte tabela de informação para as consultas
Universidade
| Aluno |
Materia |
Nota |
Situação |
| Alberto |
Calculo |
10 |
Aprovado |
| Lucas |
Banco de Dados |
4 |
Reprovado |
| Andréia |
Programação |
7 |
Aprovado |
| Lucas |
Calculo |
4.9 |
Reprovado |
| Mariana |
Física |
7 |
Aprovado |
| Fernando |
Calculo |
5 |
Aprovado |
|
Professores
| Professor |
Materia Administrada |
Nível de Graduação |
| Marcelo |
Banco de Dados |
Doutorado |
| Emília |
Calculo |
Pós-Graduação |
| Célia |
Matemática |
Mestrado |
| Emília |
Física |
Pós-Graduação |
|
Consultas em uma relação [editar]
Vamos começar realizando uma pesquisa de todos os estudantes que cursaram "Cálculo"
| Aluno |
Materia |
Nota |
Situação |
| P. |
Calculo |
|
|
Essa consulta diz ao sistema para procurar as tuplas que tem "Cálculo" como valor para Matéria e exibir apenas a coluna aluno. Como exemplo, poderíamos fazer a consulta de mostrar todos os alunos, retirando apenas a restrição, teríamos:
| Aluno |
Materia |
Nota |
Situação |
| P. |
|
|
|
A QBE permite consultas com comparações aritméticas em vez de comparações de igualdade. Por exemplo, na consulta: Encontre todas as matérias que os alunos tiraram nota maior que 5.
| Aluno |
Materia |
Nota |
Situação |
|
P. |
|
> 5 |
Podemos encontrar relações a partir de negação. Na consulta: Encontre todos os alunos que não cursaram Física, teremos:
| Aluno |
Materia |
Nota |
Situação |
| P. |
not Física |
|
|
A principal finalidade das variáveis da QBE é obrigar valores de certas tuplas a terem o mesmo valor de certos atributos. Vamos considerar a consulta: Encontre o Nome dos alunos com a mesma nota de Mariana.
| Aluno |
Materia |
Nota |
Situação |
| P._X |
|
_Y |
|
| Mariana |
|
_Y |
|
Nesta consulta, _X e _Y são variáveis (assim como todas que começarem com "_", contudo está não é uma restrição do programa, apenas uma notação nossa para organização). Ela retornará todas as relações que tenham _Y igual a nota de mariana, que neste caso é 7. Perceba que a segunda linha, é apenas para encontrar o valor dessa nota e atribuí-lo a _Y.
Consulta em várias relações [editar]
A QBE permite que as consultas abranjam várias relações diferentes. As conexões entre as várias relações são obtidas por meio de variáveis que obrigam certas tuplas a terem o mesmo valor em certos atributos. Vamos então realizar a consulta: Encontrar todos os alunos que tiveram aula com o professor Marcelo:
| Aluno |
Materia |
Nota |
Situação |
| P._X |
_Y |
|
|
| Professor |
Materia Administrada |
Nível de Graduação |
| Marcelo |
_Y |
|
Caixa de Condição [editar]
Às vezes, é inconveniente ou impossível expressar todas as restrições nas variáveis de domínio dentro das tabelas de estrutura. Por causa disso, a QBE inclui o recurso caixa de condição, que permite expressar restrições gerais sobre qualquer uma das variáveis do domínio.
Por exemplo, se quisermos encontrar todos os alunos com notas maiores que 4 e menores que 8, teremos:
| Aluno |
Materia |
Nota |
Situação |
| P. |
|
_x |
|
Vários Resultados [editar]
Até agora, todas as relações que demostramos tem em comum apenas um único resultado, mas podemos expandir de forma a criar novas tabelas com todos os resultados que queremos mostrar. Se quisermos pesquisar: o nome do aluno, sua situação e o nome do professor, temos a seguinte busca:
| Aluno |
Materia |
Nota |
Situação |
| _W |
_X |
|
_y |
| Professor |
Materia Administrada |
Nível de Graduação |
| _Z |
_X |
|
| Resultado |
Aluno |
Situação |
Professor |
| P. |
_W |
_Y |
_Z |
Ligações externas [editar]