Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебник Макаровой

.pdf
Скачиваний:
90
Добавлен:
12.04.2015
Размер:
11.93 Mб
Скачать

 

Option Explicit

 

 

Обязательность объявления всех

 

Sub Msg_Priim()

 

переменных в модуле перед их

 

 

 

 

 

использованием

 

 

 

 

 

 

 

Объявление процедуры

 

 

Dim Response As Integer

Объявление переменной

 

 

Dim Msg As String

 

Строка сообщения

 

 

Dim Title As String

 

Кнопки

для

окна

 

Dim Help As String

 

(vbYesNoCancel

+

+

 

Dim Style As Integer

 

vbDefaultButtonH vbQuestion)

 

 

Dim Ctxt As Integer

 

Заголовок окна

 

 

Msg

=

"Вы

хотите

Имя файла-подсказки

 

 

продолжить ?"

 

 

Номер контекста внутри файла-

 

Style = 35

 

 

подсказки

 

 

 

Title = "Пример окна-

Присвоение

переменной

кода

 

сообщения"

 

 

ответа

 

 

 

Help = "DEMO.HLP"

 

Конец процедуры

 

 

Ctxt = 0

 

 

 

 

 

 

Response =

MsgBox(Msg;

 

 

 

 

Style; Title; Help; Ctxt)

 

 

 

 

 

End Sub

 

 

 

 

 

В результате выполнения программы будет

сформировано

следующее окно (рис. 19.24).

 

Рис. 19.24. Окно-сообщение с кнопками

Диалоговые окна для ввода данных

Функция InputBox() обеспечивает формирование окна для вывода строки сообщения и ожидания ввода строки символов или нажатия кнопки. Возвращает содержание текстового блока:

InputВох(<строка_сообщение> [,<заголовок_окна>][.<текст_по_умолчанию>] [,Хпоз][,Yпоз][, <файл-подсказки>, <контекст>])

где <текст_по_умолчанию>

- строка символов, выводимая в текстовом блоке (может быть пустой);

Хпоз, Yпоз

- позиция левого верхнего угла окна.

 

 

 

Пример 19.39. Формирование окна ввода

 

 

 

 

 

 

 

 

 

Текст программы

 

Комментарий

 

 

 

Option Explicit

 

Обязательность

объявления

 

 

Sub Msg_Inp()

 

всех переменных в модуле перед

 

 

 

 

их использованием

 

 

 

 

 

Объявление процедуры

 

 

Dim Response As String

 

Объявление переменной

 

 

Dim Message As String

 

Строка-сообщение

 

 

Dim Default As String

 

Заголовок окна

 

 

 

Dim Title As String

 

Текст по умолчанию

 

 

Dim Help As String

 

Присвоение

переменной

 

 

Dim Style As Integer

 

символьного типа

результата

 

 

Dim Ctxt As Integer

 

ввода

 

 

 

Message = "Введите

Фамилию,

 

 

601

Имя и Отчество студента"

 

Конец процедуры

Title = "Пример окна для ввода"

 

 

Default = "Смирнов Игорь

 

Александрович"

Response

=

 

InputBox(Message;

Title; Default;

 

100; 100)

 

 

 

End Sub

 

 

 

 

 

 

 

В результате выполнения программы будет выведено диалоговое окно (рис. 19.25).

Рис. 19.25. Диалоговое окно для ввода данных

Диалоговые окна пользователей

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

создания диалогового окна выполняется команда ВСТАВКА, Макрос с указанием типа вставляемого листа Диалог. Экран содержит основу для построения диалогового окна пользователя, а также панель инструментов Формы (рис. 19.26) для размещения и настройки (форматирования) элементов окна.

Рис. 19.26. Панель инструментов Формы

Таблица 19.8. Состав панели инструментов Формы

В диалоговом окне могут размещаться элементы произвольного вида, которые создают наборы

объектов. Доступ к конкретному элементу по имени набора и имени или порядковому номеру элемента внутри набора.

Метки не могут редактироваться пользователем в процессе работы с диалоговым окном, но могут изменяться программным путем с помощью свойства Caption объекта Labels().

602

Пример 19.40.

Sheets("<имя_листа_диалога>"). Labels ("<имя_объекта_метки>")

.Caption="cтpoкa текста"

Поле ввода является многострочным, содержит текст, который можно редактировать. Поле ввода входит в набор EditBoxes(), его можно редактировать и программным способом.

Пример 19.41.

Sheets("<имя_листа_диалога>").ЕditBoxes("<имя_окна>").Техt="строка текста"

