Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Никулина Лариса.doc
Скачиваний:
6
Добавлен:
19.04.2013
Размер:
72.7 Кб
Скачать

5. Создание отношений для данной системы и организация запросов с помощью операций реляционной алгебры и реляционного исчисления. Пусть имеются три отношения:

I “Сведения о сотрудниках фирмы”

ФИО( fio)

Должность(prof)

Стаж(exp)

Адрес(add)

Дата поступления на работы

ЖУКОВ В.В.

ДИРЕКТОР

10

ГАГАРИНСКИЙ ПР.9-12

19.07.89

СИДОРОВ П.П

БУХГАЛТЕР

15

РЯЗАНСКИЙ ПР.12-56

03.11.89

ПЕТРОВ В.А

ВОДИТЕЛЬ

5

ЗЕЛЕНОГРАДСКАЯ УЛ.4-5

07.07.89

ОРЛОВ Р.Е

ВОДИТЕЛЬ

10

ХОРОШЕВСКОЕ Ш.12-177

16.08.90

РОМАНОВ Е.Е

ВОДИТЕЛЬ

8

УЛ.АКАДЕМИКА ВАРГИ112-45

21.07.89

БАГРОВ И.Т.

ВОДИТЕЛЬ

19

МИЧУРИНСКИЙ ПР.78-12

25.04.91

II “Сведения о заработной плате водителей за предыдущий месяц”

ФИО (fio)

ЗАРПЛАТА(sal)

ПЕТРОВ В.А.

1050000

ОРЛОВ Р.Е.

945000

РОМАНОВ Е.Е

800000

БАГРОВ И.Т.

1275000

III “Сведения об ответственности за машины фирмы”

НОМЕР МАШИНЫ(ncar)

МАРШРУТ(line)

ФИО ВОДИТЕЛЯ(fio)

5647мма

2

РОМАНОВ Е.Е

4426мма

1

ОРЛОВ Р.Е.

5723мма

3

ПЕТРОВ В.А

8967мма

5

БАГРОВ И.Т.

Далее, к построенным отношениям можно построить несколько запросов с помощью операций реляционной алгебры и реляционного исчисления:

1) Найти всех водителей 1 маршрута, у которых заработная плата превышает 900000 руб.

Решение: {V[fio]/(V1 ( ОТ)((V2(ЗП)((V1(line)={“1”})((V2(sal)>1000.000)}

В результате выведется фамилия (из введенных): Орлов

В терминах реляционной алгебры данный запрос описывается так:

ФИО (sel Маршрут=“1” (ОТ) join Зарплата>900.000 (ЗП))

2) Напечатать фамилии сотрудников фирмы, не являющихся водителями, стаж которых превышает 5 лет:

Решение: {V[fio]/(V1 ( СФ)((V1(prof)<>{“водитель”})((V1(exp)>{“5”})}

В терминах реляционной алгебры: proj ФИО( ФИО (СФ) difference ФИО(ЗП) sel Стаж>5 (СФ))

3) Найти водителей, которые являются сотрудниками фирмы с 1989 г.

Решение: {V[fio]/(V1(СФ)((V1(prof)={“водитель”})((V1(date)>=“01.01.89”)}

в терминах реляционной алгебры: proj ФИО (sel Должность=“водитель” and Дата>=“01.01.89” (СФ))

4) Найти адрес водителя, работающего на машине с номером “4426мма”

Решение: {V[addr]/(V1(CФ)((V2(ОТ)((V1(fio)=V2(fio))((V2(ncar)={“4426мма”})}

в терминах реляционной алгебры: proj Адрес (sel Номер машины=“4426мма” join СФ)

5) Вывести номера машин 5-го маршрута, которыми управляют водители со стажем не менее 3-х лет.

Решение: {V[ncar]/(V1(СФ)((V2(ОТ)((V2(line)=“5”)((V1(exp)>=3)((V1(fio)=V2(fio)}

в терминах реляционной алгебры: proj Номер машины(sel Cтаж>=“3” (CФ) join sel Номер маршрута=“5” (OT)).