Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информационные системы базы данных.DOC
Скачиваний:
38
Добавлен:
02.05.2014
Размер:
839.68 Кб
Скачать
      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

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