Кроме того, этот тип элемента диалогового окна обладает следующими свойствами: MultyLine = True – в случае многострочности поля ввода;

InputType - ограничение типа данных, вводимых в окно (xlFormula, xlInteger, xllNumber, xlReference, xlText).

Рамка группы обеспечивает объединение нескольких элементов диалогового окна. Этот тип окна изображается в первую очередь, а затем внутри него размещаются другие элементы. Для задания строки текста в верхней строке рамки программным образом используется его свойство Caption.

Флажок обеспечивает аддитивный выбор, имеет свойство Value (принимает значение True, если выбран, или False в противном случае). Подобные переключатели образуют набор CheckBoxes().

Кнопка переключателя обеспечивает альтернативный выбор из списка взаимоисключающих опций. Такие кнопки входят в состав группы, если они различны по назначению, либо все кнопки в диалоговом окне образуют единую группу; выбор одной из кнопок внутри группы означает автоматический невыбор других. Подобные переключатели образуют набор OptionButtons(). Свойство Value принимает значение True, если выбрана кнопка, и False в противном случае.

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

ListFillRange ссылка на диапазон ячеек электронной таблицы, содержащей значения элементов списка;

List() - перечисление элементов списка непосредственно, замена старого списка новым целиком.

Раскрывающийся список во многом соответствует окну списков, но этот элемент входит в набор

DropDowns().

Поле ввода со списком объединяет окно списка и окно редактирования. При выборе элемента списка он автоматически появляется в окне редактирования, где возможна его корректировка. В принципе это два разных окна с различными свойствами.

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

Линейка прокрутки создает горизонтальную или вертикальную линейку прокрутки. Свойство Value содержит число, соответствующее положению ползунка, доступ к линейкам прокрутки через набор ScrollBars(). Свойства Min и Мах управляют диапазоном значений, доступны как из программы, так и через диалоговое окно форматирования элемента. Свойства LargeChange и SmallChange содержат величину изменения свойства Value.

Регулятор счетчика аналогичен линейке прокрутки, но отсутствует свойство LargeChange.

На рис. 19.27 представлено диалоговое окно пользователя для ввода данных об экзаменационных оценках.

Диалоговое окно пользователя включает следующие элементы: метки (Группа, Фамилия Имя Отчество, № зач.книжки и др.);

окно списка для выбора № группы список может быть сформирован в ячейках рабочего листа, при этом выделение элемента списка может быть одинарным, множественным или связным. Результат выбора можно записать в указанную ячейку рабочего листа; поля ввода (Фамилия Имя Отчество, № зач.книжки, Дата), для которых может быть указан тип

вводимой информации (текст, целое число, число, ссылка, формула), наличие многострочного текста и вертикальной линейки прокрутки;

603

раскрывающиеся списки (дисциплина, преподаватель, оценка), элементы которых могут быть записаны в ячейках рабочего листа, указывается максимально возможное число элементов; кнопки управления (<По умолчанию>, <Отмена>, <Закрыть>, <Справка>).

Рис. 19.27. Диалоговое окно пользователя

Для выделенного элемента диалогового окна с помощью команды контекстного меню Формат объекта вызывается окно «Форматирование объекта» для задания указанных характеристик.

19.3. РЕЛЯЦИОННЫЕ ЯЗЫКИ МАНИПУЛИРОВАНИЯ ДАННЫМИ

Реляционные модели Классификация реляционных языков

Основные характеристики языка SQL Организация запросов к базе данных на языке SQL

РЕЛЯЦИОННЫЕ МОДЕЛИ Основные понятия

Реляционные модели данных (РМД), в отличие от сетевых и иерархических (см. гл. 15), характеризуются простотой структуры данных, удобным для пользователя табличным представлением, а

также возможностью использования формального аппарата алгебры отношений и реляционного исчисления для обработки данных. Отношение, или реляционная таблица, имеет прямоугольную структуру ("плоский файл") (рис. 19.28):

Поле 1

Поле 2

...

Поле n

Запись 1

Запись 2

Запись m

Рис. 19.28. Структура данных реляционной таблицы

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

Условимся считать, что указанные термины имеют полноправное употребление и являются синонимами.

Схема реляционной таблицы образована именами полей, образующих структуру ее записи, например:

(Поле1, Поле2,.... Поле n)

604

Пример 19.42. Схема отношения:

СТУДЕНТ(Имя, Фамилия, Дата рождения, № зач.книжки,...).

В заполненном виде этой схеме соответствует таблица (рис. 19.29).

Студент

Имя

Фамилия

Дата рождения

