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

В БД " Разработчики ПП" (рис.5.1) указать названия ПП, созданных в период с 1970 по 1984 гг. включительно, ФИО и стаж разработчиков.

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

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

  2. Из К3 выберем записи по условию в запросе:

RT1 = sel <(ГодСозд-я >= 1970) and (ГодСозд-я <= 1985)> (R3).

RT1:

№ПП

НазваниеПП

№Разр-ка

ГодСозд-я

P1

ПП1

R5

1982

P2

ПП2

R2

1984

3) Соединим RT1 и R1 по общему полю №Разр-ка:

RT2 = RT1 join R1.

Таблица RT2 будет иметь вид:

RT2:

№ПП

Назв-еПП

№Разр-ка

ГСозд-я

ФИОРазр-ка

ГРожд-я

Стаж

P1

ПП1

R5

1982

Крылов Г.

1964

10

P2

ПП2

R2

1984

Крылов Г.

1962

17

4) Выбрать из RT2 Название ПП, ФИО и стаж разработчиков:

R = proj НазваниеПП, ФИОРазр-ка, Стаж (RT2)

Результирующая таблица R как ответ на запрос примет вид:

R:

НазваниеПП

ФИОРазр-ка

Стаж

ПП1

Крылов Г.

10

ПП2

Крылов Г.

17

Общий алгоритм реализации запроса можно представить в виде:

proj Назв-еПП, ФИОРазр-ка, Стаж (sel <ГодСозд-я >= 1970 and ГодСозд-я <= 1984> (Разработанные ПП) join Разработчики).

      1. Запрос с соединением по нескольким полям

В БД "Разработчики ПП" (Рис. 0 .24) указать Названия ПП, № и ФИО разработчиков, выступающих и как руководители ВТК, и как программисты в них.

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

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

  2. Для выявления разработчиков ПП, выступающих одновременно и как руководители ВТК, объединим таблицы R3 и R4. Здесь общим полем является №Разр-ка - №Разр-каРук-ляВТК:

RT1 = R3 join R4:

RT1:

№ПП

Назв-еПП

№Разр-ка-Рук-ляВТК

ГодСзд-я

№ВТК

Назв-еВТК

№Ком-ты

P1

ПП1

R5

1982

B1

Луч

12

P2

ПП2

R2

1984

B3

Взлет

12

P4

ПП3

R2

1987

B3

Взлет

12

P5

ПП4

R3

1985

B2

Стрела

18

  1. Для экономии памяти ПК и увеличения быстродействия выберем из RT1 лишь участвующие в запросе поля:

RT2 = proj Назв-еПП, №Разр-ка-Рук-ляВТК, №ВТК(RT1):

RT2:

НазваниеПП

№Рразр-ка-Рук-ляВТК

№ВТК

ПП1

R5

B1

ПП2

R2

B3

ПП3

R2

B3

ПП4

R3

B2

  1. Для определения Разработчиков-Руководителей ВТК, являющихся одновременно и программистами, соединим RT2 и R2 по одному общему полю: №Разр-каРук-ляВТК - №Разр-ка-Прогр-та:

RT3 = RT2 join R2:

RT3:

Назв-еПП

№Разр-ка-Рук-ля ВТК

№ВТК

№Прог-та

Язык-Прогр-я

Категория-Прогр-та

ПП1

R5

B1

A3

Pas

3

ПП2

R2

B3

A2

C

2

ПП2

R2

B3

A5

Pas

2

ПП3

R2

B3

A2

C

2

ПП3

R2

B3

A5

Pas

2

5) Выберем из RT3 лишь участвующие в запросе поля:

RT4=projНазв-еПП,№Разр-ка-Рук-ляВТК,№ВТК,№Пр-та(RT3):

RT4:

НазваниеПП

№Разр-ка-Рук-ляВТК

№ВТК

№Прогр-та

ПП1

R5

B1

A3

ПП2

R2

B3

A2

ПП2

R2

B3

A5

ПП3

R2

B3

A2

ПП3

R2

B3

A5

6) Для определения разработчиков-руководителей ВТК, являющихся программистами именно в своих ВТК, сделаем соединение таблиц RT4 и R5 по двум полям: №ВТК и №Прогр-та:

RT5 = RT4 join R5:

RT5:

НазваниеПП

№Разр-ка-Рук-ляВТК

№ВТК

№Прогр-та

ПП1

R5

B1

A3

ПП2

R2

B3

A5

ПП3

R2

B3

A5

7) Выберем из RT5 участвующие в запросе поля:

RT6 = proj Назв-еПП, №Разр-ка-Рук-ляВТК (RT5):

RT6:

НазваниеПП

№Разр-ка-Рук-ляВТК

ПП1

R5

ПП2

R2

ПП3

R2

8) Для полного ответа на запрос объединим таблицы RT6 и R1 с последующим выделением полей, указанных в запросе:

RT7 = RT6 join R1:

RT7:

Назв-еПП

№Разр-ка

№Разр-ка-Рук-ля ВТК

ФИО

Разр-ка

Год-

Рождения

Стаж

ПП1

R5

R5

Крылов Г.

1964

10

ПП2

R2

R2

Крылов Г.

1962

17

ПП3

R2

R2

Крылов Г.

1962

17

RT8 = proj Назв-еПП, №Разр-ка, ФИОРазр-ка (RT7):

RT8:

НазваниеПП

№Разр-ка

ФИОРазр-ка

ПП1

R5

Крылов Г.

ПП2

R2

Крылов Г.

ПП3

R2

Крылов Г.

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

proj Назв-еПП,№Разр-ка-Рук-ляВТК(proj Назв-еПП,

6 4

№Разр-ка-Рук-ляВТК,№ВТК,№Прогр-та(proj Назв-еПП,

2

№Разр-ка-Рук-ляВТК(Разр-ыеПП joinВТК) join Прогр-ты)

1 3

join СоставыВТК) join Разр-ки

5 7

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