Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информационные системы базы данных.DOC
Скачиваний:
38
Добавлен:
02.05.2014
Размер:
839.68 Кб
Скачать
      1. Оператор "соединение по условию"

Функция: из двух РТ R1 и R2 формируется результирующая R оператором join (см. п.5.6), если выполняется заданное условие V: V = P1i G P2j, где G - арифметический оператор сравнения, выбираемый из множества: {=, >, <, >=, <=, <>}; P1i, P2j - типы полей в реляционных таблицах R1 и R2 соответственно. Для оператора G типа равенство оператор join называется эквисоединением.

Синтаксис: R = R1 join R2

P1i G P2j

Пример.

Соединить таблицы R1 и R2 по условию B=D:

R = R1 join R2.

B=D

R1:

A

B

C

R2:

D

E

Ответ: R:

A

B

C

D

E

a

b

c

a

u

g

e

z

e

k

d

u

p

e

k

g

e

z

5.8. Оператор "умножение" (product)

Функция: для двух РТ R1 и R2 соответственно арности К1 и К2 формируется результирующая R арности (К1 + К2), записи которой представляют собой конкатенацию каждой записи из таблицы R1 с каждой записью из таблицы R2. В таблице R имена полей формируются из двух частей, разделенных точкой. Префиксом имени поля принимается имя таблицы R1 или R2, в зависимости от того, из какой таблицы взято значение поля, а афиксом - соответствующие имена полей из этой таблицы.

Синтаксис: R = R1 product R2.

Пример.

R1:

A

B

R2:

C

D

Ответ: R:

R1.A

R1.B

R2.C

R2.D

b

4

c

4

b

4

c

4

d

7

d

R

b

4

d

R

d

7

c

4

d

7

d

R

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

      1. Запрос с оператором умножения

В БД "Разработчики ПП" Перечислить названия и годы создания ПП, разработанных до рождения Фатова Р.

      1. Алгоритм реализации

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

1) Выделим названия РТ, задействованных в реализации запроса. Это РТ: "Разработчики" (R1), "Разработанные ПП" (R3).

  1. Сформируем таблицу с годом рождения Фатова Р. Для этого сначала выделим его запись из таблицы R1, а затем выберем поле ГодРождения:

RT1 = sel <ФИОРазр-ка = 'Фатов Р.'> (R1)

RT1:

№Разр-ка

ФИОРазр-ка

ГодРожд-я

Стаж

R3

Фатов О.

1964

11

RT2 = proj ГодРожд-я(RT1)

RT2:

ГодРожд-я

1964

3) Из R3 выделим поля Назв-еПП и ГодСозд-я:

RT3 = proj Назв-еПП, ГодСозд-я(R3)

RT3:

Назв-еПП

ГодСозд-я

ПП1

1982

ПП2

1984

ПП1

1960

ПП3

1987

ПП4

1985

4) Для реализации сравнения по сути запроса выполним произведение таблиц RT2 и RT3:

RT4 = RT2 product RT3

RT4:

RT2.ГодРожд-я

RT3.Назв-еПП

RT3.ГодСозд-я

1964

ПП1

1982

1964

ПП2

1984

1964

ПП1

1960

1964

ПП3

1987

1964

ПП4

1985

5) Из RT4 выберем запись по критерию запроса:

RT5 = sel <RT3.ГодСозд-я < RT2.ГодРожд-я> (RT4)

RT5:

RT2.ГодРожд-я

RT3.Назв-еПП

RT3.ГодСозд-я

1964

ПП1

1960

6) Из RT5 выберем поля. необходимых и достаточных для ответа на запрос:

RT6 = proj RT3.Назв-е, RT3.ГодСозд-я(RT5)

RT6:

RT3.Назв-еПП

RT3.ГодСозд-я

ПП1

1960

Таким образом, алгоритм ответа на запрос можно записать в виде:

projRT3.Назв-еПП,RT3.ГодСозд-я(sel<RT3.ГодСозд-я<RT2.Год

6 5

Рожд-я>(projГодРожд-я(sel<ФИОРазр-ка='Фатов'>(R1)product

2 1 4

proj Назв-еПП,ГодСозд-я(R3))).

3

Примечание.

Цифры под операторами обозначают порядковые номера их выполнения.