№ зач. книжки

и т.д.

 

 

 

 

 

Петр

Иванов

12.12.80

123245

 

Марина

Петрова

1.1.80

233244

 

Рис. 19.29. Фрагмент реляционной таблицы

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

Для определенности изложения рассмотрим реляционную таблицу (рис. 19.29).

Таблица СТУДЕНТ содержит основные сведения о студентах учебного заведения. Каждое поле принимает определенное значение в строке таблицы, обладает определенным форматом, или типом данных: Фамилия строка символов, Дата рождения дата в формате ДД.ММ.ГГ.

Таблица имеет ключи поле или группа полей, значение которых необходимо для идентификации строк (записей). Ключ обладает свойством уникальности значения, то есть неповторяемости в экземплярах записей.

Если ключей несколько, один из них в объявлении схемы принимается за первичный (основной). Прочие ключи называются возможными. По первичному ключу выполняется автоматическое упорядочение записей (сортировка в порядке возрастания значений ключа).

Пример 19.43. Таблица СТУДЕНТ содержит записи; для идентификации отдельной записи указывается значение ключа. В данном случае ключей несколько:

№ зач. книжки; [Имя]+[Фамилия]+[Дата рождения].

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

Для эффективной реализации поиска и обработки данных создаются индексы, обеспечивающие формирование дополнительных индексных файлов (рис. 19.30).

Значение индекса

Адрес записи, содержащей значение индекса

и1

Адр2

и2

Адр10

и3

Адр1

и т.д.

 

Рис. 19.30. Индекс реляционной таблицы

При корректировке записей таблицы автоматически упорядочиваются индексы, изменяется местоположение каждого индекса согласно принятому условию (возрастание или убывание значений);

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

Количество индексов, имена (идентификаторы) индексов, соответствие индексов полям таблицы определяются при создании схемы таблицы. В свою очередь, индексы можно создавать и удалять, оставляя неизменным содержание записей реляционной таблицы. Следует помнить, что большое число индексов замедляет корректировку записей в реляционной таблице.

Работа с данными осуществляется на уровне:

605

отдельной таблицы; нескольких таблиц.

Типовые операции по обработке записей реляционной таблицы

Классический состав операций с реляционными таблицами определяет требования к реляционным языкам. Рассмотрим типовые операции по обработке записей в изолированной реляционной таблице.

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

Удалить удаляется определенная запись или группа записей, указывается имя таблицы и первичный ключ удаляемой записи единичное удаление либо формируется условие (задают значения вторичных ключей или отдельных полей записи), выполнение которого необходимо для удаления группы записей.

Обновить - изменяется значение полей указанной записи, задается имя таблицы, идентификатор записи (записей), подлежащей корректировке значений полей, новые значения изменяемых полей.

Выборка (селекция) выбор подмножества записей таблицы по условию, которое формулируется как логическое выражение. Результирующая таблица имеет ту же схему, что и исходная; эту операцию называют "горизонтальной" выборкой. Частным случаем выборки является пустая выборка, если исходные записи не соответствуют условию отбора.

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

Пример 19.44.

Ввод сведений о новом студенте:

ВКЛЮЧИТЬ в СТУДЕНТ [Игорь; Смирнов; 23.02.1980; 126543] Изменить номер зачетной книжки студента:

ОБНОВИТЬ в СТУДЕНТ: [Игорь; Смирнов; 23.02.1980] поле [

зач.книжки] = 345234

Удаление сведения о студенте:

УДАЛИТЬ в СТУДЕНТ: [Игорь; Смирнов; 23.02.1980] Удаление сведения о студентах, которые родились в 1979 г.:

УДАЛИТЬ в СТУДЕНТ: если [Дата рождения] >=01.01.1980 AND

[Дата рождения] < 01.01.1981

Отобрать студентов, у которых номера зачетных книжек находятся в интервале 100000 – 200000:

ВЫБОРКА в СТУДЕНТ: если [№ зач.книжки] >= 100000 AND [

зач.книжки] < 200000

Результат выборки

Имя

Фамилия

Дата рождения

№ зач.книжки

Марина

Петрова

1.1.80

233244

Сформировать список имен студентов на основании таблицы СТУДЕНТ

ПРОЕКЦИЯ СТУДЕНТ [Имя]:

СТУДЕНТ

Имя

Фамилия

Дата

 

 

рождения

зач.книжки

Петр

Иванов

12.12.80

123245

Марина

Петрова

1.1.80

233244

Марина

Смирнова

6.6.81

553435

Результат проекции

606

Типовые операции совместной обработки реляционных таблиц

