Лабораторная работа №3. Распределенные запросы

реклама
Лабораторная работа №3.
Распределенные запросы. Синонимы. Представления.
Цель работы. Изучить понятия и механизмы использования распределенных запросов, синонимов и
представлений в СУБД INFORMIX-Online.
Предварительные условия
1.
На сервере ol_serv3 существует база данных, созданная пользователем Informix
на предыдущей лабораторной работе.
2.
В этой базе данных существуют таблицы citizen, doctype, sells. При
необходимости создать.
Порядок выполнения работы
Задание 1. Выполнение запроса к таблицам, размещенным на разных серверах.
Структура распределенного запроса на выбор данных в общем случае выглядит следующим
образом:
SELECT [UNIQUE] <список выборки>
FROM
[OUTER] <имя_базы_данных_1>[@<имя_сервера_1>]:<имя_таблицы_1>
<имя_псевдонима_1>,
<имя_базы_данных_2>[@<имя_сервера_2>]:<имя_таблицы_2>
<имя_псевдонима_2>
[WHERE <условия>]
[GROUP BY <список атрибутов>]
[HAVING <условия>]
[ORDER BY <список атрибутов>]
[INTO TEMP <имя таблицы>]
1. В качестве примера используется следующий запрос:
select c.family, c.name, cfname, dt.doctype,
s.product_name, sum(summa) summa
from sells s, citizen c, outer(doctype dt)
where c.citizen_id=s.citizen_id
and dt.doctype_id=c.doctype_id
group by 1,2,3,4,5
2. Открыть соединение со вторым экземпляром сервера Informix с именем ol_serv3a (имя
сервера и параметры соединения указывает преподаватель):
a. запустить утилиту Informix dbaccess;
b. создать соединение с сервером Informix с помощью меню Connection/Connect.
Выбрать сервер с именем ol_serv3a. Имя пользователя и пароль указывает
преподаватель.
3. Создать на сервере ol_serv3a новую базу данных, для этого в меню Database/Create указать
имя создаваемой базы данных.
4. В созданной базе данных создать таблицу sells.
5. Модифицировать SQL-запрос таким образом, чтобы первая таблица выбиралась из базы
данных, созданной на сервере ol_serv3a, остальные – из базы данных, созданной на сервере
ol_serv3, использованной в предыдущих лабораторных работах. Выполнить запрос.
Месторасположение таблиц, к которым обращается запрос до и после модификации,
схематично представлено на рисунке ниже:
Сервер ol_serv3
Сервер ol_serv3a
<Таблица_1_old>
<Таблица_1_new>
<Таблица_2_old>
<Таблица_3_old>
Запрос до модификации
Запрос после модификации
Задание 2. Использование синонимов таблиц.
Синоним – это имя, которое можно использовать вместо другого имени. Понятие синонима
существует не в любой СУБД. Синонимы служат в основном для удобства обращения к таблицам
внешних баз данных.
Рекомендация. Синонимы также могут использоваться для скрытия местонахождения
таблиц.
Синоним создается командой:
CREATE SYNONYM <имя синонима> FOR <полное имя таблицы>
При выполнении указанной команды синоним помещается в таблицу системного каталога с
именем syssyntable в текущей базе данных. После этого он становится доступным любому
запросу в пределах этой базы данных.
Модифицировать запрос, созданный по заданию 5-1:
1. Создать в базе данных на сервере ol_serv3a синоним для второй запроса - таблицы citizen:
a. запустить утилиту Informix dbaccess;
b. создать соединение с сервером Informix с помощью меню
Выбрать сервер с именем ol_serv3a. Выбрать базу данных.
Connection/Connect.
c. создать синоним с помощью команды
CREATE SYNONYM <имя_синонима>
FOR <имя_базы_данных_1>@ol_serv3:<имя_таблицы_1>
где имя синонима формируется по следующему правилу:
<имя_синонима> = <имя_таблицы_1>_syn
а <имя_базы_данных_1> - это имя базы данных на сервере ol_serv3.
2. Модифицировать SQL-запрос таким образом, чтобы вместо второй таблицы использовался
созданный синоним. Выполнить запрос.
Задание 3. Использование представлений.
Представление, или «псевдотаблица» (VIEW) - это таблица, базирующаяся на других
существующих таблицах. Понятие представления существует практически в любой реляционной
СУБД. Представление формируется в результате синтеза данных либо только из таблиц базы данных,
либо из таблиц и других представлений.
Для создания представления необходимо выполнить следующий запрос:
CREATE VIEW <имя_представления>
[(перечень наименований колонок, разделенных запятой)]
AS <SQL-запрос на выборку данных из существующих таблиц>
В представленном ниже примере создается представление с именем Stuff для выборки списка
сотрудников с указанием ФИО, должности и отдела. Пример демонстрирует, что колонки
представления могут иметь имена, не совпадающие с именами соответствующих им базовых колонок.
CREATE VIEW Stuff (otdel, dolgnost, fam)
AS SELECT t2.department_num, t1.position, t1.second_name
FROM person t1, departments t2
WHERE t1.department_id = t2.department_id
Модифицировать запрос, созданный по заданию 5-1:
1. Создать в базе данных на сервере ol_serv3 представление, базирующееся на первой по порядку
таблице выбранного запроса (таблице с именем <имя_таблицы_1_old>) (см. шаг 4 задания 5-1):
a. запустить утилиту Informix dbaccess;
b. создать соединение с сервером Informix с помощью меню Connection/Connect. Выбрать
сервер с именем ol_serv3. Выбрать базу данных, в которой находится таблица с именем
<имя_таблицы_1_old>;
c. создать представление с помощью команды
CREATE VIEW <имя_представления>
AS SELECT * FROM <имя_таблицы_1_old>
, где имя представления формируется по следующему правилу:
<имя_представления> = <имя_таблицы_1_old>_view
Созданное представление должно содержать все столбцы исходной таблицы, а также дополнительный
столбец, вычисляемый по формуле:
(quantity * (price * 10/100)).
2. Модифицировать SQL-запрос таким образом, чтобы вместо первой таблицы использовалось
созданное представление. Выполнить запрос.
Скачать