Домашнее задание (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 пос_город=’Лондон’
![]()
![]()
![]()
(ПОСТАВКИ ПОСТАВЩИКИ) РАБОТЫ))))
Пусть есть база данных с отношениями:
ПРОДАВЕЦ(Имя, зарплата)
Имя | Зарплата |
Абель | 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ИмяПродавца(ЗАКАЗ)
Имена всех продавцов, которые не имеют строки ЗАКАЗ![]()
ПРОДАВЕЦ Продавец. Имя=Заказ. ИмяПродавца ЗАКАЗ
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 |