Операции совместной обработки таблиц различны для таблиц с одинаковой или отличающейся схемой данных. Применительно к односхемным таблицам (одинаковый состав полей) выполняются следующие операции:

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

Пример 19.45. Имеются таблицы СТУДЕНТ (дневная форма обучения) и СТУДЕНТ-ЗАОЧНИК (заочная форма обучения) одной схемы. Они объединяются в одну таблицу СТУДЕНТЫ той же схемы (но без дублирования первичных ключей записей). Так, студентка ПЕТРОВА Марина присутствует в таблице СТУДЕНТЫ в единственном числе:

СТУДЕНТ

Имя

Фамилия

Дата

 

 

рождения

зач.книжки

Петр

Иванов

12.12.80

123245

Марина

Петрова

1.1.80

233244

СТУДЕНТ-ЗАОЧНИК

 

 

 

 

 

 

Имя

Фамилия

Дата

 

 

рождения

зач.книжки

Иван

Сидоров

12.1.80

123247

Марина

Петрова

1.1.80

233244

Итог объединения: СТУДЕНТЫ

 

 

 

 

 

 

Имя

Фамилия

Дата

 

 

рождения

зач.книжки

Петр

Иванов

12.12.80

123245

Марина

Петрова

1.1.80

233244

Иван

Сидоров

12.1.80

123247

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

Пример 19.46. Имеются таблицы СТУДЕНТ (дневная форма обучения) и СТУДЕНТ-ЗАОЧНИК (заочная форма обучения). При пересечении таблиц выявляются студенты, находящиеся в двух таблицах одновременно:

СТУДЕНТ

Имя

Фамилия

Дата

 

 

рождения

зач.книжки

Петр

Иванов

12.12.80

123245

Марина

Петрова

1.1.80

233244

СТУДЕНТ-ЗАОЧНИК

607

Имя

Фамилия

Дата

 

 

рождения

зач.книжки

Иван

Сидоров

12.1.80

123247

Марина

Петрова

1.1.80

233244

Итог пересечения:

 

 

 

 

 

 

Имя

Фамилия

Дата

 

 

рождения

зач.книжки

Марина

Петрова

1.1.80

233244

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

Пример 19.47. Имеются таблицы СТУДЕНТЫ (весь контингент студентов дневная и заочная формы обучения) и СТУДЕНТ-ЗАОЧНИК (заочная форма обучения). При вычитании таблиц выявляются студенты очной формы обучения:

СТУДЕНТЫ

Имя

Фамилия

Дата

 

 

рождения

зач.книжки

Петр

Иванов

12.12.80

123245

Марина

Петрова

1.1.80

233244

Иван

Сидоров

12.1.80

123247

СТУДЕНТ-ЗАОЧНИК

 

 

 

 

 

 

Имя

Фамилия

Дата

 

 

рождения

зач.книжки

Иван

Сидоров

12.1.80

123247

Марина

Петрова

1.1.80

233244

Итог вычитания таблиц: СТУДЕНТ

 

 

 

 

 

Имя

Фамилия

Дата

 

 

рождения

зач.книжки

Петр

Иванов

12.12.80

123245

Между записями реляционных таблиц устанавливаются отношения следующих типов:

1:1 – одно однозначное соответствие, когда записи в первой таблице соответствует запись в связанной с ней другой таблице (в обратном направлении также выполняется данное соответствие).

1:М одно многозначное соответствие, когда одной записи в первой таблице соответствует несколько записей во второй таблице, но каждая запись второй таблицы связана не более чем с одной записью первой таблицы.

Связь М:М не реализуется в реляционных языках непосредственно, для этого используются промежуточные таблицы-связки для замены типа соответствия на 1:М.

Пример 19.48. Если таблица СТУДЕНТ содержит первичный ключ [№ зач.книжки], а таблица ОЦЕНКА имеет схему ([№ зач.книжки], [Код дисциплины], [Результат]), то поле [№ зач.книжки] таблицы ОЦЕНКА выступает как внешний ключ для организации связи с таблицей СТУДЕНТ. Связь возможна, если тип данных и значение данного поля в обеих таблицах

608

будут одинаковыми, при этом эти поля могут иметь и произвольные названия. Так, в таблице ОЦЕНКА может использоваться поле [Код студента], к примеру.

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

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

Пример 19.49. Имеются таблицы СТУДЕНТ и ДИСЦИПЛИНА([Код дисциплины], [Наименование дисциплины]). Декартово произведение таблиц дает новую таблицу

