DBASe-подобные реляционные языки
СУБД реляционного типа, такие, как dBASe, Paradox, FoxPro, Clipper, Rbase и др., используют языки манипулирования данными, обеспечивающие основные операции обработки реляционных баз данных, образующих класс dBASE-подобных (X-Base).
Рассмотрим данный класс языков на примере СУБД класса dBASe.
С помощью полноэкранных команд, вызываемых через главное меню (Управляющий центр, режим Assist и т.п.), осуществляются создание и редактирование схемы реляционной таблицы (файла), ввод и редактирование данных. Для реализации тех же действий на программном уровне имеются соответствующие команды языка (CREATE, MODIFY, UPDATE, DELETE и др.).
Работа с реляционной таблицей (файлом базы данных) организуется в отдельной рабочем области, которой присваивается имя (алиасное имя или номер). После активизации файла к нему можно перейти, указав номер рабочей области. СУБД запоминает указатель на последней обрабатываемой записи (при первоначальном открытии файла текущий номер записи – 1). Позиционирование в файле на запись выполняется:
непосредственно, указанием номера записи (начало или конец файла, определенный номер записи);
при поиске записи по заданному логическому условию.
Язык обеспечивает выполнение всех рассмотренных типовых операций над отдельным файлом, а именно:
APPEND BLANK, BROWSE, CHANGE, EDIT, INSERT - добавление, редактирование записей (в режиме полноэкранного ввода);
DELETE – удаление записей (в программном режиме);
SEEK, FIND, LOCATE – поиск записи по условию;
COPY – копирование всех или части записей активного файла в новый файл;
CONTINUE - продолжение поиска записи по ранее сформулированному условию и т.п.
Границы области действия команды принимают значения:
RECORD n – определенная запись с номером n;
ALL – все записи файла;
NEXT n – следующие n записей, начиная с текущей;
REST – все записи, начиная с текущей и до конца файла.
Условия выполнения команд задаются с помощью формата ключевых слов FOR и WHILE.
Условие1действует в качестве фильтра (ВЫБОРКА) записей исходного файла: если записи соответствуют условию, они участвуют в операции. Условие формулируется применительно к полям записи, например:
Условие2позволяет прекратить операцию в случае его нарушения, например: WHILE [Дата рождения] < 1.1.80
Многие команды включают список полей, указываемых за ключевым словом FIELDS, на которые распространяется действие операции.
Пример 19.52.
DELETE границы FOR условие1 WHILE условие2
Операция логического удаления (пометки) записей активного файла, если они отвечают требованию условия1. Операция выполняется до тех пор, пока истинно условие2.
COPY TO нов_файл границы FIELDS список_полей FOR условие1 WHILE ycловие2
Записи активного файла, удовлетворяющие условию1, если истинно условие2, используются для формирования нового файла, схема которого задается как список_полей.
Таким образом, можно выполнить как горизонтальную, так и вертикальную выборку записей реляционной базы данных.
Совместная обработка файлов выполняется лишь для двух файлов: при этом файлы должны быть предварительно открыты в разных рабочих областях, иметь совпадающие внешние ключи.
Пример 19.53.
JOIN WITH псевдоним FOR условие FIELDS список_полей
Запись исходного файла объединяется с записью файла, открытого под именем псевдоним, если выполняется условие. Формируется новый файл, схема которого задается списком полей.
Для одновременной работы более чем с двумя файлами используются переменные, в которых сохраняются значения полей в качестве внешнего ключа связи.
Кроме того, данный класс реляционных языков реализует типовые конструкции языков структурного программирования:
циклы (DO WHILE .... END DO);
условные операторы (IF ... ELSE ... ENDIF);
альтернативные операторы (DO CASE ... OTHERWISE ...ENDCASE) и др.
Реляционные dBASE-подобные языки занимают промежуточное положение между языками манипулирования данными СУБД и языками программирования, обладают выраженной процедурностью обработки, когда явно указывается последовательность действий, приводящих к конечному результату.
Дата добавления: 2015-11-28; просмотров: 974;