Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК активный раздаточный материал СУБД.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
797.7 Кб
Скачать

Тема 2. Языковая среда реляционных субд.

Реляционные СУБД (РСУБД) используют реляционную модель данных и представляют данные табличном виде. Под БД в различных РСУБД понимается табличное хранение данных, но название “база данных” может объединять не только таблицы, но и производные этих таблиц (в виде отчетов, форм, виртуальных таблиц – представлений), формы запросов, программные модули и т.д.

Таблицу можно представить как двумерный массив или как набор записей одинаковой (для данной таблицы) структуры. Записи еще называют строками, рядами. Столбцы таблицы называются полями или атрибутами. Другими словами, таблица состоит из записей и полей. Число полей (столбцов) и записей (строк) для каждой таблицы теоретически неограниченно, хотя на практике ограничения, естественно, существуют.

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

Языки описания данных (ЯОД) – Data Definition Language (DDL), используются для логического описания данных и должны выполнять следующие функции: идентифицировать тип данных, присваивать уникальное имя каждому типу элемента данных, определять ключи, специфицировать порядок вхождения одних данных в другие, устанавливать отношения между данными. Среди них можно выделить языки описания схем, языки описания подсхем, языки описания структуры хранения, языки описания внешних данных.

Языки описания схем (SDL – Schema Definition Language) позволяют описывать логическую структуру данных со всеми взаимосвязями.

Языки описания подсхем устанавливают соответствия между логическим описанием данных в схеме и данными, требуемыми пользователем.

Языки описания структуры хранения данных описывают методы адресации и индексирования, способы размещения данных, способы доступа к ним, способы управления памятью и т. д.

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

Очень большое значение имеют языки общения с базой данных, которые описаны ниже.

Базовый язык – это язык программирования, использованный для создания СУБД.

Язык манипулирования данными (ЯМД) – Data Manipulation Language (DML), обеспечивает интерфейс между пользователем и СУБД. Если манипулирование данными встраивается в базовый язык, тогда базовый язык является языком программирования СУБД. В настоящее время используются так называемые автономные языки программирования, в которые встраиваются ЯМД, что облегчает процесс программирования.

Языки запросов – терминальные языки, которые обеспечивают взаимодействие с СУБД специалистов – непрограммистов (например, язык запросов SQL).

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

Язык программирования баз данных xBase относится к языкам четвертого поколения 4GL (4 Generation Language), и используется в реляционных настольных dBase-подобных СУБД. Родоначальником семейства dBase-подобных СУБД является СУБД dBase, предложенная фирмой Ashton-Tate в начале 80‑х годов. В это семейство, кроме СУБД dBase, входят системы управления базами данных, разработанные другими фирмами. Их объединяет входной dBase-подобный язык процедурного типа с некоторыми отличиями, известный как язык программирования xBase. Далее рассматриваются основные положения и команды языка программирования xBase, так как он используется в любых реализациях dBase-подобных СУБД, в том числе и в объектно-ориентированных версиях с визуальными средствами программирования. Далее в случае наличия нескольких версий одной и той же команды, используемой в различных СУБД, описывается версия команды, реализованная в СУБД Visual FoxPro под ОС Windows. Visual FoxPro является одной из наиболее pаспpостpаненных и высокоскоростных локальных систем управления БД для персональных компьютеров и характеризуется умеренными требованиями к вычислительным ресурсам, что позволяет использовать ее на персональных компьютерах любого класса. В настоящее время существует несколько модификаций этой системы, ориентированных на работу в широком диапазоне, как операционных систем (от MS DOS до Unix), так и аппаратных платформ (от IBM PC и их аналогов до мини-ЭВМ типа VAX).

Команды манипулирования данными языка программирования xBase предназначены для работы с отношениями – таблицами данных, состоящими из полей (столбцов) и записей (строк). Таблицы хранятся в файлах данных, имена которых имеют расширение .DBF. Каждое поле таблицы имеет свое имя, тип, длину (количество символов в поле для одной записи) и точность – количество дробных знаков после запятой (для числовых полей). В различных dBase-подобных СУБД набор типов полей различается, но некоторые типы полей применяются во всех СУБД и не только dBase-подобных. К ним относятся следующие типы полей: символьный – Character (значение поля – любые символы, в том числе и буквы любого алфавита), числовой – Numeric или Float (значение поля – любые числа), дата – Date (значение поля – дата с указанием дня, месяца и года), логический – Logical (значение поля -.F.(False-ложь) или .T.(True-истина)), поле типа «примечание» - Memo.

Команды языка xBase можно использовать в двух режимах. Интерактивный режим работы – это работа в диалоговом режиме в интерактивной среде СУБД: команда – результат команды. Программный режим работы представляет собой выполнение в среде СУБД программ, написанных на языке программирования xBase. Все СУБД, использующие xBase, поддерживают встроенный язык управления данными SQL. Поэтому в программы xBase можно включать команды SQL.

