Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
19
Добавлен:
26.05.2014
Размер:
250.88 Кб
Скачать

Интерфейс прикладных программ

Четвертый тип интерфейса доступа к данным — это доступ через прикладные программы, написанные на таких языках программирования, как COBOL, BASIC, Perl, Pascal и С++. Кроме того, некоторые прикладные программы пишутся на встроенных в используемые СУБД языках. Из таких языков программирования наибольшей известностью пользуется dBASE.

Есть два стиля интерфейса между прикладными программами и СУБД. Первый из них характеризуется тем, что прикладные программы вызывают подпрограммы из библиотеки функций, поставляемой в комплекте с СУБД. Например, чтобы считать строку из таблицы, прикладная программа вызывает функцию чтения СУБД и передает ей параметры, которые указывают нужную таблицу, требуемые столбцы, критерии выбора строки и т. п.

В некоторых случаях вместо вызовов функций используется объектно-ориентированный синтаксис. В приведенном ниже коде Access объектный указатель db устанавливается на открытую в данный момент базу данных, а объектный указатель rs ссылается на строки таблицы PATIENT;

С помощью последнего указателя можно обращаться к свойствам открытого набора записей и запускать его методы. Например, с помощью свойства rs.AllowDeletions можно определить, могут ли быть удалены записи из набора записей PATIENT. Метод MoveFirst перемещает курсор на первую строку.

Второй, более старый тип интерфейса используется иногда в СУБД, предназначенных для больших ЭВМ и серверов. Здесь производителем СУБД определен набор высокоуровневых команд доступа к данным. Эти команды, которые относятся к обработке базы данных и не являются частью какого-либо стандартного языка, встраиваются в код прикладной программы.

Прикладная программа со встроенными командами передается на предварительный компилятор, входящий в комплект СУБД. Он транслирует операторы доступа к данным в корректные вызовы функций и определяет области данных, которые будут совместно использоваться прикладными программами и СУБД. Предварительный компилятор также вставляет в программу код, поддерживающий доступ к этим областям данных. Обработанная таким образом программа передается на языковой компилятор. На рис. 7 показано взаимодействие программ в этом процессе.

Рис.7. Обработка программы со встроенными операторами SQL.

Помимо использования в обработке запросов, SQL применяется в качестве языка доступа к данным в прикладных программах. В этом режиме операторы SQL встраиваются в программы и транслируются в вызовы функций предварительным компилятором. Тем самым уменьшается количество времени и денег, требуемое на обучение персонала, поскольку один и тот же язык может использоваться как для запросов, так и для доступа к данным в прикладных программах. Необходимо, однако, преодолеть одно неудобство. Язык SQL ориентирован на преобразования: он принимает на входе одно или несколько отношений, манипулирует ими и выдает на выходе результирующее отношение. Таким образом, за один прием обрабатывается одно отношение. Почти все прикладные программы ориентированы на работу со строками (записями), то есть они считывают одну строку, обрабатывают ее, считывают следующую строку и т. д. Программы, следовательно, обрабатывают по одной строке за прием. В результате имеется несоответствие н базовой ориентации SQL и языков, на которых пишутся прикладные программы. Чтобы компенсировать это несоответствие, прикладные программы предполагают, что результаты выполнения SQL-операторов являются файлами. Чтобы проиллюстрировать это, предположим, что в прикладную программу встроен приведенный ниже SQL-оператор (тот, который мы уже рассматривали ранее):

Результатом этих операторов является таблица с двумя столбцами и N строками. Для обработки результатов этого запроса пишется прикладная программа, которая предполагает, что на выходе эти операторы выдают файл с N записями. Приложение открывает этот запрос, обрабатывает первую строку, следующую строку и так далее, пока не будет обработана последняя строка. Логика здесь та же, что и при обработке файла с последовательным доступом. Необходимо отметить, что есть некоторое несоответствие между базовой ориентацией SQL (отношения) и языком программирования (строка, или запись) и это несоответствие необходимо корректировать, когда прикладные программы обращаются к реляционной базе данных посредством SQL.