УСПЕВАЕМОСТЬ со схемой ([Имя], [Фамилия], [Дата рождения], [№ зач.книжки], [Код дисциплины], [Наименование дисциплины]). Если какой-либо

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

СТУДЕНТ

Имя

 

 

Фамилия

 

Дата

 

 

 

 

 

 

 

 

 

 

 

 

рождения

 

 

зач.книжки

 

Петр

 

 

 

Иванов

12.12.80

 

 

 

123245

 

 

 

Марина

 

Петрова

1.1.80

 

 

 

233244

 

 

 

ДИСЦИПЛИНА

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Код

 

Наименование дисциплины

 

 

 

 

 

дисциплины

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

Высшая математика

 

 

 

 

 

 

 

2

 

 

 

 

Информатика

 

 

 

 

 

 

 

УСПЕВАЕМОСТЬ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Имя

 

Фамилия

Дата

 

№ эач.

 

 

 

Код

 

Наименование

 

 

 

 

 

рождения

 

книжки

 

дисциплины

 

дисциплины

Петр

 

Иванов

 

12.12.80

 

123245

 

1

 

 

 

 

Высшая

 

 

 

 

 

 

 

 

 

 

 

 

 

 

математика

Петр

 

Иванов

 

12.12.80

 

123245

 

2

 

 

 

 

Информатика

Марина

 

Петрова

 

1.1.80

 

233244

 

1

 

 

 

 

Высшая

 

 

 

 

 

 

 

 

 

 

 

 

 

 

математика

Марина

 

Петрова

 

1.1.80

 

233244

 

2

 

 

 

 

Информатика

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

Соединение две таблицы, имеющие общие поля внешние ключи, участвуют в создании новой таблицы, схема которой строится объединением всех полей исходных отношений, а результирующие записи формируются по определенным условиям:

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

Пример 19.50. Соединить таблицы СТУДЕНТЫ и ОЦЕНКА при условии, что включены все записи таблицы СТУДЕНТ и соответствующие им записи таблицы ОЦЕНКА. Объединение таблиц возможно по общему полю – [№ зач.книжки].

СТУДЕНТЫ

Имя

Фамилия

Дата рождения

№ зач. книжки

609

Петр

 

Иванов

12.12.80

 

123245

Марина

 

Петрова

1.1.80

 

233244

Иван

 

Сидоров

12.1.80

 

123247

ОЦЕНКА

 

 

 

 

 

 

 

 

 

 

 

 

 

Код

 

№ зач. книжки

 

Результат

 

 

дисциплины

 

 

 

 

 

 

1

 

123245

 

3

 

 

1

 

233244

 

4

 

 

2

 

233244

 

5

 

 

2

 

123245

 

5

 

 

РЕЗУЛЬТАТЫ

Имя

Фамилия

Дата

№ зач.

Код

№ зач.

Результат

 

 

рождения

книжки

дисциплины

книжки

 

Петр

Иванов

12.12.80

123245

1

123245

3

Петр

Иванов

12.12.80

123245

1

233244

4

Марина

Петрова

1.1.80

233244

2

233244

5

Марина

Петрова

1.1.80

233244

2

123245

5

Иван

Сидоров

12.1.80

123247

пустые поля, так как нет соответствующих

 

 

 

 

записей в таблице ОЦЕНКА

 

 

 

 

 

 

 

 

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

Пример 19.51. Результат деления таблицы УСПЕВАЕМОСТЬ на таблицу ОЦЕНКА дает таблицу СТУДЕНТ (см. предыдущий пример).

КЛАССИФИКАЦИЯ РЕЛЯЦИОННЫХ ЯЗЫКОВ

Типы реляционных языков

Реляционные языки обеспечивают типовые операции по обработке реляционных таблиц, позволяют формулировать логические условия, используемые в операциях выборки, проверку целостности (непротиворечивости) данных взаимосвязанных таблиц.

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

Выделяют следующие разновидности языков реляционной алгебры:

dBASe-подобные языки приближены к языкам структурного программирования, обеспечивают создание интерфейса пользователя и типовые операции обработки; графические реляционные языки, которые ориентированы на конечных пользователей; SQL-подобные языки запросов, реализованные в большинстве многопользовательских и распределенных систем управления базами данных.

dBASe-подобные реляционные языки

СУБД реляционного типа, такие, как dBASe, Paradox, FoxPro, Clipper, Rbase и др., используют языки манипулирования данными, обеспечивающие основные операции обработки реляционных баз данных, образующих класс dBASE-подобных (X-Base).

Рассмотрим данный класс языков на примере СУБД класса dBASe.

610