- •Введение
- •Описание связей между информационными объектами
- •Понятие "формы ввода" как инструмента просмотра таблиц и заполнения их данными
- •Использование подчиненных форм
- •Использование формы
- •Порядок выполнения лабораторной работы
- •Содержание отчета о работе
- •Контрольные вопросы
- •Создание и использование qbe-запросов
- •Понятие запроса к базе данных
- •Создание и использование sql-запросов
- •Запросы действия, параметрические и перекрестные запросы
- •Порядок выполнения лабораторной работы
- •Содержание отчета о работе
- •Контрольные вопросы
- •Операции реляционной алгебры
- •Создание отчетов
- •Группировка и сортировка данных в отчете
- •Форматирование и печать отчета
- •Порядок выполнения лабораторной работы
- •Содержание отчета о работе
- •Контрольные вопросы
Операции реляционной алгебры
Поиск данных в реляционных БД осуществляется с помощью реляционных языков запросов. В любой реляционной СУБД языки запросов полностью или частично реализуют набор операций реляционной алгебры. Всего этот набор включает восемь операций. Результатом выполнения любой операции с таблицами является таблица, а сами операции делятся на унарные (с одной таблицей) и бинарные (с двумя таблицами).
Рассмотрим примеры использования трех наиболее часто встречающихся операций с таблицами: соединение, выбор и проекция.
Операция соединения. Эта бинарная операция позволяет соединить две таблицы и получить третью. Если две таблицы имеют атрибуты, домены которых совпадают, то данные таблицы могут быть соединены по этому атрибуту соединения. Результатом соединения является расширенная таблица, каждая запись которой образуется путем соединения двух записей. Из исходных таблиц берутся те записи, которые содержат одно и то же значение атрибута соединения. Например, реляционные таблицы ВАГОН и ПОЕЗД имеют одинаковый атрибут НОМЕР ВАГОНА. Рассмотренная операция является в действительности "соединением при условии равенства", т.е. соединением при условии равенства значение атрибутов соединения. Существуют аналогичные операции соединения для любого другого оператора сравнения: , , , , . На языке реляционной алгебры рассмотренная операция соединения записывается в виде формулы
ВАГОН [НОМЕР ВАГОНА = НОМЕР ВАГОНА] в составе ПОЕЗДа.
Внутри формулы в квадратных скобках записываются имена характеристик из соединяемых таблиц и оператор сравнения.
Операция выбора. Это унарная операция, в результате которой в таблице остается подмножество записей, удовлетворяющих определенному условию, а остальные записи удаляются. Если, например, применить операцию выбора к таблице ПОЕЗД и задать условие КОД СТАНЦИИ = ‘38265’, то в результате получим перечень поездов находящихся в данный момент на станции с кодом ‘38265’. Эту операцию выбора можно представить в виде формулы
ПОЕЗД [КОД СТАНЦИИ = ‘38265’],
где ‘38265’ представляет собой константу. Константа задает код конкретной станции.
Операция проекции. Проекция представляет собой унарную операцию для построения "вертикального" подмножества таблицы; таблица сужается – в ней остаются только указанные характеристики.
Если, например, применить операцию проекции по атрибутам НОМЕР ПОЕЗДА и ДАТА для таблицы ПРИБЫТИЕ, то в результате получим список номеров поезда с соответствующими датами прибытия – все остальные характеристики операции ПРИБЫТИЕ будут опущены.
На языке реляционной алгебры эта операция проекции записывается следующей формулой
ПРИБЫТИЕ [НОМЕР ПОЕЗДА, ДАТА],
где в квадратных скобках через запятую перечисляются атрибуты, по которым осуществляется проекция.
Применяя только три рассмотренных операции, можно представить довольно сложные информационные запросы. Например, зададим запрос "получить номера поездов, имеющих в составе вагоны назначением на грузовой фронт 19" в виде формул реляционной алгебры:
А = ВАГОН [КОД ГРУЗОВОГО ФРОНТА = ‘19’] – операция выбора;
В = ПОЕЗД [НОМЕР ВАГОНА = НОМЕР ВАГОНА] А – операция соединения по атрибуту НОМЕР ВАГОНА таблицы А и таблицы "ПОЕЗД";
С = ПОЕЗД [НОМЕР = НОМЕР] В – операция соединения;
D = С [НОМЕР] – операция проекции.
Здесь представлен запрос в виде четырех последовательных действий. Однако формулы реляционной алгебры могут быть вложенными и вложенность может достигать любой величины:
D = (ПОЕЗД [НОМЕР = НОМЕР] (ПОЕЗД [НОМЕР ВАГОНА = НОМЕР ВАГОНА] (ВАГОН [КОД ГР. ФРОНТА = ‘19’]))) [НОМЕР ПОЕЗДА].