В командах языка программирования xBase, так же как и в алгоритмических языках, могут использоваться прописные и строчные буквы алфавита и знак подчеркивания; десятичные цифры от 0 до 9; специальные символы, такие как +, -, *, **, ?, ! и т. д.

Предусмотрено выполнение четырех типов операций над выражениями:

  • математические операции – сложение (+), вычитание (‑), умножение (*), деление (/), возведение в степень ( ** или ^ );

  • логические операции - HЕ (.NOT.), И (.AND.), ИЛИ (.OR.);

  • символьные опеpации - сцепление двух и более стpок символов (+), сцепление символьных строк с переносом замыкающих пробелов (‑), сравнение символьных строк ($),сравнение на полное тождество символьных строк(==);

  • операции отношения – меньше ( < ), больше ( > ), pавно ( = ), не pавно (<> или !=), меньше или pавно ( <= ), больше или pавно ( >= ).

Логические операции и операции отношения дают логический результат .F. или .T. Они используются в командах языка программирования xBase для организации различных циклов, сравнений и переходов по условию. Приоритет выполнения логических операций следующий: NOT, .AND, OR.

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

Символьные константы в языке программирования xBase выделяются апострофами, кавычками или квадратными скобками. Константы типа даты заключаются в фигурные скобки, логические константы выделяются точками.

Большинство команд языка программирования xBase, обрабатывающих записи таблицы данных, в общем виде имеют следующую структуру (необязательные параметры команды выделены квадратными скобками):

ГЛАГОЛ [<диапазон>][<список_выpажений>] [FOR/WHILE<условие>],

где ГЛАГОЛ – команда; <диапазон> - область действия глагола; <cписок_выpажений> -фоpмулы, временные переменные памяти, имена полей таблицы данных, опеpатоpы, константы и т.д.; <условие> - условия команд FOR или WHILE. Допустимо сокращение составляющих команд до первых четырех символов. Квадpатные скобки отмечают необязательные паpаметpы. Символом «/» разделены взаимоисключающие параметры (см. FOR/ WHILE). FOR <условие> указывает, что действие команды распространяется внутри диапазона только на записи, удовлетворяющие заданному условию. WHILE <условие> означает выполнение команды до тех пор, пока указанное условие истинно.

Для указания диапазона действия глагола используются следующие служебные слова: ALL (область действия – вся БД); RECORD <n> (область действия – n-я запись в файле таблицы данных); NEXT <z> (область действия – следующие z записей, начиная с текущей записи); REST (область действия – все записи, начиная с текущей записи и до конца БД).

Структура файла таблицы данных создается командой:

CREATE <имя_файла>

Введенное <имя_файла> - это имя таблицы данных (требования к именам файлов таблиц БД определяются операционной системой). Если имя таблицы данных не задано, то система выведет запрос на ввод имени создаваемой таблицы данных. Затем будет дана возможность задать параметры каждого поля таблицы данных: имя, тип, длина, количество дробных десятичных знаков и другие параметры поля.

При необходимости изменения структуры активной таблицы данных используется команда:

MODIFY STRUCTURE

При ее выполнении на экран выводится структура таблицы данных и предоставляется возможность ее изменения. Команда позволяет: добавлять новые поля, удалять поля, изменять имя поля, изменять тип поля, изменять размер поля. Чтобы вставить новое поле, курсор устанавливается на начало поля, перед которым делается вставка. При нажатии кнопки INSERT открывается новое поле, после чего производится определение его параметров. Для удаления поля курсор устанавливается на начало имени этого поля и нажимается кнопка DELETE. Запоминание новой структуры таблицы данных осуществляется при нажатии кнопки OK.

Команда ввода записей в конец таблицы БД имеет формат:

APPEND [BLANK]

Эта команда позволяет вводить новые записи в конец файла для таблицы данных, находящейся в активном режиме. При использовании необязательного параметра BLANK автоматически добавляется одна пустая запись в конец таблицы данных.

После ввода команды APPEND на экране появятся имена полей. Информация, являющаяся значением того или иного поля, вводится напротив имени этого поля. Даты (по умолчанию) вводятся в американском формате mm/dd/yy, где mm-порядковый номер месяца; dd-порядковый номер дня в месяце; yy-две последние цифры года. Для заполнения поля типа Memo необходимо перейти из основного файла (*.DBF) в дополнительный файл (*.FPT). Для этого курсор устанавливается напротив имени поля типа Memo и одновременно нажимаются клавиши CTRL и HOME или выполняется двойной щелчок мыши. Происходит переход в дополнительный файл (*.FPT) и открывается свободное окно, где и набирается информация. Для возврата в основной файл (*.DBF) используется одновременное нажатие клавиш CTRL и W (^ W) или клавиша ESCAPE.

Можно вводить новые записи после текущей записи БД. Для этого используется команда вставки записей:

INSERT [ BEFORE ] [BLANK]

Работа с экраном при этом осуществляется аналогично работе с командой APPEND. Необязательный параметр BEFORE дает возможность вставить новую запись перед текущей записью. При использовании необязательного параметра BLANK в таблице данных автоматически добавляется одна пустая запись (после или перед текущей записью).

