Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Элементы языка QBE

 

Язык QBE (Query By Example – запрос по образцу) был разработан в компании IBM в 1975 году. Это язык реляционного исчисления с переменными на доменах, рассчитанный на работу в интерактивном режиме. Пользователь заполняет ячейки предъявляемых ему таблиц, поэтому говорят, что язык имеет двумерный синтаксис. В отличие от SQL нет общепризнанных стандартов языка QBE, но элементы этого языка достаточно широко распространены (например, СУБД Access, Paradox, Visual FoxPro).

Опишем возможности языка QBE на примерах, рассматривая отношения по поставщикам S (S#, Sn, Scity, Status), изделиям P (P#, Pn, Pcity, W) и поставкам SP (S#, P#, Q). Здесь S# - номер поставщика, Sn – его имя, Scity – место проживания, Status – статус поставщика, выраженный целым числом, P# - номер изделия, Pn – его наименование, Pcity – место хранения, W – вес, Q – объем поставки.

1. Получить имена и номера поставщиков из Москвы.

На экране по требованию пользователя появляется пустая таблица S, которая после заполнения полей приобретает вид

 

S S# Sn Scity Status
  P. X P. Y Москва  

 

Будем считать, что символы ‘P.’ задают режим выдачи на экран, а подчеркиванием выделяются пременные (в отличие от констант). Введенный запрос можно сформулировать так: “Выдать значения полей S# и Sn таблицы S для тех записей, в которых поле Scity принимает значение ‘Москва’”.

Какое значение имеют переменные? Почему нельзя было ограничиться просто знаком вопроса? Мы узнаем это чуть позже.

2. Выдать номера поставщиков, имеющих поставки объемом не менее 100 единиц.

 

SP S# P# Q
  P. X   >=100

 

Заметим, что номера поставщиков в результате повторяться не будут, то есть режим, подобный DISTINCT в SQL, действует автоматически.

3. Выдать номера поставщиков, имеющих поставки изделия P1 либо изделия P2.

 

SP S# P# Q
  P. X P1  
  P. Y P2  

 

4. Выдать номера поставщиков, имеющих поставки как изделия P1, так и изделия P2.

 

SP S# P# Q
  P. X P1  
  P. X P2  

 

В этом примере впервые показан смысл переменных языка QBE. Одна и та же пременная в разных строках обозначает одно и то же значение поля. Таким образом, переменные задают связи между записями как в пределах одной таблицы, так и в нескольких таблицах.

5. Получить имена поставщиков из Казани статуса 5, имеющих поставки изделия P1 объемом не менее 100 единиц.

Для реализации этого запроса последовательно заполняются две таблицы

 

SP S# P# Q
  X P1 >=100

 

S S# Sn Scity Status
  X P. Y Казань  

 

Снова переменная X указывает, что в таблицах SP и S имеется в виду один и тот же поставщик.

6. Получить номера и имена поставщиков-немосквичей, имеющих поставки изделий весом более 100 единиц.

Последовательно заполняются три таблицы

P P# Pn Pcity W
  X1     >100
SP S# P# Q
  Y1 X1  
               

 

S S# Sn Scity Status
  P. Y1 P. Y2 ¹Москва  

 

Здесь таблицы P и SP связываются переменной X1, а SP и S – переменной Y1.

7. Выдать имена поставщиков, не имеющих поставки изделия P1.

Запрос

SP S# P# Q
  X ¹P1  

 

S S# Sn Scity Status
  X P. Y    

 

неправилен. Если некоторый поставщик поставляет как изделие P1, так и другие изделия, то он попадет в результаты запроса именно благодаря изделию, отличному от P1.

Для подобных запросов в языке QBE предусмотрено отрицание, относящееся ко всей записи, а не отдельному полю. Будем обозначать его символом ‘¬’. Наличие этого символа в первой колонке таблицы некоторой строки на экране обозначает, что подобной записи не должно быть. В рассматриваемом примере к нужному результату приводит запрос

 

SP S# P# Q
¬ X P1  

 

S S# Sn Scity Status
  X P. Y    

 

8. Выдать номера изделий, поставляемых более чем одним поставщиком.

 

SP S# P# Q
  X P. Y  
  ¹ X Y  

 

9. Получить имена и номера поставщиков самого высокого статуса.

 

S S# Sn Scity Status
  P. X P. Y   SS
¬       > SS

 

Перечислим некоторые дополнительные средства языка QBE.

1. Условия можно помещать отдельно в блоке условий.

2. По требованию пользователя можно создавать новые таблицы.

3. Имеются различные агрегатные функции, позволяющие задавать запросы с группировкой.

4. Наряду с запросами на чтение существуют запросы на включение, удаление, обновление записей.

5. Имеется набор встроенных функций для работы с данными иерархической структуры.

6. Предусмотрены операции со словарем БД, то есть со справочником, содержащим подробные сведения о БД.

В целом язык QBE обладает средствами, сравнимыми с возможностями SQL. Часто элементы языка QBE используются для удобного формирования SQL-запросов в режиме диалога.

 

<== предыдущая лекция | следующая лекция ==>
Динамический SQL | Общая стратегия оптимизации определяется на втором и третьем этапах. Рассмотрим их подробнее
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 570; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.016 сек.