
5.2.2. Язык qbe.
Работа на языке SQL проста, но требует знания языка. Для пользователей, совершенно не знакомых с программированием, запрос может осуществляться одним из следующих способов:
через меню и экранные формы;
с помощью языка Query By Example - QBE (запрос по примеру). Первый способ зависит от варианта разработки СУБД, второй способ,
предложенный М.М. Злудом и базирующийся на исчислении доменов, является универсальным и не требует знания программирования. В связи с этим рассмотрим подробнее идею построения языка.
С помощью этого способа на экран вызывается одна или несколько таблиц. В первом столбце каждой из них указывается имя таблицы (файла). В столбцах, под именами полей, могут быть указаны условия запроса. Переход от одной таблицы к другой осуществляется с помощью указания в соответствующих полях одинаковых подчеркнутых переменных, написанных большими буквами. Выводимые на печать поля указываются символом Р (print), точкой и подчеркнутой переменной(например, Р.А).
Приведем два примера запросов, базирующихся на примере 4.1.
Пример 5.2. Получить фамилии студентов 4 курса кафедры ИиУС, имеющих балл не менее 4 (рис. 5.3).
Пример 5.3. Получить фамилии студентов, руководителем которых является профессор кафедры ИиУС (рис. 5.4).
Могут быть использованы (в первом столбце запроса) агрегатные функции (SUM, AVG, MAX, MIN, CNT-счетчик). Возможно создавать виды (View).
QBE поддерживает справочник таблиц [4], процедуры обновления.
Реализация языка программирования QBE может иметь несколько вариантов. Один из них для СУБД Access рассмотрен в главе 17.
Контрольные вопросы
Что такое «отношение»?
Характеристики отношения.
Что такое арность отношения? размерность? ключ?
Для чего используются ключи?
Что такое составной ключ (суперключ)? родительский и внешний ключ?
Цель нормализации.
Сформулируйте назначение 1-5 нормальных форм.
Таблица 5.3
ПРОДАВЦЫ
пном |
ПИМЯ |
ГОРОД |
КОММ |
1001 1002 1004 1007 1003 |
Строков Кирюшин Аврорин Удалов Козлов |
Москва Пермь Москва Курск Орел |
.12 .13 .11 .15 .10 |
Таблица 5.5
ЗАКАЗЫ
ПРНОМ |
СУМПР |
ДАТПР |
ЗНОМ |
ПНОМ |
3001 |
18.69 |
10.03.1990 |
2008 |
1007 |
3003 |
767.19 |
10.03.1990 |
2001 |
1001 |
3002 |
1900.10 |
10.03.1990 |
2007 |
1004 |
3005 |
5160.46 |
10.03.1990 |
2003 |
1003 |
3006 |
1098.16 |
10.03.1990 |
2008 |
1007 |
3009 |
1713.23 |
10.04.1990 |
2002 |
1003 |
3007 |
75.75 |
10.04.1990 |
2004 |
1002 |
3008 |
4783.00 |
10.05.1990 |
2006 |
1001 |
ЗОЮ |
1309.95 |
10.06.1990 |
2004 |
1002 |
ЗОИ |
9891.88 |
10.06.1990 |
2006 |
1001 |
Таблица 5.4
ЗАКАЗЧИКИ
зном |
зимя |
ГОРОД |
РЕЙТИНГ |
пном |
2001 |
Иванов |
Москва |
100 |
1001 |
2002 |
Петров |
С.-Петербург |
300 |
1003 |
2003 |
Ковров |
Сочи |
200 |
1002 |
2004 |
Сидоров |
Кириши |
300 |
1003 |
2006 |
Крабов |
Русса |
100 |
1001 |
2008 |
Конкин |
Пермь |
300 |
1007 |
2007 |
Красин |
Луга |
100 |
1004 |
Рис. 5.2. Схема связей
Файл |
Номер студента |
Фамилия студента |
Балл |
Курс |
Группа |
Кафедра |
СТУД |
|
Р.А |
>=4 |
4 |
|
|
Рис. 5.3. Запрос фамилии по одной таблице
Файл |
Номер студента |
Фамилия студента |
Балл |
Курс |
Группа |
Кафедра |
СТУД |
X |
Р.А |
|
|
|
|
Файл |
Номер преподавателя |
Фамилия преподавателя |
Должность |
Кафедра |
Зарплата |
Надбавка |
ПРЕП |
Y |
|
проф |
ИиУС |
|
|
Файл |
Номер студента |
Номер преподавателя |
Часовая нагрузка |
СТПР |
X |
Y |
|
Рис. 5.4. Запрос фамилии по нескольким таблицам
Стр