Для просмотра, редактирования, удаления имеющихся записей и добавления новых записей в активную таблицу данных используется команда BROWSE. Диапазоном действия команды по умолчанию является ALL (все), если отсутствуют необязательные параметры: <диапазон>, FOR <условие>. В качестве диапазона не используется параметр NEXT <z>.

Сокращенный формат команды представлен ниже:

BROWSE <диапазон> [ FIELDS <список_полей> ] [ FOR <условие>] [REST]

[FREEZE <имя_поля>] [LOCK <число_полей>] [NOAPPEND ] [NODELETE][NOEDIT|

NOMODIFY] [TITLE <текст_заголовка>]

При работе этой команды на экран в специальное окно просмотра выводятся имена полей и записи активной таблицы данных в виде строк. В окне можно перемещаться по вертикали и по горизонтали, просматривая, редактируя, добавляя или удаляя записи. Mожно пользоваться специальным меню команды BROWSE.

Параметр FIELDS <список_полей> позволяет выводить только те поля таблицы данных, которые указаны в списке полей, и в том порядке, в котором они приведены в списке. В список можно включать поля из других связанных таблиц. Перед именем такого поля нужно ставить псевдоним соответствующей таблицы с точкой. Если предложение FIELDS опущено, будут отображены все поля таблицы в том порядке, в каком они расположены в рамках табличной структуры.

В списке полей можно указать любую комбинацию полей или вычисляемых полей.

FOR <условие> задает условие отображения в окне просмотра: отображаются только те записи, для которых значение указанного условия – «истина».

Параметр REST предотвращает перемещение указателя записи из текущей позиции к началу таблицы, когда окно просмотра открывается с предложением FOR. В противном случае команда BROWSE по умолчанию устанавливает указатель записи в начало таблицы.

Параметр FREEZE <имя_поля> разрешает вносить изменения только в одно поле в окне просмотра. Это поле задается своим именем. Остальные поля только отображаются, но не могут редактироваться.

Параметр LOCK <число_полей> используется для указания количества полей в левой части экрана, которые не будут перемещаться при смещении экрана по полям БД. Эти поля останутся на экране для просмотра или редактирования.

Параметр NOAPPEND не позволяет вводить в таблицу новые записи. Параметр NOEDIT или NOMODIFY запрещает внесение изменений в записи таблицы, используется для предоставления пользователю возможности просмотра записей, предотвращая возможные повреждения БД.

Параметр NODELETE запрещает помечать записи на удаление в окне просмотра. По умолчанию, чтобы пометить запись на удаление, нужно нажать клавиши Ctrl+T, или выбрать команду Toggle Delete в меню Table в Visual FoxPro или в меню Browse в ранних версиях FoxPro или щелкнуть самый левый столбец удаляемой записи.

Параметр TITLE заменяет принимаемые по умолчанию имя или псевдоним таблицы, появляющиеся в строке заголовка окна просмотра, на <текст_заголовка>. Иначе в строке заголовка появится имя или псевдоним просматриваемой таблицы.

Команды редактирования CHANGE и EDIT имеют аналогичный формат. Отличие состоит в том, что записи представляются не в виде таблицы, а построчно – на экран поочередно выводится по одной записи. Ее представление на экране аналогично представлению записи при работе с командами APPEND и INSERT.

Удаление записей из активной таблицы данных обычно осуществляется в два этапа. Сначала удаляемые записи должны быть помечены с помощью команды DELETE. Формат команды:

DELETE [<диапазон> ] [ FOR/WHILE <условие>]

Если параметр <диапазон> отсутствует, диапазоном по умолчанию является только текущая запись. Если отсутствует параметр FOR <условие>, то все записи в пределах указанного диапазона помечаются для удаления. В противном случае помечаются для удаления записи, для которых выполняется заданное условие. Если в составе команды имеется параметр WHILE <условие>, пометка записей на удаление производится до тех пор, пока выражение <условие> истинно.

Помеченные записи физически удаляются командой PACK. Формат команды:

PACK

Команда PACK окончательно удаляет все записи в активном файле таблицы данных, помеченные для удаления командой DELETE. Пометка записей для удаления может быть отменена при помощи команды RECALL. Формат команды:

RECALL [ <диапазон> ] [ FOR/WHILE <условие>]

Параметры команды RECALL имеют аналогичное значение, что и для команды DELETE. Любая команда DELETE может быть отменена последующей командой RECALL. Команда RECALL может быть использована для отмены удаления, если по отношению к записям файла таблицы не были использованы команды PACK или ZAP.

Команда ZAP удаляет все записи из активной таблицы данных без предварительной пометки на удаление, оставляя структуру таблицу.

Формат команды:

ZAP

Команда ZAP аналогична использованию последовательно команд DELETE ALL и PACK. Записи, удаленные из активной таблицы данных командой ZAP, не могут быть восстановлены командой RECALL.

Основная литература: 1[12:13, 92:105], 4[5:14].