Домашнее задание (15 баллов):

1.  (4 балла)

Рассмотрим предметную область, связанную с записью студентов на курсы, которые они желают прослушать в текущем семестре. Студенты записываются на предметы, для которых определены название предмета, время начала занятий и аудитория.

Пусть есть БД с отношениями:

СТУДЕНТ (Номер студ. билета, Имя, Специальность, Курс)

Номер студ. билета

Имя

Специальность

Курс

100

Джонс

История

АС

150

Паркс

БухУчет

С2

200

Бейкер

Математика

АС

250

Гласс

История

С4

300

Джим

БухУчет

С4

350

Рассел

Математика

С3

400

Рай

БухУчет

С1

450

Мартин

История

С4

ЗАПИСЬ (Номер студ. Билета, Название предмета, Порядковый номер)

Номер студ. билета

Название предмета

Порядковый номер

100

BD445

1

150

BA200

1

200

BD445

2

200

CS250

1

300

CS150

1

400

BA200

2

400

BF410

1

400

CS250

2

450

BA200

3

ЗАНЯТИЯ (Название предмета, Время, Аудитория)

Название предмета

Время

Аудитория

BA200

9.00

SC 110

BD445

13.00

SC 213

BF410

9.00

SC213

CS150

11.00

EA304

CS250

11.00

EB210

Напишите на языке РЕЛЯЦИОННОЙ АЛГЕБРЫ следующие запросы:

a)  Вывести имена студентов, записавшихся на один предмет.

 

pИмяСтудента(СТУДЕНТЛичныйНомер=НомерСтудентаЗАПИСЬ)

b)  Вывести номера студентов, не записанных ни на один предмет.

pЛичныйНомер(СТУДЕНТ) – pНомерСтудента(ЗАПИСЬ)

НЕ нашли? Не то? Что вы ищете?

c)  Вывести имена студентов, записанных на предмет «BD445».

pИмяСтудента(sНазваниеПредмета=’BD445’(СТУДЕНТЛичныйНомер=НомерСтудентаЗАПИСЬ))

d)  Вывести названия предметов, на которые записан студент Паркс, и расписание занятий по эти предметам.

pЗАНЯТИЯ. НазваниеПредмета, Время(

(sИмя=’Паркс’(СТУДЕНТ) ЛичныйНомер=НомерСтудента ЗАПИСЬ) ЗАПИСЬ. НазваниеПредмета=

=ЗАНЯТИЯ. НазваниеПредмета ЗАНЯТИЯ)

(4 балла)

Пусть есть база данных с отношениями:

ПОСТАВЩИКИ (пос_номер, пос_имя, пос_статус, пос_город)

ДЕТАЛИ (дет_номер, дет_название, дет_цвет, дет_вес, дет_город)

РАБОТЫ (раб_номер, раб_наименование, раб_город)

ПОСТАВКИ (пос_номер, дет_номер, раб_номер, поставки_количество)

Напишите запросы на ЯЗЫКЕ РЕЛЯЦИОННОЙ АЛГЕБРЫ:

(a)  Выбрать все поставки, в которых количество деталей находится в диапазоне от 300 до 750 штук включительно. Указать имя поставщика, название детали и название работы.

pпос_имя, дет_название, раб_наименование(sпоставки_количество>=300 AND поставки_количество<=750

(((ПОСТАВКИ ПОСТАВЩИКИ) ДЕТАЛИ) РАБОТЫ))

(b)  Выбрать названия работ, детали для которых поставляются поставщиком с номером S1.

pраб_наименование(sпос_номер=’S1’(ПОСТАВКИ РАБОТЫ))

(c)  Выбрать номера работ, в состав которых входит как минимум столько деталей, сколько поставляется поставщиком с номером S1.

pраб_номер

((r раб_номер, количество1(gраб_номер, COUNT(поставки_количество) (ПОСТАВКИ)))

количество1>=количество2

(r пос_номер, количество2(s пос_номер=’S1’(gпос_номер, COUNT(поставки_количество)(ПОСТАВКИ))))

(d)  Определить номера деталей, поставляемых либо для лондонской работы, либо лондонским поставщиком.

d(pдет_номер(sраб_город=’Лондон’ OR пос_город=’Лондон’

(ПОСТАВКИ ПОСТАВЩИКИ) РАБОТЫ))))

(4 балла)

Пусть есть база данных с отношениями:

ПРОДАВЕЦ(Имя, зарплата)

Имя

Зарплата

Абель

120000

Бейкер

42000

Мерфи

36000

Зенит

12000

Кобад

34000

Джонс

118000

ЗАКАЗ(Номер, Имя покупателя, Имя продавца, Сумма)

Номер

ИмяПокупателя

ИмяПродавца

Сумма

100

Abernathy Construction

Зенит

560

200

Abernathy Construction

Джонс

1800

300

Manchester Lumber

Абель

480

400

Amalgamated Housing

Абель

2500

500

Abernathy Construction

Мерфи

6000

600

Tri-City Builders

Абель

700

700

Manchester Lumber

Джонс

100

ПОКУПАТЕЛЬ(Имя, Город, ТипПромышленности)

ИмяПокупателя

Город

ТипПромышленности

Abernathy Construction

Виллоу

B

Manchester Lumber

Манчестер

F

Tri-City Builders

Мемфис

B

Amalgamated Housing

Мемфис

B

Имена всех продавцов, для которых имеется строка ЗАКАЗ

pИмяПродавца(ЗАКАЗ)

Имена всех продавцов, которые не имеют строки ЗАКАЗ

ПРОДАВЕЦ Продавец. Имя=Заказ. ИмяПродавца ЗАКАЗ

Имена продавцов, имеющих заказ от фирмы Abernathy Construction

pИмяПродавца(sИмяПокупателя=’Abernathy Conctruction’ (ЗАКАЗ))

Названия городов, в которых проживают покупатели, сделавшие заказ у продавца по имени Джонс

 

pГород(sИмяПродавца=’Джонс’(ЗАКАЗ) ЗАКАЗ. ИмяПокупателя=ПОКУПАТЕЛЬ. ИмяПокупателя ПОКУПАТЕЛЬ)

(3 балла)

КОМПАНИЯ (НАЗВАНИЕ, ЧислоСотрудников, ОбъемПродаж)

НАЗВАНИЕ

ЧислоСотрудников

ОбъемПродаж

Nike

1000

Adidas

1200

Reebok

900

ПРОИЗВОДИТЕЛИ(НАЗВАНИЕ, КоличествоЛюдей, Доход)

НАЗВАНИЕ

КоличествоЛюдей

Доход

Adidas

1200

Puma

1000

Приведите пример объединения этих двух отношений

КОМПАНИЯ È ПРОИЗВОДИТЕЛИ

НАЗВАНИЕ

ЧислоСотрудников или КоличествоЛюдей

ОбъемПродаж или Доход

Nike

1000

Adidas

1200

Reebok

900

Puma

1000

Приведите пример пересечения этих двух отношений

КОМПАНИЯ Ç ПРОИЗВОДИТЕЛИ

НАЗВАНИЕ

ЧислоСотрудников или КоличествоЛюдей

ОбъемПродаж или Доход

Adidas

1200

Приведите пример разности этих двух отношений

КОМПАНИЯ – ПРОИЗВОДИТЕЛИ

НАЗВАНИЕ

ЧислоСотрудников или КоличествоЛюдей

ОбъемПродаж или Доход

Nike

1000

Reebok

900