З а д а н и е № 3.

advertisement
З а д а н и е № 3.
Внимание: Курсовой проект представляется в электронном виде, домашнее задание представляется,
как обычно, в письменном виде.
По курсовому проекту:
Разработайте достаточно большое количество данных для вашей базы данных и загрузите эти данные
в базу, используя загрузчик Oracle (см. Методические материалы по Oracle, глава «Использование
загрузчика Oracle»). Для создания файла данных напишите программу на любом языке
программирования, но такую, чтобы созданный в результате ее работы файл данных имел формат,
допустимый в загрузчике Oracle. Программа должна генерировать данные случайным или
неслучайным (например, последовательным) образом так, чтобы эти данных представляли собой
строки таблиц. Можно воспользоваться какими-либо готовыми файлами данных, в этом случае
программа должна преобразовать эти файлы в формат, соответствующей структуре вашей базы
данных и понятный загрузчику Oracle. Естественно, что сгенерированные данные, особенно строки
символов, будут представлять собой «мусор». Но генерация большого количества данных позволит
вам экспериментировать с базой данных реального размера, а не с «игрушечной» базой. Желательно,
чтобы сгенерированные данные удовлетворяли следующим требованиям:


По крайней мере, два отношения имели бы порядка тысячи кортежей;
По крайней мере, одно отношение – порядка сотни кортежей.
Если семантика вашего приложения включает отношения, которые должны быть небольшими
(например, факультеты внутри университета), то, конечно, генерировать такие данные не надо, но
требования, описанные выше, для каких-либо отношений базы должны быть выполнены. При
написании программы генерации данных имейте в виду:

Даже, если для отношений ключевые атрибуты не объявлены, надо предусмотреть
генерацию не повторяющихся значений для атрибутов, которые будут составлять ключ.

Ваша база данных, конечно, содержит отношения, которые связаны друг с другом.
Например, у вас может быть отношение СТУДЕНТ, которое имеет атрибут
НОМЕР_ПРЕДМЕТА и которое связано по этому атрибуту с отношением ПРЕДМЕТ. При
генерации данных предусмотрите генерацию таких значений, по которым отношения могут
соединяться, иначе результаты многих запросов к базе могут оказаться пустыми. Один из
способов гарантировать возможность объединения данных состоит в том, чтобы сгенерировать
значения в одном отношении, затем использовать сгенерированные значения в другом
отношении. Например, вы могли бы генерировать сначала НОМЕР_ПРЕДМЕТА
(последовательно или случайно) для отношения ПРЕДМЕТ, а затем использовать эти значения,
чтобы занести НОМЕР_ПРЕДМЕТА в отношение СТУДЕНТ.
Представьте вашу программу(ы) генерации или преобразования данных, файлы данных для каждой
таблицы (пять строк или около этого), а также управляющие файлы и файлы с результатами работы
Загрузчика Oracle.
Домашнее задание (15 баллов):
1. (4 балла)
Рассмотрим предметную область, связанную с записью студентов на курсы, которые они
желают прослушать в текущем семестре. Студенты записываются на предметы, для которых
определены название предмета, время начала занятий и аудитория.
Пусть есть БД с отношениями:
СТУДЕНТ (Номер студ. билета, Имя, Специальность, Курс)
Номер студ. билета
Имя
Специальность
Курс
100
150
200
250
300
350
400
450
Джонс
Паркс
Бейкер
Гласс
Джим
Рассел
Рай
Мартин
История
БухУчет
Математика
История
БухУчет
Математика
БухУчет
История
АС
С2
АС
С4
С4
С3
С1
С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
BD445
13.00
BF410
9.00
CS150
11.00
CS250
11.00
Аудитория
SC 110
SC 213
SC213
EA304
EB210
Напишите на языке РЕЛЯЦИОННОЙ АЛГЕБРЫ следующие запросы:
a) Вывести имена студентов, записавшихся на один предмет.
b) Вывести номера студентов, не записанных ни на один предмет.
c) Вывести имена студентов, записанных на предмет «BD445».
d) Вывести названия предметов, на которые записан студент Паркс, и расписание занятий по эти
предметам.
2. (4 балла)
Пусть есть база данных с отношениями:
ПОСТАВЩИКИ (пос_номер, пос_имя, пос_статус, пос_город)
ДЕТАЛИ (дет_номер, дет_название, дет_цвет, дет_вес, дет_город)
РАБОТЫ (раб_номер, раб_наименование, раб_город)
ПОСТАВКИ (пос_номер, дет_номер, раб_номер, поставки_количество)
Напишите запросы на ЯЗЫКЕ РЕЛЯЦИОННОЙ АЛГЕБРЫ:
(a) Выбрать все поставки, в которых количество деталей находится в диапазоне от 300 до 750
штук включительно. Указать имя поставщика, название детали и название работы.
(b) Выбрать названия работ, детали для которых поставляются поставщиком с номером S1.
(c) Выбрать номера работ, в состав которых входит как минимум столько деталей, сколько
поставляется поставщиком с номером S1.
(d) Определить номера деталей, поставляемых либо для лондонской работы, либо лондонским
поставщиком.
3. (4 балла)
Пусть есть база данных с отношениями:
ПРОДАВЕЦ(Имя, зарплата)
Имя
Зарплата
Абель
120000
Бейкер
42000
Мерфи
36000
Зенит
12000
Кобад
34000
Джонс
118000
ЗАКАЗ(Номер, Имя покупателя, Имя продавца, Сумма)
Номер
ИмяПокупателя
ИмяПродавца
100
Abernathy Construction
Зенит
200
Abernathy Construction
Джонс
300
Manchester Lumber
Абель
400
Amalgamated Housing
Абель
500
Abernathy Construction
Мерфи
600
Tri-City Builders
Абель
700
Manchester Lumber
Джонс
ПОКУПАТЕЛЬ(Имя, Город, ТипПромышленности)
ИмяПокупателя
Город
Abernathy Construction
Виллоу
Manchester Lumber
Манчестер
Tri-City Builders
Мемфис
Amalgamated Housing
Мемфис
Сумма
560
1800
480
2500
6000
700
100
ТипПромышленности
B
F
B
B
Напишите запросы на ЯЗЫКЕ РЕЛЯЦИОННОЙ АЛГЕБРЫ:
1. Имена всех продавцов, для которых имеется строка ЗАКАЗ
2. Имена всех продавцов, которые не имеют строки ЗАКАЗ
3. Имена продавцов, имеющих заказ от фирмы Abernathy Construction
4. Названия городов, в которых проживают покупатели, сделавшие заказ у продавца по имени
Джонс
4. (3 балла)
КОМПАНИЯ (Название, ЧислоСотрудников, ОбъемПродаж)
ПРОИЗВОДИТЕЛИ(НАЗВАНИЕ, КоличествоЛюдей, Доход)
1. Приведите пример объединения этих двух отношений
2. Приведите пример пересечения этих двух отношений
3. Приведите пример разности этих двух отношений
Download