Базы данных. Концепция баз данных, реляционная модель данных, языки SQL и XML. Токмаков Г.П. - 25 стр.

UptoLike

Составители: 

25
1.2.4. М
ЕТАДАННЫЕ, УНИФИЦИРОВАННЫЕ ПРОЦЕДУРЫ И ЯЗЫК SQL
Следует отметить, что возможность разработки языка SQL появилась благо-
даря наличию в СУБД модели данных, представляющей данные о таблицах ба-
зы данных, их столбцах и строках, о взаимосвязях между таблицами и т. д. в
фиксированных таблицах системного каталога.
Когда мы используем термин
«язык», мы предполагаем некую программу,
обеспечивающую интерпретацию текста запроса, и выполнение инструкций
данного языка, содержащихся в тексте запроса. Если взять в качестве примера
последний запрос (
запрос3), то для ее интерпретации и выполнения необходимо
выполнить следующие шаги:
определить процедуру, которая должна выполнить данный запрос на языке
SQL. В нашем случае это будет процедура, которую условно назовем SELECT;
в качестве входного атрибута этой процедуры по ключевому слову FROM оп-
ределяется имя таблицы
СЛУЖАЩИЕ;
в качестве критерия выборки по ключевому слову WHERE определяется ус-
ловие
СЛЖ_СТАТ="НЕТ";
в качестве выходных данных процедуры после ключевого слова SELECT оп-
ределяются поля
СЛЖ_ИМЯ, СЛЖ_НОМЕР выбранных записей;
после определения всех необходимых данных процедура запускается и по-
сле выполнения всех необходимых операций на физическом уровне пользователь
получает результат в виде списка значений для полей
СЛЖ_ИМЯ, СЛЖ_НОМЕР.
К процедурам языка предъявляются весьма жесткие требования, так как
они должны обеспечить выполнение произвольного синтаксически и семанти-
чески правильно сформулированного запроса.
Чтобы описать принципы разработки таких процедур поставим перед собой
более простую задачу: разработать высокоуровневый язык для работы со спи-
сками. С помощью этого языка мы должны иметь возможность создавать
и
уничтожать списки, а также вставлять в них записи, модифицировать и удалять
введенные записи.
Сразу напрашивается решение:
разработать процедуры для создания и уничтожения списков, а также для
вставки, модификации и удаления записей в списках;
определить спецификации этих процедур в качестве языковых конструкций
для работы со списками. Например, эта спецификация могла бы иметь вид:
CREATELIST(«Name:СТУДЕНТЫ»,«Fields:ФИО,Группа»);
DROPLIST(«Name:СТУДЕНТЫ»);
INSERTСписок:СТУДЕНТЫ»,«ФИО:ИвановИ.И.»,«Группа:ЭВМд‐31»);
UPDATEСписок:СТУДЕНТЫ»,«ФИО:ПетровП.П.»);
SELECT(ГруппаFROM«СТУДЕНТЫ»,WHERE«ФИО:ПетровП.П.»);
DELETE(FROM«СТУДЕНТЫ»,WHERE«ФИО=ПетровП.П.»).
Эта, на первый взгляд, несложная задача не так просто решается. Если бы
эта программа была ориентирована на работу с одним списком, разработка
процедур, выполняющих операции с этим списком не представляла бы никакой
сложности. Но в нашем случае мы сталкиваемся тем обстоятельством, что эти