Язык QBE (Query-by-example)
Язык с очень странным названием Query-By-Example "Запрос по образцу" (QBE) основан на исчислении предикатов на доменах. Разработан он Мойше Злуфом в 1974-1975 гг. в фирме IBM. Как вы помните, основополагающая работа Кодда по реляционной алгебре появилась в 1970 году. Так что исчисление предикатов на доменах было реализовано в языке достаточно быстро.
Странное слово в названии "по образцу" объясняется тем, в общем, случайным обстоятельствам, что, по мнению М. Злуфа, неквалифицированному пользователю удобнее выбирать в качестве имен переменных какое-нибудь значение этой переменной. Например, в уже известной вам таблице emp доменную переменную в столбце ename можно назвать SMITH или KING или еще каким-нибудь значением из домена ename.
Заметим, что подчеркиванием в исходной версии QBE выделялись имена переменных. И еще одно чисто техническое замечание. Как вы помните, в SQL мы договорились обозначать служебные слова языка большими буквами, а имена таблиц и столбцов малыми. Здесь мы это правило будем нарушать потому, что в демонстрируемых реализациях для всех имен может использоваться верхний регистр. В основополагающих статьях М. Злуфа все имена изображаются большими буквами. В приводимых для сравнения записях инструкций SQL сохранены соглашения "Язык SQL" .
9.1 Структура языка
Язык QBE, как и другие языки баз данных, включает в себя два подъязыка:
- ЯОД —средства определения структур данных и ограничений целостности;
- ЯМД — средства манипулирования данными и средства для написания запросов к базам данных. Язык управления данными отсутствует.
Изобразительные средства QBE крайне лаконичны, что делает его доступным пользователям, не имеющим квалификации программиста. Причина в том, что QBE содержит неразрывно связанные две компоненты — графическую, представляющую шаблоны таблиц и блок условия, и вербальную, содержащую минимальный набор легко запоминаемых команд.
Как всегда, все проверяем самостоятельно. С этой целью вам предоставляется специально разработанное инструментальное средство. В конце лекции приведен пример запроса QBE в Microsoft Access. Настоятельно рекомендую воспользоваться предоставляемыми на сайте книги материалами по Access и проработать в нем несколько примеров. Это даст вам правильное представление о возможностях реализации языка.
9.2 Основы QBE
Попадая в инструментальные средства, работающие в QBE, вы видите в старых (дографических) вариантах исходное изображение в виде пустого шаблона, в которое пользователь вводит имя таблицы (рисунок 9.1).
В графическом интерфейсе предлагаемого вам инструментального средства появляется пустой прямоугольник (рисунок 9.2).
Если таблица с указанным именем существует, появится полоса с двумя строками. В первой перечислены все столбцы таблицы, а вторая пустая. Пример шаблона для вызванной таблицы dept показан в таблице 9.1.
Нижние строки, пока пустые, предназначены для ввода команд, переменных и операций отношения. Что в них можно записать? Одну из ограниченного (это хорошо, что ограниченного) набора команд, а именно:
- I. (insert) — включить;
- D. (delete) — удалить;
- U. (update) — обновить;
- P. (print) — печатать.
Можно задавать константы, переменные и отношения.