З а д а н и е № 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. Приведите пример разности этих двух отношений